Android笔记:仿系统图片库(GridView的多选删除)实用篇
来源:互联网 发布:医疗器械软件描述范例 编辑:程序博客网 时间:2024/06/09 17:31
后来加入了图片缓存的功能,(Bitmap和文件缓存),demo的下载地址:
http://download.csdn.net/detail/xiaoyu940601/9760998
最近需要用到这个功能,去网上也扒过资源,但是都不太满意,后来就自己写了一个demo,功能大致如下:
1.遍历指定文件目录下的所有图片用gridView的形式展示出来,多选删除,点击打开大图,
2.删除的同时会删除选中的item项,以及本地文件图片,
3.采用了二次采样,以避免outOfMemory
效果如下图:
展示首页面:
点击选择后进入选择状态:
点击删除后,自动更新gridView:
当把图片全部删除后,程序检测到指定目录下的图片清空了会显示指定的背景:
废话不说上代码:
首先是BeanData类,主要是定义一些变量,主要是set、get方法,不解释
import java.io.File;/** * Created by lenovo on 2016/11/27. */public class Bean { private File file; private String fileName,filePath; private boolean isChecked; private boolean isShow; private int id; public File getFile() { return file; } public void setFile(File file) { this.file = file; } public String getFileName() { return fileName; } public void setFileName(String fileName) { this.fileName = fileName; } public String getFilePath() { return filePath; } public void setFilePath(String filePath) { this.filePath = filePath; } public boolean isChecked() { return isChecked; } public void setChecked(boolean checked) { isChecked = checked; } public boolean isShow() { return isShow; } public void setShow(boolean show) { isShow = show; } public int getId() { return id; } public void setId(int id) { this.id = id; }}
接下来是Adapter,继承BaseAdapter,
public class MyAdapter extends BaseAdapter { private LayoutInflater inflater; private List<Bean> items; private List<Bitmap> bitmapList = new ArrayList<Bitmap>(); private Bean bean; private OnShowItemClickListener onShowItemClickListener; public MyAdapter(List<Bean> list,List<Bitmap> bitmaps,Context context){ this.items = list; this.bitmapList = bitmaps; inflater = LayoutInflater.from(context); } @Override public int getCount() { return items.size(); } @Override public Object getItem(int position) { return position; } @Override public long getItemId(int position) { return items.get(position).getId(); }
接下来是重要的adapter的getView部分也是比较重要的部分
@Override public View getView(int position, View convertView, ViewGroup viewGroup) { ViewHolder holder; //item 的布局,findViewById if (convertView==null){ holder = new ViewHolder(); convertView = inflater.inflate(R.layout.item,null); holder.img = (ImageView)convertView.findViewById(R.id.imageView1); holder.cb = (CheckBox)convertView.findViewById(R.id.checkBox); convertView.setTag(holder); }else{ //setTag,getTag,为了避免重复加载布局 holder = (ViewHolder)convertView.getTag(); }// 获取点击的item的bean bean = items.get(position); //根据bean的isShow来控制item的CheckBox显示与否 if (bean.isShow()){ holder.cb.setVisibility(View.VISIBLE); }else{ holder.cb.setVisibility(View.GONE); }// 显示图片 holder.img.setImageBitmap(bitmapList.get(position)); //监听CheckBox的状态 holder.cb.setOnCheckedChangeListener(new OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton compoundButton, boolean isChecked) { if (isChecked){ bean.setChecked(true); }else{ bean.setChecked(false); } onShowItemClickListener.onShowItemClick(bean); } }); holder.cb.setChecked(bean.isChecked()); return convertView; } static class ViewHolder { ImageView img; CheckBox cb; } //点击删除时回调的接口 public interface OnShowItemClickListener { public void onShowItemClick(Bean bean); } public void setOnShowItemClickListener(OnShowItemClickListener onShowItemClickListener) { this.onShowItemClickListener = onShowItemClickListener; }
解释比较详细,就不再解释了,
最后把demo的地址贴出来,有用到的直接拿走就好。
demo地址
http://download.csdn.net/detail/xiaoyu940601/9696704
2 0
- Android笔记:仿系统图片库(GridView的多选删除)实用篇
- android 图片库的封装
- android 4.4 系统图片库调用
- android 直接打开系统图片库
- Android自定义GridView之仿支付宝首页可拖动、可删除的九宫格
- Android自定义GridView之仿支付宝首页可拖动、可删除的九宫格
- 加载系统图片库的实现
- 仿iPhone的Launcher开发,长按可拖拽删除的GridView
- Android多进程压缩图片库
- GridView实用示例代码:全选 反选 批量删除
- Android 中系统组件GridView属性笔记
- Android的listview、gridview 笔记
- android 支持删除添加功能的gridview
- Fresco介绍:Android的一个新图片库
- Android自动播放的图片库AdapterViewFlipper
- (笔记)Android多个GridView
- [Android]笔记20:ViewAnimator-仿android系统launcher界面
- Android仿系统Menu的代码
- android Retrofit+OkHttp使用自制的证书实现https安全传输
- CodeForces 269D
- JDK1.5新特性5-增强for循环
- Spring的点点滴滴之动态代理
- Docker网络管理
- Android笔记:仿系统图片库(GridView的多选删除)实用篇
- 微软发布Visual Studio Mac预览版
- Leetcode 453 Minimum Moves to Equal Array Elements
- IE兼容性问题(二)
- emWin 2天速成实例教程009_ListView列表框控件使用方法
- java垃圾回收机制
- BindService与StartService的综合使用案例
- cxf+spring 权限验证(1)
- shell 脚本之if判断