Android中Gallery显示手机中的图片
16lz
2022-08-01
在网上找了好久似乎都没有关于这方面的(可能是自己的信息量太小吧),于是自己来填补这个漏洞吧。
常见的方法莫过于自己定义一个数组,用以存储图片的引用,如:
private Integer[] pictures = { R.drawable.icon1, R.drawable.icon2, R.drawable.icon3, R.drawable.icon4, R.drawable.icon5 };然后再将此数组加入到适配器中。但是想要显示自己的图片,这怎么行。。下面来介绍我自己的方法
首先,你得知道你图片的存储路径,将这些你将要显示的图片的路径存放于一个arraylist里面
ArrayList<String> PictureNameList = new ArrayList<String>(); PicureNameList.add("路径"); ... ...然后获取gallery实例,
Gallery g = (Gallery) findViewById(R.id.mygallery);相应的mygallery.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <!-- 建立一個 Gallery --> <Gallery android:id="@+id/mygallery" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_x="12px" android:layout_y="106px" /> </LinearLayout>
并加入到适配器里面
g.setAdapter(new ImageAdapter(this,PictureNameList)); /*设定一个itemclickListener事件*/ g.setOnItemClickListener(new OnItemClickListener() { public void onItemClick(AdapterView<?> parent, View v, int position, long id) { //这里就根据你自己的需要去做一些功能的展示 } });下面就来看这个ImageAdaper实现
public class ImageAdapter extends BaseAdapter { /*声明变量*/ int mGalleryItemBackground; private Context mContext; private List<String> lis; /*ImageAdapter的构造符*/ public ImageAdapter(Context c,List<String> li) { mContext = c; lis=li; /* 使用res/values/attrs.xml中的<declare-styleable>定义 * 的Gallery属性.*/ TypedArray a = obtainStyledAttributes(R.styleable.Gallery); /*取得Gallery属性的Index id*/ mGalleryItemBackground = a.getResourceId( R.styleable.Gallery_android_galleryItemBackground, 0); /*让对象的styleable属性能够反复使用*/ a.recycle(); } /*几定要重写的方法getCount,传回图片数目*/ public int getCount() { return lis.size(); } /*一定要重写的方法getItem,传回position*/ public Object getItem(int position) { return position; } /*一定要重写的方法getItemId,传并position*/ public long getItemId(int position) { return position; } /*几定要重写的方法getView,传并几View对象*/ public View getView(int position, View convertView, ViewGroup parent) { /*产生ImageView对象*/ ImageView i = new ImageView(mContext); /*设定图片给imageView对象*/ Bitmap bm = BitmapFactory.decodeFile(lis. get(position).toString()); i.setImageBitmap(bm); /*重新设定图片的宽高*/ i.setScaleType(ImageView.ScaleType.FIT_XY); /*重新设定Layout的宽高*/ i.setLayoutParams(new Gallery.LayoutParams(200, 120)); /*设定Gallery背景图*/ i.setBackgroundResource(mGalleryItemBackground); /*传回imageView对象*/ return i; } } }
其中只需要关注最后一个getView函数,这个函数的关键就在于其中两行
Bitmap bm = BitmapFactory.decodeFile(lis. get(position).toString()); i.setImageBitmap(bm);获取图片并显示图片。ok!
记得在values文件下里面添加一个叫做attrs.xml的文件
<?xml version="1.0" encoding="utf-8"?><resources> <declare-styleable name="Gallery"> <attr name="android:galleryItemBackground" /> </declare-styleable> </resources>最后还要记得在配置文件中添加权限
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
更多相关文章
- 浅谈Java中Collections.sort对List排序的两种方法
- Python list sort方法的具体使用
- python list.sort()根据多个关键字排序的方法实现
- android上一些方法的区别和用法的注意事项
- android实现字体闪烁动画的方法
- Android(安卓)matrix 控制图片的旋转、缩放、移动
- Android中dispatchDraw分析
- Android四大基本组件介绍与生命周期
- Android(安卓)MediaPlayer 常用方法介绍