GRIDVIEW AND BASEADAPTER
2014-08-21 22:03
211 查看
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;
}
载图片(假设有上千张图片),总之是包含了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;
}
相关文章推荐
- AsyncTask+GridView+BaseAdapter实现解析网络数据,图文混排。HttpUtils,JsonUtils等
- 美化GridView视图(BaseAdapter)
- GridView之BaseAdapter的用法简单案例(二)【子元素item的高度暂时不知道控制】
- Android高手进阶教程(十六)之---Android中万能的BaseAdapter(Spinner,ListView,GridView)的使用!
- Android高手进阶教程(十六)之---Android中万能的BaseAdapter(Spinner,ListView,GridView)的使用!
- Android高手进阶教程(十六)之---Android中万能的BaseAdapter(Spinner,ListView,GridView)的使用!
- 开源项目MultiChoiceAdapter详解(六)——GridView和MultiChoiceBaseAdapter配合使用
- Android高手进阶教程(十六)之---Android中万能的BaseAdapter(Spinner,ListView,GridView)的使用!
- ListView和BaseAdapter的getViewTypeCount和getItemViewType方法实现Gridview,显示多列
- GridView & BaseAdapter设置四宫格的一些问题
- 基于BaseAdapter的GridView设置ImageView大小
- Android中万能的BaseAdapter(Spinner,ListView,GridView)的使用!
- BaseRecyclerViewAdapterHelper开源项目之BaseSectionQuickAdapter 实现Expandable And collapse效果的源码学习
- Android高手进阶教程(十五)---Android中万能的BaseAdapter(Spinner,ListView,GridView)的使用!
- GridView视图(BaseAdapter)
- BaseAdapter 适配之 Bean and Map
- Android中万能的BaseAdapter(Spinner,ListView,GridView)的使用!
- Android高手进阶教程(十六)之---Android中万能的BaseAdapter(Spinner,ListView,GridView)的使用!
- BaseAdapter GridView 用法
- GridView的使用(二):与BaseAdapter搭配使用