本文主要是介绍Android 仿知乎广告控件,广告图随滑动控件滑动,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
仿知乎广告模块,效果:RecyclerView其中的一个item是广告图片
-
知乎的效果图如下:
-
从下到上
-
-
从上到下
-
-
仿的效果图:
-
两种情况,一种是广告图片比滑动控件长,另外一种是广告图片比滑动控件短,效果如下:
-
广告图片比滑动控件短:
-
广告图片比滑动控件长:
##实现思路
1.通过给RecyclerView设置addOnScrollListener监听监听广告框是否出现在视野中
2.通过这个方法获取读取对应区域的bitmap对象,其中inputStream是图片的数据流
BitmapRegionDecoder mDecoder = BitmapRegionDecoder.newInstance(inputStream, true);
3.通过方法1判定需要读取的区域,用方法2中的mDecoder对象读取对应区域
mDecoder.decodeRegion(mRect, null);
其中mRect用来控制读取范围
private final Rect mRect = new Rect();
- 代码解析
- 1.通过给RecyclerView设置了addOnScrollListener()监控滑动
private class OnScrollLisrener extends RecyclerView.OnScrollListener {@Overridepublic void onScrolled(RecyclerView recyclerView, int dx, int dy) {super.onScrolled(recyclerView, dx, dy);//获取广告的itemViewView ggView = linearLayoutManager.findViewByPosition(ggPosition);if (ggView == null) {return;}if (ggImageView == null) {return;}//获取滑动控件的高parentHeight = mRecyclerView.getHeight();//图片距离滑动控件的上下距离int topOrBottomPadding;int top = ggView.getTop();int left = 0;int right = imageWidth;int bottom = ggView.getBottom();//如果图片比滑动控件短if (parentHeight > imageHeight) {//计算图片距离顶部的距离和图片距离底部的距离topOrBottomPadding = (parentHeight - imageHeight) / 2;//获取item的高int itemHeight = ggView.getHeight();if (top >= parentHeight - itemHeight - topOrBottomPadding) {//如果超出底部,就一直显示图片的底部bottom = imageHeight;top = bottom - itemHeight;} else if (top <= topOrBottomPadding) {//如果超出顶部,就一直显示图片的顶部top = 0;bottom = top + itemHeight;} else {//处于图片中的时候,自由滑动top -= topOrBottomPadding;bottom = to
这篇关于Android 仿知乎广告控件,广告图随滑动控件滑动的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!