android 瀑布流条目错乱解决方法
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android 瀑布流条目错乱解决方法相关的知识,希望对你有一定的参考价值。
参考技术A 条目错乱是由于每个item里图片宽高不确定导致的,所以首先需要设置layoutManager.setGapStrategy(StaggeredGridLayoutManager.GAP_HANDLING_NONE)
这个属性,不自动刷新间隔
第一种方式就是在请求完成数据之后获取宽高,然后设置给每个item
第二种方式,在第一次加载item时,记录图片的宽高,但是这样在滑动到顶部是可能会出现顶部留白的问题,所以要重写recyclerview的onscrollstatechangelistener方法,在加载第一行的条目时调用layoutmanager.invalidateSpanAssignments();
Android 实现瀑布流的两种思路
瀑布流怎么样我就不多介绍了。下面说说我想到的两个方法。
方法一,控件的叠加:
ScrollView+LinearLayout。在ScrollView里面加一个水平方向的LinearLayout,在水平Layout里面加几个竖直方向的LinearLayout,然后根据滑动情况去加载和回收Bitmap,甚至可以回收ImageView(回收Bitmap的同时remove掉ImageView,加载Bitmap的同时addView,需要把握好View的位置),思路较好实现。
方法二,自定义ViewGroup:
加载图片时,记住图片信息(宽,高,url等),并计算出图片应该摆放的位置,在ViewGroup添加ImageView用于展示图片,这时实现ViewGroup的onLayout方法,在onLayout方法里面根据计算的图片位置信息来调用imageView.layout()方法。图片排列好后,需要自己去处理滑动,在Ontouch事件里面去使用ScrollBy/ScrollTo来实现滑动的效果,同时可以在ACTION_UP里面去处理滑动回弹fling的效果。这里需要注意的是ViewGroup默认不去拦截Touch事件。这里需要重写onInterceptTouchEvent方法,让其返回true来拦截Touch事件。
以上是关于android 瀑布流条目错乱解决方法的主要内容,如果未能解决你的问题,请参考以下文章
解决RecyclerView瀑布流效果结合Glide使用时图片变形的问题