这篇博客主要写仿微信朋友圈选择图片发朋友圈。整个功能包括加载图片,显示图片、相册文件夹、预览图片,九宫格显示已经选择好的图片等等。
效果图
2019-03-28_11_45_57 [320i].gif
截图1
截图2
截图 3
截图 4
异步加载图片
图片文件夹
选择图片
已选择的图片
具体思路(知识点):
1. 异步加载相册图片;
2. 自定义相册文件夹;
3. 支持单选、多选(最多9张)图片;
4. ItemTouchHelper实现拖拽、排序、删除;
5. 对Canvas画布操作、变换,结合属性动画,实现图片的放大、缩小等;
加载图片肯定是异步加载,耗时任务。android系统默认提供了一个Loader(Android Loader机制全面详解及源码浅析https://blog.csdn.net/axi295309066/article/details/52536960)请大家搓这篇文章,看了你会对Loader机制会有个全面的认识。在结合我这篇文章,如何去加载相册里的图片? 显示图片是RecyclerView,第一个位置显示的是一个拍照默认的图片,利用RecyclerView支持多种不同类型的布局,把第一个位置单独提取出来,去设置一个只有一张拍照图片的布局。
private LoaderManager.LoaderCallbacks mLoaderCallbacks = new LoaderManager.LoaderCallbacks() {
private final String[] IMAGE_PROJECTION = {
MediaStore.Images.Media.DATA,
MediaStore.Images.Media.DISPLAY_NAME,
MediaStore.Images.Media.DATE_ADDED,
MediaStore.Images.Media._ID,
MediaStore.Images.Media.MINI_THUMB_MAGIC,
MediaStore.Images.Media.BUCKET_DISPLAY_NAME};
//创建一个CursorLoader,去异步加载相