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

news/2024/11/17 21:50:54/

其实用自定义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.ppmy.cn/news/38522.html

相关文章

大数据平台开发——使用Java和Python调用Shell脚本

大数据平台开发——使用Java和Python调用Shell脚本 背景 在大数据平台开发中,经常会遇到需要调用Shell脚本的场景,倒不是说只能用Shell,毕竟大数据开发到头来一定是个语言无关的事情: 从Hive源码解读大数据开发为什么可以脱离S…

2022 第十三届蓝桥杯大赛软件赛省赛(第二场),C/C++ 大学B组题解

2022 第十三届蓝桥杯大赛软件赛省赛(第二场),C/C 大学B组题解 文章目录第1题 —— 练习 (5分)第2题 —— 三角回文数 (5分)第3题 —— 卡片 (10分)第4题 —— 考勤刷卡 &…

关于文件同步中单向同步和双向同步

文件同步是确保两个或多个位置包含相同的最新文件的过程。如果您从一个位置添加,更改或删除文件,则同步过程将在另一位置添加,更改或删除相应的文件。同步可以是“ 双向 ”或“ 单向 ”。双向同步(又名双向同步或双向同步&#xf…

左孩子右兄弟 蓝桥杯1451 python

题目描述 对于一棵多叉树,我们可以通过 “左孩子右兄弟” 表示法,将其转化成一棵二叉树。 如果我们认为每个结点的子结点是无序的,那么得到的二叉树可能不唯一。 换句话说,每个结点可以选任意子结点作为左孩子,并按…

进程与线程(一)

进程的概念、组成、特征 程序:是静态的,就是个存放在磁盘里的可执行文件,如:xx.exe 进程:进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位。 同一个程序多次执行会对应多个进程。 进…

USB3.0芯片FT601Q简介及FPGA实现

FT601Q介绍 FT601Q 是 FTDI 推出的一款超高速 USB3.0 芯片,提供高达 5Gbps 的带宽。该芯片不需要额外的固件开发,共有 4 个写通道和 4 个读通道,每个通道的缓冲大小均为 4KB。FT601Q 具有多种工作模式,本文介绍并实现相对简单的同…

Spring 中经典的 9 种设计模式

1 简单工厂(非23种设计模式中的一种) 1 1 实现方式: BeanFactory。Spring中的BeanFactory就是简单工厂模式的体现,根据传入一个唯一的标识来获得Bean对象,但是否是在传入参数后创建还是传入参数前创建这个要根据具体情况来定。 1.2 实质&a…

深度学习个人整理

深度学习 概念 DL Deep Learning 机器学习的一个分支 机器学习分类 监督学习 特点:已知类别数据学习 因变量是否连续 分类 连续房价,体重,天气 回归 不连续是否患癌症 算法 k-近邻算法 KNN 决策树 支持向量机 SVM 神经网络 线性模…