学习之鸿蒙&Android学习

Android之Drawable介绍

2021-06-24  本文已影响0人  Lee_5566
image.png

Drawable

Drawable是一种可以在Canvas上进行绘制的抽象的概念,颜色、图片等都可以是一个Drawable。

Drawable可以通过XML定义,或者通过代码创建。

Android中Drawable是一个抽象类,每个具体的Drawable都是其子类。

简单来讲,其可以理解为:图像。

它不全是图片,通过颜色也可以构造出各种各样的图片效果,它一般就是当做View的背景使用,有两种方式,一种是通过XML,一种是通过代码的方式。

image.png

Drawable的分类

主要包括:


image.png
BitmapDrawable

表示一种图片,可以直接引用原始图片或者通过XML进行描述

例如:

<?xml version="1.0" encoding="utf-8"?>
<bitmap
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:src="@color/colorPrimary"
    android:antialias="true"
    android:dither="true"
    android:filter="true"
    android:gravity="center"
    android:mipMap="false"
    android:tileMode="disabled"
    />

Bitmap的属性介绍:

属性 作用 备注
android:src 图片资源 ID
android:antialias 图片抗锯齿-图片平滑,清晰度降低 应该开启
android:dither 开启抖动效果-用于高质量图片在低质量屏幕上保存较好的显示效果(不会失真) 应该开启
android:filter 开启过滤-在图片尺寸拉伸和压缩时保持较好的显示效果 应该开启
android:gravity 图片小于容器尺寸时,对图片进行定位-选项之间 用‘ ’来组合使用
android:mipMap 纹理映射-图像处理技术 默认false
android:tileMode 平铺模式-repeat单纯重复、mirror镜面反射、clamp图片四周像素扩散 默认disable关闭
NinePatchDrawable

自动根据宽高进行缩放且不会失真

实际使用,可以直接引用图片或者通过XML描述。

实例:

<?xml version="1.0" encoding="utf-8"?>
<nine-patch
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:src="@color/colorPrimary"
    android:antialias="true"
    android:dither="true"
    android:filter="true"
    android:gravity="center"
    android:mipMap="false"
    android:tileMode="disabled"
    />
ShapeDrawable

ShapeDrawable通过颜色构造的图形、,可以是纯色的图形,也可以是有渐变效果的图形。

shape标签创建的Drawable实体是GradientDrawable

实例:

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

    <corners
        android:radius="10dp"
        android:topLeftRadius="10dp"
        android:topRightRadius="10dp"
        android:bottomLeftRadius="10dp"
        android:bottomRightRadius="10dp"/>
    <gradient
        android:angle="45"
        android:centerX="30"
        android:centerY="30"
        android:centerColor="@color/colorAccent"
        android:endColor="@color/colorPrimary"
        android:startColor="@color/colorPrimaryDark"
        android:gradientRadius="20"
        android:type="linear"
        android:useLevel="true" />
    <padding
        android:left="10dp"
        android:top="10dp"
        android:right="10dp"
        android:bottom="10dp" />
    <size
        android:width="200dp"
        android:height="200dp" />
    <solid
        android:color="@color/colorPrimary"/>
    <stroke
        android:width="10dp"
        android:color="@color/colorAccent"
        android:dashWidth="5dp"
        android:dashGap="3dp"/>

</shape>

属性介绍:

属性/标签 作用 备注
android:shape 图形的形状:rectangle矩形、oval椭圆、line横线、ring圆环 corners标签对应于矩形;line和ring通过stroke指定线的宽度和颜色; ring圆环有五个特殊的shape属性
corners标签 四个角的角度 -
gradient标签 渐变效果-android:angle表示渐变角度,必须为45的倍数 android:type指明渐变类型:linear线性,radial径向、sweep扫描
solid标签 纯色填充 与gradient标签排斥
stroke标签 描边 有描边线和虚线
size标签 表示shape的固有大小,并非最终显示的大小 没有时getIntrinsicWidth返回-1;能指明Drawable的固有宽高,但如果作为View背景还是会被拉伸
上一篇下一篇

猜你喜欢

热点阅读