安卓基础之《(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>
相关推荐
REDcker33 分钟前
Android WebView 版本升级方案详解
android·音视频·实时音视频·webview·js·编解码
麦兜*35 分钟前
【springboot】图文详解Spring Boot自动配置原理:为什么@SpringBootApplication是核心?
android·java·spring boot·spring·spring cloud·tomcat
le16161644 分钟前
Android 依赖种类及区别:远程仓库依赖、打包依赖、模块依赖、本地仓库依赖
android
lxysbly1 小时前
psp模拟器安卓版带金手指
android
云上凯歌2 小时前
02 Spring Boot企业级配置详解
android·spring boot·后端
hqiangtai2 小时前
Android 高级专家技术能力图谱
android·职场和发展
aqi002 小时前
FFmpeg开发笔记(九十七)国产的开源视频剪辑工具AndroidVideoEditor
android·ffmpeg·音视频·直播·流媒体
stevenzqzq2 小时前
Android Koin 注入入门教程
android·kotlin
炼金术3 小时前
SkyPlayer v1.1.0 - 在线视频播放功能更新
android·ffmpeg
用户276038157813 小时前
鲲鹏+昇腾:开启 AI for Science 新范式——基于PINN的流体仿真加速实践
android