九宫格显示控件
来源:互联网 发布:有线网络 编辑:程序博客网 时间:2024/05/18 02:52
这个跟上一篇文章是相对应的,上一篇是选择并显示(也可以删除),这一篇是单纯的显示,就像微信朋友圈的九宫格图片一样。而且是同一作者写的,很犀利。
地址:https://github.com/jeasonlzy/NineGridView。Demo使用如下:
1、compile,不解释。
compile 'com.lzy.widget:ninegridview:0.2.0'compile 'com.squareup.picasso:picasso:2.5.2'
2、同样需要一个图片加载器imageloader。
public class PicassoImageLoader implements NineGridView.ImageLoader { @Override public void onDisplayImage(Context context, ImageView imageView, String url) { Picasso.with(context).load(url) .networkPolicy(NetworkPolicy.NO_CACHE)//读取网络图片不缓存 //.memoryPolicy(MemoryPolicy.NO_CACHE)//读取本地图片缓存 .placeholder(R.mipmap.ic_launcher) .error(R.mipmap.ic_launcher) .into(imageView); } @Override public Bitmap getCacheImage(String url) { return null; }}
3、xml声明和MainActivity中使用。
public class MainActivity extends Activity { private NineGridView gridView; private List<ImageInfo> list; private ImageView iv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); NineGridView.setImageLoader(new PicassoImageLoader()); gridView = findViewById(R.id.gridView); iv = findViewById(R.id.iv); initData(); } private void initData() { list = new ArrayList<>(); for (int i = 0; i < 10; i++) { ImageInfo imageInfo = new ImageInfo(); switch (i) { case 0: imageInfo.setBigImageUrl("http://p0.so.qhimgs1.com/bdr/_240_/t01d8617422878c3c50.jpg"); imageInfo.setThumbnailUrl("http://p0.so.qhimgs1.com/bdr/_240_/t01d8617422878c3c50.jpg"); break; case 1: imageInfo.setBigImageUrl("http://img4.imgtn.bdimg.com/it/u=61561371,604619965&fm=27&gp=0.jpg"); imageInfo.setThumbnailUrl("http://img4.imgtn.bdimg.com/it/u=61561371,604619965&fm=27&gp=0.jpg"); break; case 2: imageInfo.setBigImageUrl("http://pic.58pic.com/58pic/13/68/11/35W58PICzbv_1024.jpg"); imageInfo.setThumbnailUrl("http://pic.58pic.com/58pic/13/68/11/35W58PICzbv_1024.jpg"); break; case 3: imageInfo.setBigImageUrl("http://img.zcool.cn/community/01638059302785a8012193a36096b8.jpg@2o.jpg"); imageInfo.setThumbnailUrl("http://img.zcool.cn/community/01638059302785a8012193a36096b8.jpg@2o.jpg"); break; case 4: imageInfo.setBigImageUrl("https://ps.ssl.qhimg.com/sdmt/156_135_100/t010b0a4aa5bb6941c4.jpg"); imageInfo.setThumbnailUrl("https://ps.ssl.qhimg.com/sdmt/156_135_100/t010b0a4aa5bb6941c4.jpg"); break; case 5: imageInfo.setBigImageUrl("https://ps.ssl.qhimg.com/sdmt/155_135_100/t018552c6a1c322d25b.jpg"); imageInfo.setThumbnailUrl("https://ps.ssl.qhimg.com/sdmt/155_135_100/t018552c6a1c322d25b.jpg"); break; case 6: imageInfo.setBigImageUrl("https://ps.ssl.qhimg.com/sdmt/119_135_100/t01c336a7c24a1c7fa6.jpg"); imageInfo.setThumbnailUrl("https://ps.ssl.qhimg.com/sdmt/119_135_100/t01c336a7c24a1c7fa6.jpg"); break; case 7: imageInfo.setBigImageUrl("http://img.zcool.cn/community/01638059302785a8012193a36096b8.jpg@2o.jpg"); imageInfo.setThumbnailUrl("http://img.zcool.cn/community/01638059302785a8012193a36096b8.jpg@2o.jpg"); break; case 8: imageInfo.setBigImageUrl("http://p2.so.qhimgs1.com/bdr/_240_/t017a380035da2570be.jpg"); imageInfo.setThumbnailUrl("http://p2.so.qhimgs1.com/bdr/_240_/t017a380035da2570be.jpg"); break; case 9: imageInfo.setBigImageUrl("http://img3.imgtn.bdimg.com/it/u=4166721891,1503444760&fm=27&gp=0.jpg"); imageInfo.setThumbnailUrl("http://img3.imgtn.bdimg.com/it/u=4166721891,1503444760&fm=27&gp=0.jpg"); break; } list.add(imageInfo); } gridView.setAdapter(new NineGridViewClickAdapter(this, list)); }}
这样就已经满足了九宫格图片显示和点击图片预览了。
可能实际开发中,会有不同的需求满足不了,那就只能导库来改库了,导入报错,修改一下buildToolsVersion就行了,提示不能低于25.0.0,那就将库Module和你自己项目的Module都改成大于25.0.0来编译就好了。
比如预览的时候 添加图片长按事件,就可以在库的ImagePreviewAdapter中的instantiateItem方法中直接添加:
imageView.setOnLongClickListener(new View.OnLongClickListener() { @Override public boolean onLongClick(View view) { Toast.makeText(context, "长按了" + imageInfo.get(position).getBigImageUrl(), Toast.LENGTH_SHORT).show(); return true; } });
再比如:预览界面下面的数字指示器(2/9),想改成小圆点的那种(现在的微信就是这种),直接在ImagePreviewActivity中初始化过程中添加就行。初始化过程中顺便初始化小圆点,核心代码如下:
/** * 初始化小圆点 */ private void initPoint() { for (int i = 0; i < imageInfo.size(); i++) { ImageView imageView = new ImageView(this); if (i == currentItem) { imageView.setBackgroundResource(R.drawable.point_selected); } else { imageView.setBackgroundResource(R.drawable.point_un_selected); } LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); params.leftMargin = 20; imageView.setLayoutParams(params); ll_point.addView(imageView); } }
然后给ViewPager设置一个监听就行了
viewPager.addOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() { @Override public void onPageSelected(int position) { for (int i = 0; i < imageInfo.size(); i++) { if (i == position) { ll_point.getChildAt(i).setBackgroundResource(R.drawable.point_selected); } else { ll_point.getChildAt(i).setBackgroundResource(R.drawable.point_un_selected); } }// tv_pager.setText(String.format(getString(R.string.select), currentItem + 1, imageInfo.size())); } });
指示器的小圆点是用shape样式写的。
阅读全文
0 0
- 九宫格显示控件
- Android 原创九宫格方块显示控件
- 自定义九宫格控件NineGridLayout ,实现微信朋友圈图片九宫格显示
- 九宫格控件NineGridView
- 自定义控件之九宫格
- MultiImageView九宫格图片显示
- 自定义控件一百行代码实现微信朋友圈九宫格图片显示
- [Android实例] 自定义控件一百行代码实现微信朋友圈九宫格图片显示
- 【Android】自定义控件实现九宫格解锁
- 自制一个九宫格解锁控件
- 自定义控件九宫格滑动解锁
- Android自定义控件---仿微信群聊(九宫格)头像
- Android GridView控件(九宫格)
- Android自定义控件实现九宫格解锁
- launcher3 修改文件夹图标九宫格显示
- 仿支付宝九宫格显示
- 安卓九宫格图片显示
- 基于.NET CompactFramework的九宫格控件(附源码)
- 免费制作字体软件
- format参数时间格式
- c#配置GDAL环境,按照步骤一步一步肯定成功,代码为测试shp转Geojson
- 关于无线网络波动大的解决办法
- Spark --【宽依赖和窄依赖】
- 九宫格显示控件
- hive相关问题总结
- 解决Altium画pcb时出现Unknown Pin的情况
- angularJS指令ng-repeat生成的dom元素js获取不到
- 数据结构实验之图论六:村村通公路
- 数据结构实验之图论九:最小生成树
- jquery点击事件
- 关于Java和OC深浅复制的问题
- jar包(依赖)