安卓基础之《(7)—中级控件(1)图形定制》

==========图形定制==========

一、图形Drawable

1、Drawable类型表达了各种各样的图形,包括图片、色块、画板、背景等

2、包含图片在内的图形文件放在res目录的各个drawable目录下,其中drawable目录一般保存描述性的XML文件,而图片文件一般放在具体分辨率的drawable目录下

/res/drawable下有图片和XML文件,XML文件也是图片,它是矢量图

例如:

(1)drawable-ldpi:里面存放低分辨率的图片(如240x320),现在没有这样的智能手机了

(2)drawable-mdpi:里面存放中分辨率的图片(如320x480),这样的智能手机已经很少了

(3)drawable-hdpi:里面存放高分辨率的图片(如480x800),一般对应4英寸~4.5英寸的手机

(4)drawable-xhdpi:里面存放加高分辨率的图片(如720x1280),一般对应5英寸~5.5英寸的手机

(5)drawable-xxhdpi:里面存放超高分辨率的图片(如1080x1920),一般对应6英寸~6.5英寸的手机

(6)drawable-xxxhdpi:里面存放超超高分辨率的图片(如1440x2560),一般对应7英寸以上的平板电脑

3、android自动适配

基本上,分辨率每加大一级,宽度和高度就要增加二分之一或三分之一像素。如果各目录存在同名图片,android就会根据手机的分辨率分别适配对应文件夹里的图片

在XML布局文件中引用图形文件可使用"@drawable/不含扩展名的文件名称"这种形式,各视图的background属性、ImageView和ImageButton的src属性、TextView和Button四个方向的drawable***系列属性都可以引用图形文件

二、形状图形

1、Shape图形又称为形状图形,它用来描述常见的几何图形,包括矩形、圆角矩形、圆形、椭圆等等

2、形状图形的定义文件是以shape标签为根节点的XML描述文件,它支持四种类型的形状

(1)rectangle:矩形。默认值

(2)oval:椭圆。此时corners节点会失效

(3)line:直线。此时必须设置stroke节点,不然会报错

(4)ring:圆形

3、shape根节点下定义了6个节点

(1)size(尺寸)

常用属性:

height:像素类型,图形高度

width:像素类型,图形宽度

(2)stroke(描边)

常用属性:

color:颜色类型,描边的颜色

dashGap:像素类型,每段虚线之间的间隔

dashWidth:像素类型,每段虚线的宽度。若dashGap和dashWidth有一个值为0,则描边为实线

width:像素类型,描边的厚度

(3)corners(圆角)

常用属性:

bottomLeftRadius:像素类型,左下圆角的半径

bottomRightRadius:像素类型,右下圆角的半径

topLeftRadius:像素类型,左上圆角的半径

topRightRadius:像素类型,右上圆角的半径

radius:像素类型,4个圆角的半径(若有上面4个圆角半径的定义,则不需要radius定义)

(4)solid(填充)

常用属性:

color:颜色类型,内部填充的颜色

(5)padding(间隔)

常用属性:

top:像素类型,与上方的间隔

bottom:像素类型,与下方的间隔

left:像素类型,与左边的间隔

right:像素类型,与右边的间隔

(6)gradient(渐变)

常用属性:

angle:整型,渐变的起始角度。为0时表示时钟的9点位置,值增大表示往逆时针方向旋转。例如,值为90表示6点位置,值为180表示3点位置,值为270表示0点/12点位置

type:字符串类型,渐变类型

|--------|---------------------------|
| 渐变类型 | 说明 |
| linear | 线性渐变,默认值 |
| radial | 放射渐变,起始颜色就是圆心颜色 |
| sweep | 滚动渐变,即一个线段以某个端点为圆心做360度旋转 |

centerX:浮点型,圆心的X坐标。当android:type="linear"时不可用

centerY:浮点型,圆心的Y坐标。当android:type="linear"时不可用

gradientRadius:整型,渐变的半径。当android:type="radial"时需要设置该属性

centerColor:颜色类型,渐变的中间颜色

startColor:颜色类型,渐变的起始颜色

endColor:颜色类型,渐变的终止颜色

useLevel:布尔类型,设置为true为无渐变色、false为有渐变色

4、创建drawable

/res/drawable目录,右键 --> New --> Drawable Resource File

shape_rect_gold.xml

XML 复制代码
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">

    <!-- 指定形状内部的填充颜色 -->
    <solid android:color="#ffdd66"/>
    <!-- 指定了形状轮廓的粗细与颜色 -->
    <stroke
        android:width="1dp"
        android:color="#aaaaaa"/>
    <!-- 指定了形状四个圆角的半径 -->
    <corners android:radius="10dp"/>

</shape>

shape_oval_rose.xml

XML 复制代码
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="oval">

    <!-- 指定了形状内部的填充颜色 -->
    <solid android:color="#ff66aa"/>
    <!-- 指定了形状轮廓的粗细与颜色 -->
    <stroke
        android:width="1dp"
        android:color="#aaaaaa"/>

</shape>
相关推荐
雮尘1 小时前
手把手带你玩转Android gRPC:一篇搞定原理、配置与客户端开发
android·前端·grpc
ktl2 小时前
Android 编译加速/优化 80%:一个文件搞定,零侵入零配置
android
alexhilton13 小时前
使用FunctionGemma进行设备端函数调用
android·kotlin·android jetpack
冬奇Lab16 小时前
InputManagerService:输入事件分发与ANR机制
android·源码阅读
张小潇19 小时前
AOSP15 Input专题InputManager源码分析
android·操作系统
RdoZam21 小时前
Android-封装基类Activity\Fragment,从0到1记录
android·kotlin
奥陌陌1 天前
android 打印函数调用堆栈
android
用户985120035831 天前
Compose Navigation 3 深度解析(二):基础用法
android·android jetpack
恋猫de小郭1 天前
Android 官方正式官宣 AI 支持 AppFunctions ,Android 官方 MCP 和系统级 OpenClaw 雏形
android·前端·flutter
黄林晴1 天前
Android 17 Beta 2,隐私这把锁又拧紧了
android