摘要:在网上找了很长时间后,似乎没有关于这方面的信息,所以请自己填补空白。常见的方法是定义一个数组来存储图片的引用,例如:1PrivateIntegrate[]pictures={2R.drawable.icon1,3R.drawable.icon2,4R.drawable.icon3,5R.drawable/icon4,6R.drawable.icon57};然后将此数组添加到适配器中。但如果你想展示你的照片,你怎么能做到呢。。让我介绍一下我自己的方法。首先,您需要知道图片的存储路径。将这些图片的路径存储在数组列表中,1ArrayList<String>PictureNameList=newArrayList<String˃();2PicureNameList.add;3…4…然后获取画廊实例1Galleryg=findViewById;相应的mygallery.xml01˂?
在网上找了好久似乎都没有关于这方面的(可能是自己的信息量太小吧),于是自己来填补这个漏洞吧。
常见的方法莫过于自己定义一个数组,用以存储图片的引用,如:
1 | private Integer[] pictures = { |
然后再将此数组加入到适配器中。但是想要显示自己的图片,这怎么行。。下面来介绍我自己的方法
首先,你得知道你图片的存储路径,将这些你将要显示的图片的路径存放于一个arraylist里面
1 | ArrayList<String> PictureNameList = new ArrayList<String>(); |
2 | PicureNameList.add( "路径" ); |
然后获取gallery实例,
1 | Gallery g = (Gallery) findViewById(R.id.mygallery); |
相应的mygallery.xml
01 | <?xml version= "1.0" encoding= "utf-8" ?> |
02 | <LinearLayout xmlns:android= "http://schemas.android.com/apk/res/android" |
03 | android:layout_width= "fill_parent" |
04 | android:layout_height= "fill_parent" |
05 | android:orientation= "vertical" |
10 | android:id= "@+id/mygallery" |
11 | android:layout_width= "fill_parent" |
12 | android:layout_height= "wrap_content" |
13 | android:layout_x= "12px" |
14 | android:layout_y= "106px" |
并加入到适配器里面
01 | g.setAdapter( new ImageAdapter( this ,PictureNameList)); |
03 | /*设定一个itemclickListener事件*/ |
04 | g.setOnItemClickListener( new OnItemClickListener() |
06 | public void onItemClick(AdapterView<?> parent, |
07 | View v, int position, long id) |
10 | //这里就根据你自己的需要去做一些功能的展示 |
下面就来看这个ImageAdaper实现
01 | public class ImageAdapter extends BaseAdapter |
04 | int mGalleryItemBackground; |
05 | private Context mContext; |
06 | private List<String> lis; |
09 | public ImageAdapter(Context c,List<String> li) |
13 | /* 使用res/values/attrs.xml中的<declare-styleable>定义 |
15 | TypedArray a = obtainStyledAttributes(R.styleable.Gallery); |
16 | /*取得Gallery属性的Index id*/ |
17 | mGalleryItemBackground = a.getResourceId( |
18 | R.styleable.Gallery_android_galleryItemBackground, 0); |
19 | /*让对象的styleable属性能够反复使用*/ |
23 | /*几定要重写的方法getCount,传回图片数目*/ |
29 | /*一定要重写的方法getItem,传回position*/ |
30 | public Object getItem(int position) |
35 | /*一定要重写的方法getItemId,传并position*/ |
36 | public long getItemId(int position) |
41 | /*几定要重写的方法getView,传并几View对象*/ |
42 | public View getView(int position, View convertView, |
46 | ImageView i = new ImageView(mContext); |
48 | Bitmap bm = BitmapFactory.decodeFile(lis. |
49 | get(position).toString()); |
52 | i.setScaleType(ImageView.ScaleType.FIT_XY); |
54 | i.setLayoutParams(new Gallery.LayoutParams(200, 120)); |
56 | i.setBackgroundResource(mGalleryItemBackground); |
其中只需要关注最后一个getView函数,这个函数的关键就在于其中两行
1 | Bitmap bm = BitmapFactory.decodeFile(lis. |
2 | get(position).toString()); |
获取图片并显示图片。ok!
记得在values文件下里面添加一个叫做attrs.xml的文件
1 | <?xml version= "1.0" encoding= "utf-8" ?> |
3 | <declare-styleable name= "Gallery" > |
4 | <attr name= "android:galleryItemBackground" /> |
最后还要记得在配置文件中添加权限
1 | <uses-permission android:name= "android.permission.WRITE_EXTERNAL_STORAGE" /> |
2 | <uses-permission android:name= "android.permission.MOUNT_UNMOUNT_FILESYSTEMS" /> |
源码下载