我收集了一些学习用的资料,其中包含了很多学习,面试,中高进阶fluuter资料,还有很多视频详解,如果有同学想进一步了解,详情请看文末。也欢迎各路大神门前来装X。

首先上问题

怎么做?

当我们空余时间的时候,需要有外遇

实现

首先上问题

这是一个用 recycleview做的垂直列表,在列表的最底部,是紧贴屏幕的底部,但是我们需要留出一定的空间来处理,这样看来正常点。

怎么做?

比如在最后一种item的底部预留了一个高度50dp的view,adapter在bind数据的时候,根据position判断是否需要显示这个透明的50dp的view。这个操作是可以的,我以前也是这样做过。好像不太优雅,(管他呢,先把效果做出来了再说)

当我们空余时间的时候,需要有外遇

今天无意中在想,这样的一个底部view,也是属于一个item吧,可以这样理解。又想起了康师傅的ItemDecoration教程,具体视频地址找不到了(请原谅我),也就是我们可以在最后一个item的最后,画一条分割线,但是它是透明的分割线,这样就可以把底部的内容,顶上来了。1)如果你想用margin,padding来处理这个效果,是不美观的,底部会空出一块区域,不显示内容的。2)好像也想不出其他办法了。

实现

我们可以理解前面所有的分割线,都不画出来,就画最后一条

