【Android Drawable系列】- shape xml属性详解

Android Studio属性学习(一)——shape属性 一、前提 在这里会讲解shape属性的各个元素,以及效果展示及使用 二、目标 shape 三、内容 1、首先创建一个shape.xml文件以及在布局文件中添加一个按钮用来展示添加属性后的样式 <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/... 阅读详情

Android Drawable系列

日常开发中,一些简单的背景或者图形都会使用xml的shape标签完成,经常使用在按钮的背景上。

shape的优点还是很多的

  • 文件比切图小
  • 节约内存
  • 支持拉伸

shape的属性虽然比较简单,但是也能绘制出一些比较复杂的形状

概览

首先来看看shape标签所支持的标签以及属性,如下图:

Shape

左侧是shape标签的自身属性,右侧是shape标签所支持的标签和标签的属性。

下面是一份xml属性实例和说明

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:dither=["true" | "false"]       //将在位图的像素配置与屏幕不同时(例如:ARGB 8888 位图和 RGB 565 屏幕)启用位图的抖动;值为“false”时则停用抖动。默认值为 true。
    android:shape=["rectangle" | "oval" | "line" | "ring"]//分别为矩形、椭圆、线、环。默认为矩形rectangle 
    android:innerRadius="integer"           // shape为ring时有效,内环半径
    android:innerRadiusRatio="float"        // shape为ring时有效,内环的厚度比,即环的图形宽度与内环半径的比例,按照这个比例计算内环半径,默认为3,可被innerRadius值覆盖
    android:thickness="integer"             // shape为ring时有效,环的厚度
    android:thicknessRatio="float"          // shape为ring时有效,环的厚度比,即环的图形宽度与环的厚度的比例,按照这个比例计算环的厚度,默认为9,可被thickness值覆盖
    android:tint="color"                    // 给shape着色
    android:tintMode=["src_in" | "src_atop" | "src_over" | "add" | "multiply" | "screen"] // 着色类型
    android:useLevel=["true" | "false"]     // 较少用,一般设为false,否则图形不显示。为true时可在LevelListDrawable使用
    android:visible=["true" | "false"] >
    <!-- 圆角 -->
    <corners
        android:radius="integer"            // 圆角半径,设置下面四个属性时,对应的位置属性会被覆盖
        android:topLeftRadius="integer"     // 左上角圆角半径
        android:topRightRadius="integer"    // 右上角圆角半径
        android:bottomLeftRadius="integer"  // 左下角圆角半径
        android:bottomRightRadius="integer" // 右下角圆角半径
        />
    <!-- 渐变 -->
    <gradient
        android:type=["linear" | "radial" | "sweep"]// 渐变类型,线性、放射性、扫描性;默认为线性
        android:angle="integer"             // 渐变角度,渐变类型为linear时有效;默认为0,从左至右渐变,角度逆时针方向计算,角度需要时45的整数倍数
        android:centerColor="integer"       // 渐变中间位置颜色
        android:startColor="color"          // 渐变开始位置颜色
        android:endColor="color"            // 渐变结束位置颜色
        android:centerX="float"             // 设置渐变中心的X坐标,取值区间[0,1],默认为0.5,即中心位置
        android:centerY="float"             // 设置渐变中心的Y坐标,取值区间[0,1],默认为0.5,即中心位置
        android:gradientRadius="integer"    // type为放射性渐变radial时有效,渐变的半径
        android:useLevel=["true" | "false"] // 与shape中该属性的一致
        />
    <!-- 内边距 -->
    <padding
        android:left="integer"              // 左边距
        android:top="integer"               // 上边距
        android:right="integer"             // 右边距
        android:bottom="integer"            // 下边距
        />
    <!-- 大小 -->
    <size
        android:width="integer"             // 图形宽度
        android:height="integer"            // 图形高度
        />
    <!-- 填充 -->
    <solid
        android:color="color"               // 图形的填充色
        />
    <!-- 描边 -->
    <stroke
        android:width="integer"             // 描边的宽度
        android:color="color"               // 描边的颜色
        android:dashWidth="integer"         // 虚线宽度
        android:dashGap="integer"           // 虚线间隔
        />
