当前位置: 首页 > news >正文

Android:使用LayerDrawable动态生成四宫格头像(包含双人、三人头像)

其实用自定义View也可以实现,我比较懒,就用LayerDrawable来创建一个新的Drawable资源实现。

举例4宫格,9宫格原理类似,每个图标的位置需要用边距慢慢调成预期的效果

效果如下:

双人头像:

 三人头像:

四人头像:

 实现:

/*** 使用LayerDrawable生成四宫格头像(包含双人、三人头像)** @param drawables 头像数组* @return 四宫格头像*/
private Drawable createHeaderForSms(Drawable[] drawables) {int size = drawables.length;if (size == 1) {return drawables[0];}int dp34 = (int) context.getResources().getDimension(R.dimen.dp_34);int dp24 = (int) context.getResources().getDimension(R.dimen.dp_24);int dp6 = (int) context.getResources().getDimension(R.dimen.dp_6);int dp48 = (int) context.getResources().getDimension(R.dimen.dp_48);LayerDrawable la = new LayerDrawable(drawables);// 其中第一个参数为层的索引号,后面的四个参数分别为left、top、right和bottomswitch (drawables.length) {case 2:la.setLayerInset(0, 0, 0, dp34, dp34);la.setLayerInset(1, dp34, dp34, 0, 0);break;case 3:la.setLayerInset(0, dp24, dp6, dp24, dp48);la.setLayerInset(1, 0, dp48, dp48, dp6);la.setLayerInset(2, dp48, dp48, 0, dp6);break;case 4:la.setLayerInset(0, 0, 0, dp48, dp48);la.setLayerInset(1, dp48, 0, 0, dp48);la.setLayerInset(2, 0, dp48, dp48, 0);la.setLayerInset(3, dp48, dp48, 0, 0);break;}return la;
}

http://www.lryc.cn/news/56434.html

相关文章:

  • Android Jetpack 从使用到源码深耕【数据库注解Room 从实践到原理 】(三)
  • 中国电子学会2023年03月份青少年软件编程Scratch图形化等级考试试卷三级真题(含答案)
  • 分布式事务培训
  • 关键词采集工具可以帮助我们做那些方面的工作
  • 2023年5月PMP难考吗?
  • 定语从句的省略
  • 简易小工具实现批量打开多个网页
  • swiper 点击事件
  • 旅游心得Traveling Experience
  • 【 SpringBoot ⽇志⽂件 】
  • ThinkPHP路由不转换的原因及解决方法
  • 【案例教程】基于RWEQ模型的土壤风蚀模数估算及其变化归因分析实践技术
  • Twitter推荐算法总架构和算法说明
  • 1.C语言题目---指针类(基础)
  • 【算法与数据结构】关于排序的问题思考
  • 行为型模式-命令模式
  • SHELL综合练习1
  • ROS开发之如何使用发布者、订阅者和话题消息?
  • 基于Java+Springboot+vue高校资源共享交流平台设计和实现
  • 收藏! 38个Python数据科研库
  • SpringBoot过滤器获取Bean-请求重复可读-获取请求体数据-用户IP归属地获取
  • 有哪些特别小众而有趣的编程语言呢?
  • vue中使用高德
  • React class组件和hooks setState异步更新数据详解
  • ToBeWritten之嵌入式操作系统
  • git 实际开发中使用-解决问题
  • 新星计划·2023-第1期 - Python赛道报名入口 -〖你就是下一个新星〗
  • Android LowMemoryKiller概述
  • 特殊操作流——案例:游戏次数
  • git clone connect to gitlab sign in token弹窗让我输入用户名和密码