android xml 插入 android drawable xml_android xml 插入


image.png


Drawable

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

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

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

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

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


android xml 插入 android drawable xml_android xml 插入_02


image.png


Drawable的分类

主要包括:


android xml 插入 android drawable xml_javascript_03


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背景还是会被拉伸