</shape>

因为shape中的属性更的是组合使用,所以举例没法单独只使用一个标签。

solid、corners和stroke

经常使用的就是solid、corners、stroke这三个标签

下面是这个Button背景的xml代码

<?xml version="1.0" encoding="utf-8"?>
<shape
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">

    <corners android:radius="10dp"/>

    <solid android:color="#008577"/>

    <stroke
        android:width="3dp"
        android:color="#D81B60"
        android:dashWidth="10dp"
        android:dashGap="5dp"/>
</shape>

solid就是整个区域的填充色

corners则是控制了背景的4个角的圆角半径

stroke控制了描边的属性,color表示线的颜色;width描边的宽度,其实就是图中红线的高度;dashWidth表示虚线中红线的宽度;dashGap表示虚线间隔宽度,也就是红色之间的间隔距离

corners属性覆盖

再来看看corners标签的属性覆盖规则。下图中将radius属性设置为10dp,并同时设置给其他的四个属性不同的值,从图中可以看出四个属性将都radius属性覆盖了。

具体的xml代码:

<?xml version="1.0" encoding="utf-8"?>
<shape
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">

    <corners
        android:bottomLeftRadius="30dp"
        android:bottomRightRadius="40dp"
        android:radius="10dp"
        android:topLeftRadius="0dp"
        android:topRightRadius="20dp"/>

    <solid android:color="#008577"/>
</shape>

padding

再来看看padding标签的作用,图片如下:

第一行的TextView的背景没有设置padding属性;第二行则是使用了padding标签,不低的地方在于有无内容的差别。shape的xml代码如下:

<?xml version="1.0" encoding="utf-8"?>
<shape
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">

    <solid android:color="#008577"/>
    <padding
        android:bottom="10dp"
        android:left="10dp"
        android:right="10dp"
        android:top="10dp"/>

</shape>

shape中虽然使用了padding标签,但是在被设置该背景的view上依然可以通过修改paddingLeft等对应的相关属性进行覆盖。

size

size控制图形的宽高尺寸,对应属性也就android:width和android:height

但是,在作为背景的情况下,shape的size属性并不是完全有效的,最后的显示效果还是会由view来决定,size只是在view的宽(或高)为wrap_content且显示内容后的实际大小不超过size所设置的值得时候才会生效。这个效果其实比较类似minWidth
和minHeight两个属性的效果。

下图中,左边的内容没有超出,按照size所设置的大小显示,而右边的内容超出了size所设置的大小,按照实际大小显示。这里比较简单,不上代码了。

不要这样就觉得size没有什么作用,例如下图

截图的原因,图片被放大了,这些圆使用ImageView的src显示时,ImageView只需要设置wrap_content就可以按照设置的大小显示了。

当然,如果你修改了ImageView的大小,那shape的显示就会根据ImageView的scaleType来决定最后的显示效果了。

gradient

不太清楚gradient标签的使用频率,毕竟是UI效果,实际工作中涉及到渐变的时候基本都是设计小姐姐直接给图的。不过不妨碍我们了解gradient的用法。

android:type

这里先说android:type属性,表示渐变类型,有三个可以选择的属性linear线性、radial放射性、sweep扫描性,默认为线性

下图,从左到右的中android:type分别是linear线性、radial放射性、sweep扫描性

  • 线性:比较好理解,就是一条线从左到右,准确的说是从一边到另一边渐变,而这个方向是可以调整的,后面会说明
  • 放射性:从一个中心点向外渐变
  • 扫描性:这个比较像雷达,具体看图,我描述不出来,不过也是有中心点的

渐变颜色

先以默认渐变类型来看下主要的三个属性:

  • android:centerColor 渐变中间位置的颜色
  • android:endColor 渐变结束位置的颜色
  • android:startColor 渐变开始位置的颜色

上图中第一个按钮,设置了开始颜色是红的,中间颜色是白色,结束颜色是绿的,具体代码如下:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <gradient
        android:centerColor="#FFFFFF"
        android:startColor="#D81B60"
        android:endColor="#008577"/>
    <corners android:radius="10dp"/>
