GRIDVIEW AND BASEADAPTER

来源:互联网 发布:slack mac 编辑:程序博客网 时间:2024/05/29 17:53
GridView和BaseAdapter 搭配使用,能做出不错的图片列表显示效果,可以控制每行图片显示列数,动态加

载图片(假设有上千张图片),总之是包含了GridView和BaseAdapter 的优点和使用便利。

表格布局

<RelativeLayout android:layout_width="fill_parent"
android:layout_height="632dip"
android:layout_below="@id/top"
android:layout_above="@id/bot"
android:background="@drawable/view_item_list" >
<GridView android:id="@+id/gridView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:horizontalSpacing="10dip"
android:verticalSpacing="17dip"
android:stretchMode="columnWidth"
android:gravity="center"/>
</RelativeLayout>

gridview.setNumColumns(4);//每行显示列数
ImageAdapter adapter=new ImageAdapter(MainActivity.this,maps);//maps adapater 具体显示内容
gridview.setAdapter(adapter);
gridview.setOnItemClickListener(new OnItemClickListener(){
public void onItemClick(AdapterView<?> arg0, View view, int position,
long arg3) {
// TODO Auto-generated method stub
Integer position1=new Integer(position);
if(selectedImg.contains(position1)){
//点击选中的image 还原状态
Bitmap map2=Utils.createSizeImage(maps.get(position), 75, 100);
ImageView view1=(ImageView)view;
view1.setImageBitmap(Utils.overlay(unSelected, map2));
selectedImg.remove(position1);
//Log.i(TAG, w)
}else{
//点击未选中的image 设置为选中的状态
Bitmap map2=Utils.createSizeImage(maps.get(position), 75, 100);
ImageView view1=(ImageView)view;
view1.setImageBitmap(Utils.overlay(selected, map2));
selectedImg.add(position1);
}
Log.v("TAG", String.valueOf(selectedImg.size()) + " " + selectedImg.toString());
}
});
}
class ImageAdapter extends BaseAdapter{
Context context;
List<Bitmap> maps;

public ImageAdapter(Context context,List<Bitmap> maps){
this.context=context;
this.maps=maps;
}

public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
final ImageView imageView;
if (convertView == null) {
imageView = new ImageView(context);
imageView.setLayoutParams(new GridView.LayoutParams(100,125));//设置图片显示长宽 图片外部外部框架
} else {
imageView = (ImageView) convertView;
}

//imageView.setPadding(8, 8, 8, 8);
Bitmap map2=Utils.createSizeImage(maps.get(position), 75, 100);//设置图片显示长宽真实图片
imageView.setImageBitmap(Utils.overlay(unSelected, map2)); //图片框架和真实图片叠加显示
return imageView;
}

public int getCount() {
// TODO Auto-generated method stub
return maps.size();
}

public Object getItem(int position) {
// TODO Auto-generated method stub
return maps.get(position);
}

public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}

//图片叠加方法

public static Bitmap overlay(Bitmap bmp1, Bitmap bmp2) {
Bitmap bmOverlay = Bitmap.createBitmap(100,
125, Config.ARGB_8888);
Canvas canvas = new Canvas(bmOverlay);
canvas.drawBitmap(bmp1, 0, 0, null);
canvas.drawBitmap(bmp2, 12, 12, null);
canvas.save(Canvas.ALL_SAVE_FLAG);// 保存
canvas.restore();// 存储
return bmOverlay;
}

0 0
原创粉丝点击