Android之Drawable介绍

作者: Lee_5566 | 来源:发表于2021-06-24 20:21 被阅读0次
    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背景还是会被拉伸

    相关文章

      网友评论

        本文标题:Android之Drawable介绍

        本文链接:https://www.haomeiwen.com/subject/rlcgyltx.html