</shape>

android:angle

start -> end默认的方向是从左到右,通过设置android:angle属性可以修改这个方向,0 -> 360 增加时,方向是逆时针调整的。上图中,第2、3、4个按钮的shape的android:angle属性值分别是90、180、270。注意,android:angle属性需要时45的整数倍。

android:centerX和android:centerY

这两个属性是控制渐变中心位置的坐标的,取值区间[0,1],默认为0.5

上图中,三种渐变类型都设置了中心点的位置,radial和sweep两种类型比较好理解,就是控制中心在图形中的的相对位置。

linear类型也会受到这两个属性的改变,因为是线性所以作用应该是对线的中心点的控制,我试了一下,centerX或者centerY都能控制渐变的中心点,而且不受android:angle属性影响。但是centerX和centerY同时使用时,不存在属性前后顺序而导致属性覆盖的的情况,只有centerX起作用。

android:gradientRadius

设置渐变的半径,当type为放射性渐变radial时有效,差异效果如下图:

当solid和gradient同时使用时,在代码中比较靠下的标签会覆盖之前的标签属性

shape

shape的标签属性都了解完了,接着就是shape自身的属性了

前面举例的都是矩形,也就是android:shape="rectangle"的情况下,接下来看看其他三种类型,

首先是line,因为虚线和实线相差两个属性,就直接用虚线举例了

下面是具体的xml代码:

<?xml version="1.0" encoding="utf-8"?>
<shape
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="line">
    <stroke
        android:width="3dp"
        android:color="#D81B60"
        android:dashWidth="10dp"
        android:dashGap="5dp"/>
    <size android:height="10dp"/>
</shape>

经过查资料和一些测试,使用line类型有些限制

  • 必须使用stroke标签,view显示的高度必须大于(必须是大于,等于都不行)stroke标签中width宽度属性的值。也就是说,view所设置的高度需要大于虚线高度;如果使用了size标签,size的height也必须比大于虚线高度
  • 4.0 以上手机,默认使用硬解码,虚线在真机会显示成实线,可以关闭页面的硬件加速,也可以给相关的view设置成软解layerType="software"

再来是oval,虽然表示的是椭圆,其实只需要显示图形的view是正方形就可以显示成圆了。之前在使用size就是以圆为例子举例的,在ImageView的src中使用shape,xml代码如下:

<?xml version="1.0" encoding="utf-8"?>
<shape
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="oval">
    <solid android:color="#008577"/>
    <size android:width="20dp"
          android:height="20dp"/>
</shape>

当然,也可以通过限制view的宽高,来保证显示圆。

oval和rectangle在使用其他的属性方面规则基本一直,只是corners标签不在具有任何效果。

最后是ring,关于ring的属性比其他的三种图形要多出4个属性

  • innerRadius,shape为ring时有效,内环半径
  • innerRadiusRatio,shape为ring时有效,内环的厚度比,即环的图形宽度与内环半径的比例,按照这个比例计算内环半径,默认为3,可被innerRadius值覆盖
  • thickness,shape为ring时有效,环的厚度
  • thicknessRatio,shape为ring时有效,环的厚度比,即环的图形宽度与环的厚度的比例,按照这个比例计算环的厚度,默认为9,可被thickness值覆盖

上图中第一个环的xml代码如下:

<?xml version="1.0" encoding="utf-8"?>
<shape
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:useLevel="false"
    android:shape="ring">
    <solid android:color="#008577"/>
    <size android:width="100dp"
          android:height="100dp"/>
</shape>

可以看到并没有设置什么其他的属性,只是设置了solid和size,这基本就是默认的一个环了,内环半径和环的厚度都是分别是按3和9的比例计算的,后面会具体讲解这两个值得意思。

第二个环,则是添加android:thickness="5dp"属性,设置了环的厚度为5dp

第三个环,则是添加android:innerRadius="10dp"属性,设置内环半径为10dp

第四个环,可以算解释了innerRadiusRatio和thicknessRatio两个属性,具体xml代码如下:

