在网上找了好久似乎都没有关于这方面的(可能是自己的信息量太小吧),于是自己来填补这个漏洞吧。
常见的方法莫过于自己定义一个数组,用以存储图片的引用,如:
private Integer[] pictures = {
R.drawable.icon1,
R.drawable.icon2,
R.drawable.icon3,
R.drawable.icon4,
R.drawable.icon5
}; 然后再将此数组加入到适配器中。但是想要显示自己的图片,这怎么行。。下面来介绍我自己的方法
首先,你得知道你图片的存储路径,将这些你将要显示的图片的路径存放于一个arraylist里面
ArrayList PictureNameList = new ArrayList();
PicureNameList.add("路径");
...
... 然后获取gallery实例,
Gallery g = (Gallery) findViewById(R.id.mygallery); 相应的mygallery.xml
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
>
android:id="@+id/mygallery"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_x="12px"
android:layout_y="106px"
/>
并加入到适配器里面
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 lis;
/*ImageAdapter的构造符*/
public ImageAdapter(Context c,List li)
{
mContext = c;
lis=li;
/* 使用res/values/attrs.xml中的定义
* 的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的文件
最后还要记得在配置文件中添加权限