@Override public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) { //我的的drawable对象 if (mDivider == null) { //这个偏移量是0 outRect.set(0, 0, 0, 0); return; } if (mOrientation == VERTICAL) { //处理垂直方向,获取最后一个item的position int lastPosition = state.getItemCount() - 1; //当前item的position int position = parent.getChildAdapterPosition(view); //当他大于等于最后一个的时候,其实不会出现大于的情况的 if (position >= lastPosition) { //把偏移量设置成我们drawable的高度 outRect.set(0, 0, 0, mDivider.getIntrinsicHeight()); } else { //除了最后一个分割线有高度,其他分割线高度都是0 outRect.set(0, 0, 0, 0); } } else { //可以不考虑水平方向,同理的 } }

上面是偏移最后一个,到我们再看看draw方法

@Override public void onDraw(Canvas c, RecyclerView parent, RecyclerView.State state) { if (parent.getLayoutManager() == null || mDivider == null) { return; } if (mOrientation == VERTICAL) { drawVertical(c, parent, state); } else { //我们不需要水平方向的,可以不写这个,当然也可以写 } }

private void drawVertical(Canvas canvas, RecyclerView parent, RecyclerView.State state) { canvas.save(); final int left; final int right; if (parent.getClipToPadding()) { left = parent.getPaddingLeft(); right = parent.getWidth() - parent.getPaddingRight(); canvas.clipRect(left, parent.getPaddingTop(), right, parent.getHeight() - parent.getPaddingBottom()); } else { left = 0; right = parent.getWidth(); }

final int childCount = parent.getChildCount(); final int lastPosition = state.getItemCount() - 1; for (int i = 0; i= lastPosition) { parent.getDecoratedBoundsWithMargins(child, mBounds); final int bottom = mBounds.bottom + Math.round(child.getTranslationY()); final int top = bottom - mDivider.getIntrinsicHeight(); mDivider.setBounds(left, top, right, bottom); mDivider.draw(canvas); } } canvas.restore(); }

drawable设置及喜欢的颜色,我这里需要透明,那就是#00000000. 以上

https://shimo.im/docs/dYkqrQcyr98jPKYX/ 《android学习面试fulutter进阶资料免费获取》,可复制链接后用石墨文档 App 或小程序打开。

android 显示线方向,Android recycleview 分割线彩蛋相关推荐

  1. android机器人方向,Android绘制机器人小实例

    本文实例通过前面学过的Paint.Canvas等2D绘画技术来实现在手机屏幕上绘制Android机器人. 具体代码实现和效果: 用来显示自定义的绘图类的布局文件 res/layout/main.xml ...

  2. Android面试题解答(结尾有彩蛋)

    用于面试参考,不做深究.答案整理自互联网,也会加上我自己的理解. 说说Activity的启动流程 Activity启动有几种方式?一种是写一个startActivity,第二种是点击手机App,通过手 ...

  3. 魅族打开Android彩蛋,魅族Flyme Android 10内测版开启90Hz彩蛋

    根据7月21日的消息,基于 16th Plus.16th目前仍存在异常重启问题未能如期发布,预计本周内推送,请耐心等待.其余机型计划7月底发布. 更新须知 Android 10适配涉及框架修改,更新至 ...

  4. android 图片方向,Android图片处理:识别图像方向并显示

    在Android中使用ImageView显示图片的时候发现图片显示不正.方向偏了或者倒过来了. 解决问题非常自然想到的分两步走: 1.自己主动识别图像方向,计算旋转角度. 2.对图像进行旋转并显示. ...

  5. android 摄像头方向,android:调整摄像头方向

    在代码中可直接调用该方法. 参数:activity 为当前上下文: cameraId 为摄像头的ID,及前置摄像头或后置摄像头的ID import android.hardware.Camera; C ...

  6. android 经纬度方向,Android获取经纬度、计算距离、方位角

    最近在Android上作GPS的东西,获取经纬度.计算距离.方位角,感受在搞GIS样.固然,玩笑了,玩玩而已,稍微总结一下.html 经度指示南北方向,纵向.android 纬度指示东西方向,横向.g ...

  7. android高德方向,Android 高德地图进阶功能

    本文接本人上一篇文章:Android APP接入高德SDK问题与记录,如果还不熟悉高德地图接入,可以先阅读这篇文章. 1 切换图层及显示路况 通过设置mapType,可以切换地图的类型: aMap.m ...

  8. android lineargradient 方向,Android LinearGradient和奇怪的相对定位

    我有以下代码和LinearGradient,它与其他所有示例看起来非常相似. public class CustomColourBar extends View { public CustomColo ...

  9. android高德方向,Android高德地图填坑

    项目中用到地图的地方越来越多,从O2O商城.出行.交通.单车等无处不在使用地图,以下是在多个项目中集成高德地图常用的几个功能点,及填坑. 定位功能 小蓝点策略 myLocationStyle.myLo ...

最新文章

  1. 详解 Date 对象
  2. 招行java开发面试,面经:Java后台开发-招行网络科技
  3. openstack整合ceph
  4. python读取txt文件并写入excel-Python实现读取并写入Excel文件过程解析
  5. java 重力脚本_用Java模拟游戏重力的实现(弹跳)
  6. cameraraw预设_PS Camera Raw 导入预设以及分组
  7. 一个跨国银行的敏捷转型案例要点之全员培训
  8. Android环境的安装遇到的问题
  9. java 获取类方法_Java之反射机制三:获取类的方法
  10. Myeclipse 操作数据库
  11. 分布式事务seata只支持MySQL_阿里分布式事务框架Seata原理解析
  12. [大学回忆录-思想]再谈我的专业技能
  13. 为AI芯片铺路?原三星半导体周军加盟Rokid
  14. 在centos上安装nginx
  15. 高通平台开机LOGO的修改与兼容
  16. 微信小程序data format error解决办法
  17. 晨魅--高拍仪二次开发
  18. 嵌入式系统开发-麦子学院(5)——linux高级编程之文件IO管理
  19. 每天五分钟机器学习:评价算法模型常用的数值评估方式——F1值
  20. 闭合导线的近似平均差(工程测量)

热门文章

  1. C语言中scanf与分隔符(空格回车Tab)
  2. UNIX经典命令详解
  3. ERROR: Cannot install keras==2.2.0 and tensorflow==1.14.0 because these package versions have confli
  4. [Power Query] 删除重复项
  5. 82.android 简单的当前运行内存清理
  6. 从普通类的角度理解java的enum类型,用自定义类来模拟实现enum类的功能
  7. runtime错误c语言,c,runtime_为什么这样的代码会出现RUNTIME ERROR?,c,runtime - phpStudy...
  8. thinkphp6 防范xss攻击
  9. 奥赛一本通2069:【例2.12 】糖果游戏
  10. VMware ESXi 8.0U1 集成网卡驱动和 NVMe 驱动 (网卡驱动集成版,整合版)