<?xml version="1.0" encoding="utf-8"?>
<shape
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:useLevel="false"
    android:innerRadiusRatio="3"
    android:thicknessRatio="100"
    android:shape="ring">
    <solid android:color="#008577"/>
    <size android:width="200dp" android:height="200dp"/>
</shape>

innerRadiusRatio和thicknessRatio两个属性都是对比view最终显示的大小来计算的,可以对应着两个公式:
innerRadius = view.width / innerRadiusRatio
thickness = view.width / thicknessRatio

这样以来着两个属性就比较好理解了

对于ring的使用还有几点需要注意:

  • 必须写useLevel="false",否则不显示
  • 如果android:thickness和android:innerRadius设置了值,无论view的大小如何设置,将不会影响图片大小,这有可能会导致图形显示不全。
  • padding和corners两个标签不起作用,其他的标签可以正常的使用
Android Drawable - Shape Drawable使用详解 用xml实现一些形状图形, 或则颜色渐变效果, 相比PNG图片, 占用空间更小;相比自定义View, 实现起来更加简单. 阅读详情

相关推荐

3D模型 在Android Studio 中的应用

[](()2.1 请求权限 在清单文件中,我们需要为应用获取互联网权限以便通过URL加载3D模型;并获取相机许可来打开3D模型。 同时这里我们要用Google Play的AR服务来帮助我们使用3D模型 [](()2.2 构建配置 添加UX库和assets库以动态添加3D模型 implementati Android开源项目《ali1024.coding.net/public/P7/Android/git》 on ‘com.google.ar.sceneform.ux:sceneform-ux:1..

m0_69439527的博客 3332

Android中shape的用法详解

用代码生成图片,而且图片能随意的更改,既方便又节省空间,下面就介绍用shape生成自定义图形的方法 步骤: 1. 在res/drawable下新建一个xml文件; 2. 在代码中引用这个xml文件,引用方式和图片一样。 shape drawable xml文件中定义的一个几何图形,定义在res/drawable/目录下,文件名filename称为访问的资源ID 在代码中通

Justin2107的专栏 2万+

Android Drawable - Shape Drawable使用详解(附图)

如有问题或者疑问,可以邮件mkosto@foxmail.com

itgoyo的博客 1万+

Android shape属性大全

在Android开发中,我们可以使用shape定义各种各样的形状,也可以定义一些图片资源。相对于传统图片来说,使用shape可以减少资源占用,减少安装包大小,还能够很好地适配不同尺寸的手机。 样式效果图 1. shape属性 shape属性基本语法示例: <?xml version="1.0" encoding="utf-8"?> <shape xmlns:...

沐 白 3565

【5年Android从零复盘系列之二】Android中使用xml代码绘制Drawable资源图 详解

1.Drawable Android中,所有能显示出来的都抽象定义为一个父类Drawable[可绘制的图形], 包括但不限于图片、色块、画板、背景等。 1.1 Drawable资源 drawable文件放在res目录的各个drawable目录下; \res\drawable一般放的是描述性的xml文件; 图片文件一般放在具体分辨率的mipmap-xdpi或drawable-xdpi目录下; 1.2 Drawable多状态图形 StateListDrawable可以根据不同的手势状态变化图形,对应xml中

Cupster 7709

从零开始:用摩尔线程S4000运行开源AI项目的完整流程

本文详细介绍了如何使用摩尔线程S4000 GPU从零开始运行开源AI项目的完整流程,包括硬件选择、驱动安装、容器化环境配置以及典型AI项目的实战部署。通过性能优化技巧,显著提升推理速度,适合开发者快速上手国产GPU的AI应用开发。

weixin_29231725的博客 580

android 右上角 xml,【Android Drawable系列】- shape xml属性详解

Android Drawable系列日常开发中,一些简单的背景或者图形都会使用xml的shape标签完成,经常使用在按钮的背景上。shape的优点还是很多的文件比切图小节约内存支持拉伸shape的属性虽然比较简单,但是也能绘制出一些比较复杂的形状概览首先来看看shape标签所支持的标签以及属性,如下图:Shape左侧是shape标签的自身属性,右侧是shape标签所支持的标签和标签的属性。下面是一...

weixin_33364945的博客 422

HFSS实战:手把手教你设计微带发夹线滤波器(附完整参数计算流程)

本文详细介绍了使用HFSS设计微带发夹线滤波器的完整流程,包括参数计算、HFSS建模和优化策略。通过实战案例,帮助读者掌握微波滤波器设计的核心技巧,特别是奇偶模阻抗计算和HFSS仿真中的关键设置,适用于通信系统设计和射频工程应用。

weixin_29251567的博客 441

Android Drawable 目录下的 XML 图形文件详解

4个角(不拉伸)4条边(单向拉伸)1个中心区域(双向拉伸)

百锦再的博客 1万+

Python多版本共存指南:用CMD命令一键切换3.6和3.8解释器(含pip使用技巧)

本文详细介绍了在Windows CMD环境下实现Python多版本(如3.6和3.8)共存与一键切换的完整方案。通过文件重命名策略、环境变量优化和自定义脚本,开发者可快速切换Python解释器版本,并管理各版本独立的pip依赖库,确保项目环境隔离与兼容性。

weixin_29035405的博客 423

用《Flappy Bird》游戏带你搞懂强化学习:从Q-learning到DQN的保姆级实战

本文通过《Flappy Bird》游戏实战,详细讲解了从Q-learning到DQN的强化学习技术。从环境搭建、Q表格构建到深度Q网络(DQN)的实现,逐步展示如何训练AI自主玩游戏。文章包含代码示例、训练技巧和性能优化方法,帮助读者深入理解强化学习的核心概念和应用。

weixin_42526415的博客 347

Android 形状绘制 —— shape详解

目录一、定义二、文件位置三、编译资源的数据类型四、资源引用五、语法六、元素1、shape2、corners3、gradient4、padding5、size6、solid7、stroke七、示例 一、定义 这是一种在 XML 文件中定义的通用形状。 二、文件位置 res / drawable / filename.xml 文件名用作资源 ID。 三、编译资源的数据类型 指向 GradientDrawable 的资源指针。 四、资源引用 在 Java 中:R.drawable.filename 在 XML

notthin的博客 1万+

避坑指南:SAP成本中心分割结构配置常见错误及解决(含KA06/KL01前置步骤)

本文深入解析了SAP成本中心会计中分割结构配置的关键步骤与常见错误。重点强调了配置前必须通过KA06创建次级成本要素(类别42)和通过KL01创建活动类型这两个核心前置步骤,并详细剖析了在OKES中定义分割规则及版本时的高频报错原因与解决方案,帮助顾问和运维人员有效规避配置陷阱,确保成本分摊的准确性。

pear55的博客 865

Android XML shape 标签使用详解

Android XML shape 标签使用详解   一个android开发者肯定懂得使用 xml 定义一个 Drawable,比如定义一个 rect 或者 circle 作为一个 View 的背景。但是,也肯定也有人在能使用 Drawable 的地方选择使用一张 png 图(或者是一张 .9 图)作为 View 的背景,因为后者把问题交给 UI 设计人员去了,省事。当然,使用图片这种在项目中也很...

从事移动开发八年,csdn博客专家,阿里云特邀专家,华为云云享专家,高级网络信息安全工程师,大数据工程师(高级),python技术开发(高级),HarmonyOS 应用开发者高级认证,现在某学校任教。 5961

【异常】API 速率限制报错问题全流程排查与解决指南 API rate limit reached. Please try again later.

摘要: 本文针对大模型API开发中常见的速率限制报错("API rate limit reached")提供全流程解决方案。首先解析该报错的本质是服务端对高频调用的保护机制,通过三步排查法确认根因:客户端请求频率超出账户阈值。提出三级解决方案:1)临时等待限流周期重置;2)升级付费账户提高调用配额;3)构建多模型容灾架构实现自动切换。建议生产环境优先采用容灾方案,通过备用API节点保障业务连续性,同时平衡不同模型服务的成本与性能。

