安卓基础之《(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>
相关推荐
Android系统攻城狮2 小时前
Android ALSA驱动进阶之设置访问掩码snd_pcm_access_mask_set:用法实例(九十九)
android·pcm·音频进阶·alsa驱动·android驱动
hudawei9962 小时前
kotlin冷流热流的区别
android·开发语言·kotlin·flow··冷流·热流
Digitally2 小时前
如何将安卓应用导出到电脑/PC
android
正在走向自律2 小时前
智能体时代:字节跳动Coze平台应用开发完全指南
android·rxjava·知识库·智能体·coze·字节·coze平台
万能的小裴同学2 小时前
Android Studio 2025版JNI配置
android·ide·android studio
草莓熊Lotso2 小时前
Python 流程控制完全指南:条件语句 + 循环语句 + 实战案例(零基础入门)
android·开发语言·人工智能·经验分享·笔记·后端·python
モンキー・D・小菜鸡儿2 小时前
Android11 新特性与适配指南
android·kotlin·安卓新特性
习惯就好zz3 小时前
在安卓设备上测试 AWS S3 下载速度的完整指南
android·aws·速度测试
_李小白11 小时前
【Android FrameWork】延伸阅读:SurfaceFlinger线程
android