[Android]Shape Drawable

简介: [Android]Shape Drawable

ShapeDrawable可以理解为通过颜色来构造的图形

 

<android.widget.Button
       android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Button"
        android:background="@drawable/shape"/>
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid android:color="@color/black"></solid>
    <corners android:radius="45dp"></corners>
    <gradient
        android:angle="90"
        android:startColor="@color/white"
        android:centerColor="@color/purple_200"
        android:endColor="@color/teal_200"
        ></gradient>
   <stroke
       android:width="2dp"
       android:color="@color/purple_700"
       ></stroke>
</shape>

各个属性的含义

android:shape

表示图片的形状,有四个选项:rectangle(矩形)、oval(椭圆)、line(横线)和ring(圆环),它的默认值是矩形。另外line和ring这两个选项必须要通过<stroke>标签来指定线的宽度和颜色等信息。

针对ring这个形状,有5个特殊的属性:android:innerRadius、android:thickness、android:immerRadiusRatio、android:thicknessRatio和android:useLevel,它们的含义如表所示。

Value Desciption
android:innerRadius 圆环的内半径,和android:innerRadiusRatio同时存在时,以android:innerRadius为准
android:thickness 圆环的厚度,即外半径减去内半径的大小,和android thicknessRatio同时存在时,以 android:thickness为准
android:innerRadiusRatio 内半径占整个Drawable宽度的比例,默认值为9。如果为n,那么内半径-宽度/n
android:thicknessRatio 厚度占整个Drawable宽度的比例,默认值为3.如果为n,那么厚度-宽度/n
android:useLevel 一般都应该使用false,否则有可能无法到达预期的显示效果,除非它被当作LevelListDrawable 来使用

<corners>

表示shape的四个角的角度。它只适用于矩形shape,这里的角度是指圆角的程度,用ps来表示,它有如下5个属性:

android:radius——为四个角同时设定相同的角度,优先级较低,会被其他四个属性覆盖:

android:topLeftRadius——设定最上角的角度;

android:topRightRadius——设定右上角的角度;

android:bottomLeftRadius——设定最下角的角度;

android:bottomRightRadius——设定右下角的角度。

<gradient>

它与<solid>标签是互相排斥的,其中solid表示纯色填充,而gradient则表示渐变效果,gradient有如下几个属性:

android:angle——渐变的角度,默认为0,其值必须为45的倍数,0表示从左到右, 90表示从下到上,具体的效果需要自行体验,总之角度会影响渐变的方向:

android:centerX——渐变的中心点的横坐标

android:centerY——渐变的中心点的纵坐标,渐变的中心点会影响渐变的具体效果:

android:startColor——渐变的起始色;

android:centerColor——渐变的中间色;

android:endColor——渐变的结束色;

android:gradientRadius——渐变半径,仅当android:type="radial"时有效:

android:useLevel——一般为false,当Drawable作为StateListDrawable使用时为true:

android:type——渐变的类别,有linear(线性渐变)、radial(径向渐变)、sweep(扫描线渐变)三种,其中默认值为线性渐变。

<solid>

这个标签表示纯色填充,通过android:color即可指定shape中填充的颜色。

<stroke>

Shape的描边,有如下几个属性:

android:width——描边的宽度,越大则shape的边缘线就会看起来越粗;

android:color—描边的颜色:

android:dashWidth——组成虚线的线段的宽度:

android:dashGap——组成虚线的线段之间的间隔,间隔越大则虚线看起来空隙就越大

<padding>

表示包含它的View的空白,有四个属性:android:left、android:top、android:right和android:bottom。

<size>

shape的大小,有两个属性:android:width和android:height。<size>标签设置的宽/高就是ShapeDrawable的固有宽/高,但是作为View的背景时,shape还会被拉伸或者缩小为View的大小。

目录
相关文章
|
8月前
|
XML Android开发 数据格式
Android中利用shape属性自定义设置Button按钮
Android中利用shape属性自定义设置Button按钮
137 0
|
3月前
|
XML 编解码 Android开发
Android各种各样的Drawable-更新中
Android各种各样的Drawable-更新中
58 0
|
4月前
|
Android开发
[Android]Layer Drawable
[Android]Layer Drawable
24 0
|
4月前
|
XML Android开发 数据格式
[Android]Bitmap Drawable
[Android]Bitmap Drawable
29 0
|
4月前
|
XML 编解码 Android开发
Android Studio App开发入门之图形定制Drawable的讲解及实战(附源码 超详细必看)
Android Studio App开发入门之图形定制Drawable的讲解及实战(附源码 超详细必看)
48 1
|
9月前
|
存储 JavaScript 数据可视化
Android自动生成Shape资源文件,迈出可视化脚手架第一步(上)
这章我们就进入到了撸码时刻,逐步来开发出一个一个应对我们Android场景的功能,这章对应的功能是,Shape的自动生成
103 0
|
8月前
|
Android开发
Android 通过Vector Drawable绘制心形
Android 通过Vector Drawable绘制心形
54 0
|
8月前
|
XML Android开发 数据格式
Android drawable 与 mipmap 文件夹存放图片有区别
Android drawable 与 mipmap 文件夹存放图片有区别
60 0
|
8月前
|
Android开发
Android Shape 详细使用
Android Shape 详细使用
59 0
|
9月前
|
数据可视化 Android开发
Android自动生成Shape资源文件(下)
这个Shape,在正常的开发中,无非就是,实心的,空心的,渐变的,左上右下带角度的,那么针对常见的几种方式,我们做好模板,然后根据你在可视化工具的选择,动态的进行改变即可。
Android自动生成Shape资源文件(下)