Android瀑布流源代码_瀑布流Demo下载
程序员文章站
2021-12-02 19:47:17
...
本例子是一个瀑布流的例子源码、因为本例子的图片都是高清的大图如果是用流量会很费、建议wifi测试、瀑布流的实现是定义三个linearlayout、然后向里面addView()、下面是运行效果、还是很不错的
如果多了会出现异常、所以做了一些处理
1、lrucache缓存
2、只显示当前屏的图片
3、滑动过程中不加载图片
4、大图缩放成小图、项目编码UTF-8默认编译版本4.4.2注释丰富
查找要添加的column代码
private LinearLayout findColumnToAdd(ImageView iv, int imageHeight) { if (mFirstColumnHeight <= mSecondColumnHeight) { if (mFirstColumnHeight <= mThirdColumnHeight) { iv.setTag(R.string.border_top, mFirstColumnHeight); mFirstColumnHeight = imageHeight; iv.setTag(R.string.border_bottom, mFirstColumnHeight); return mFirstColumn; } iv.setTag(R.string.border_top, mThirdColumnHeight); mThirdColumnHeight = imageHeight; iv.setTag(R.string.border_bottom, mThirdColumnHeight); return mThirdColumn; } else { if (mSecondColumnHeight <= mThirdColumnHeight) { iv.setTag(R.string.border_top, mSecondColumnHeight); mSecondColumnHeight = imageHeight; iv.setTag(R.string.border_bottom, mSecondColumnHeight); return mSecondColumn; } iv.setTag(R.string.border_top, mThirdColumnHeight); mThirdColumnHeight = imageHeight; iv.setTag(R.string.border_bottom, mThirdColumnHeight); return mThirdColumn; } }
加载图片代码
private void loadMoreImages() { if (hashSdcard()) { // 根据页数加载图片 int startIndex = page * PAGE_SIZE; int endIndex = page * PAGE_SIZE PAGE_SIZE; if (startIndex < mImagesThoumb.imageThumbs.length) { if (endIndex > mImagesThoumb.imageThumbs.length) { endIndex = mImagesThoumb.imageThumbs.length; } for (int i = startIndex; i < endIndex; i ) { String imageUrl = mImagesThoumb.imageThumbs[i] .toString(); if (imageUrl != null && !"".equals(imageUrl)) { downLoadData(imageUrl); } } page ; } else { Toast.makeText(mContext, "没有更多图片了", 0).show(); } } else { Toast.makeText(mContext, "无sdcard", 0).show(); } }
另外此Demo在加载过多图片的时候还是会有bug、出现闪退的情况、使用的时候可以一下代码、使用universal-image-loader来加载网络图片就好了
最后给贴上Demo的源代码、希望对大家有用、有兴趣的哥们可以下载看看
源代码下载链接: http://dwtedx.com/download.html?bdkey=s/1c0Gu376 密码: fe3h
上一篇: jQuery垂直时间轴特效插件下载