奶爸的编程之路,也就一周冷个三天 1422

人形机器人构成及成本估算(附报告)

这些执行器本身由螺杆、减速器、电机、传感器、滚珠轴承和编码器等组件构成。实现线性与旋转运动互转。人形机器人的运动系统可以由电驱动、液压驱动或气动驱动组成,但由于电驱动具有更高的精度和更快的响应速度,正在成为主流设计方案。执行器:NSK、THK、Harmonic Drive、Leaderdrive、Nidec、Moons。由螺杆、减速器、电机、传感器、轴承和编码器组成(如上为Tesla Optimus执行器设计示意)。传感器:Keyence、Robosense、Sensata、ATI、TE、Sony。

具身机器人和通用AI 1772

Android中Shape Drawable在xml中的使用

关于Shape使用的官方文档: http://developer.android.com/guide/topics/resources/drawable-resource.html#Shape Android中常常使用shape来定义控件的一些显示属性,下面是Shape中的所有属性及一个简单的示例: <shape xmlns:android="http://schemas.

ygc87的专栏 1万+

嵌入式SDIO 总线面试题及参考答案

SDIO 的 4 位总线模式是一种提高数据传输效率的工作模式。在传统的 1 位总线模式下,数据只能通过一根数据线(DAT0)进行传输,这限制了数据传输的带宽和速度。而在 4 位总线模式下,DAT0 - DAT3 这 4 根数据线同时用于数据传输,相当于在同一时间内可以传输 4 倍于 1 位模式的数据量,从而显著提高了数据传输的带宽和速度。要通过 CMD6 命令将 SDIO 总线从当前模式切换到 4 位总线模式,需要遵循以下步骤:第一步,主设备需要确保 SDIO 卡支持 4 位总线模式。

