在网上找了好久似乎都没有关于这方面的(可能是自己的信息量太小吧),于是自己来填补这个漏洞吧。
常见的方法莫过于自己定义一个数组,用以存储图片的引用,如:
1 |
private Integer[] pictures = {
|
2 |
R.drawable.icon1,
|
3 |
R.drawable.icon2,
|
4 |
R.drawable.icon3,
|
5 |
R.drawable.icon4,
|
6 |
R.drawable.icon5
|
7 |
}; |
然后再将此数组加入到适配器中。但是想要显示自己的图片,这怎么行。。下面来介绍我自己的方法
首先,你得知道你图片的存储路径,将这些你将要显示的图片的路径存放于一个arraylist里面
1
|
ArrayList<String> PictureNameList = new ArrayList<String>();
|
2
|
PicureNameList.add("路径");
|
3
|
...
|
4
|
...
|
然后获取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"
|
06
|
>
|
07
|
08
|
<!-- 建立一個 Gallery -->
|
09
|
<Gallery
|
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" |
15
|
/>
|
16
|
|
17
|
|
18
|
</LinearLayout>
|
并加入到适配器里面
01
|
g.setAdapter(new ImageAdapter(this,PictureNameList));
|
02
|
03
|
/*设定一个itemclickListener事件*/
|
04
|
g.setOnItemClickListener(new OnItemClickListener()
|
05
|
{
|
06
|
public void onItemClick(AdapterView<?> parent,
|
07
|
View v, int position, long id)
|
08
|
{
|
09
|
10
|
//这里就根据你自己的需要去做一些功能的展示
|
11
|
}
|
12
|
});
|
下面就来看这个ImageAdaper实现
01
|
public class ImageAdapter extends BaseAdapter
|
02
|
{
|
03
|
/*声明变量*/
|
04
|
int mGalleryItemBackground;
|
05
|
private Context mContext;
|
06
|
private List<String> lis;
|
07
|
|
08
|
/*ImageAdapter的构造符*/
|
09
|
public ImageAdapter(Context c,List<String> li)
|
10
|
{
|
11
|
mContext = c;
|
12
|
lis=li;
|
13
|
/* 使用res/values/attrs.xml中的<declare-styleable>定义
|
14
|
* 的Gallery属性.*/
|
15
|
TypedArray a = obtainStyledAttributes(R.styleable.Gallery);
|
16
|
/*取得Gallery属性的Index id*/
|
17
|
mGalleryItemBackground = a.getResourceId(
|
18
|
R.styleable.Gallery_android_galleryItemBackground, 0);
|
19
|
/*让对象的styleable属性能够反复使用*/
|
20
|
a.recycle();
|
21
|
}
|
22
|
|
23
|
/*几定要重写的方法getCount,传回图片数目*/
|
24
|
public int getCount()
|
25
|
{
|
26
|
return lis.size();
|
27
|
}
|
28
|
|
29
|
/*一定要重写的方法getItem,传回position*/
|
30
|
public Object getItem(int position)
|
31
|
{
|
32
|
return position;
|
33
|
}
|
34
|
|
35
|
/*一定要重写的方法getItemId,传并position*/
|
36
|
public long getItemId(int position)
|
37
|
{
|
38
|
return position;
|
39
|
}
|
40
|
|
41
|
/*几定要重写的方法getView,传并几View对象*/
|
42
|
public View getView(int position, View convertView,
|
43
|
ViewGroup parent)
|
44
|
{
|
45
|
/*产生ImageView对象*/
|
46
|
ImageView i = new ImageView(mContext);
|
47
|
/*设定图片给imageView对象*/
|
48
|
Bitmap bm = BitmapFactory.decodeFile(lis.
|
49
|
get(position).toString());
|
50
|
i.setImageBitmap(bm);
|
51
|
/*重新设定图片的宽高*/
|
52
|
i.setScaleType(ImageView.ScaleType.FIT_XY);
|
53
|
/*重新设定Layout的宽高*/
|
54
|
i.setLayoutParams(new Gallery.LayoutParams(200, 120));
|
55
|
/*设定Gallery背景图*/
|
56
|
i.setBackgroundResource(mGalleryItemBackground);
|
57
|
/*传回imageView对象*/
|
58
|
return i;
|
59
|
}
|
60
|
}
|
61
|
}
|
其中只需要关注最后一个getView函数,这个函数的关键就在于其中两行
1
|
Bitmap bm = BitmapFactory.decodeFile(lis.
|
2
|
get(position).toString());
|
3
|
i.setImageBitmap(bm);
|
获取图片并显示图片。ok!
记得在values文件下里面添加一个叫做attrs.xml的文件
1
|
<?xml version="1.0" encoding="utf-8"?>
|
2
|
<resources>
|
3
|
<declare-styleable name="Gallery">
|
4
|
<attr name="android:galleryItemBackground" />
|
5
|
</declare-styleable>
|
6
|
</resources>
|
最后还要记得在配置文件中添加权限
1
|
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
|
2
|
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
|