大模型大数据攻城狮的专栏 1717

Android Drawable,Shape,ColorMatrix

Drawable的子类有StateListDrawable,NinePatchDrawable、BitmapDrawable、AnimationDrawable。

3022

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

安卓背景background之shape属性介绍

通过使用 Shape Drawable,您可以方便地创建具有各种样式的背景,增强应用的视觉效果。

mantouzai的博客 975

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

PouchDB 3.3.1 发布解读:`db.info()` 适配器调试字段、实时复制修复与同步网关支持

PouchDB 3.3.1 是一个在常规月度发布计划之前紧急推出的"快速版"(quick release),核心目标是尽快修复若干关键 bug 并交付给开发者。本篇文章围绕该版本的技术要点展开:实时复制冲突修订、内存/localStorage 适配器插件、SQLite 插件与 Web Worker 支持问题,以及随版本新增的 `db.info()` 适配器级调试信息(`idb_attachment

gitblog_01418的博客 809

android drawable xml文件 之 shape

一个android开发者肯定懂得使用 xml 定义一个 Drawable,比如定义一个 rect 或者 circle 作为一个 View 的背景。但是,也肯定也有人在能使用 Drawable 的地方选择使用一张 png 图(或者是一张 .9 图)作为 View 的背景,因为后者把问题交给 UI 设计人员去了,省事。当然,使用图片这种在项目中也很常见,如果不考虑 apk 大小,内存占用问题的话,是没...

yangxinyue315的专栏 736

Android之shape属性设置

1、shape属性 shape属性示例: <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape=["rectangle" | "oval" | "line" | "ring"]...

lizhong 6000

【Android UI】Android Drawable XML 标签解析

在 Android 中,drawable XML 用来定义各种可绘制资源(形状、状态、层级、渐变等)。

特立独行的博客 1421

Android xml中定义的shape与Drawable之间的关系

最近遇到一个项目,需要设置非常多不同颜色的小标签: 等等; 这种情况很多同学第一反应肯定是写xml来定义shape完成这样的样式; 可是他们没有想过,如果非常多的颜色的时候,那都要为每一份颜色写一个xml文件吗?当然,这样的代码是没法让人接受的。 笔者在这样的情况下尝试了很多种写法: 1.重写TextView, 在onDraw中重新生成一份Bitmap来作为背景。

u014592587的专栏 5160
上一篇: Android手机导出的已安装的APK到电脑
下一篇: 图解 23 种设计模式
killerjava
博客等级 码龄22年 180粉丝 7原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值