Android Studio之图形Drawable

图形Drawable

Android图形的基本概念和几种常见图形的使用方法,主要包括状态列表图形StateListDrawable

的定义与使用、形状图形ShapeDawable的定义与使用、九宫格图片(点九图片)的制作与适用场景等。

Android把所有显示出来的图形都抽象为Drawable(可绘制的)。这里的图形不止是图片,还包括色块、画板、背景等。

drawable文件放在res目录的drawable目录下。\res\drawable一般存放的是描述性的XML文件,图片文件一般放在具体分辨率的drawable目录下。例如:

drawable-ldpi里面存放低分辨率的图片(如240×320),现在基本没有这样的智能手机了。

drawable-mdpi里面存放中等分辨率的图片(如320×480),这样的智能手机已经很少了。

drawable-hdpi里面存放高分辨率的图片(如480×800),一般对应4英寸~4.5英寸的手机(但不绝对,同尺寸的手机有可能分辨率不同,手机分辨率就高不就低,因为分辨率低了屏幕会有模糊的感觉)。

drawable-xhdpi里面存放加高分辨率的图片(如720×1280),一般对应5英寸~5.5英寸的手机。

drawable-xxhdpi里面存放超高分辨率的图片(如1080×1920),一般对应6英寸~6.5英寸的手机。

drawable-xxxhdpi里面存放超超高分辨率的图片(如1440×2560),一般对应7英寸以上的平板电脑。

基本上,分辨率每加大一级,宽度和高度就要加大二分之一或三分之一像素。

XML布局文件中引用drawable文件,可使用“@drawable/***”这种形式,如background属性、ImageViewImageButtonsrc属性、TextViewButtondrawableTop系列属性都可以引用drawable文件。

在代码中引用drawable文件可分为两种情况:

1)使用setBackgroundResourcesetImageResource方法,可直接在参数中指定drawable文件的资源ID,例如“R.drawable.***”

2)使用setBackgroundDrawablesetImageDrawablesetCompoundDrawables等方法,参数是Drawable 对象,这时得先从资源文件中生成Drawable对象,示例代码如下:

// 从资源库里的图片文件apple.png获取图形对象

Drawable drawable = getResources().getDrawable(R.drawable.apple);

状态列表图形:StateListDrawable

一般drawable是静态图形,如Button按钮的背景在正常情况下是凸起的,在按下时是凹陷的,从按下到弹起的过程,用户便能知道点击了这个按钮。根据不同的触摸情况变更图形显示,这种情况会用到Drawable的一个子类StateListDrawable,该子类在XML文件中定义不同状态时呈现图形列表。

要想在项目中创建状态图形的XML文件,则需右击drawable目录,然后在右键菜单中依次选择New→Drawable resource file,即可自动生成一个空的XML文件。

StateListDrawable不仅用于Button控件,而且可以用于其他拥有不同状态的控件,取决于对StateListDrawable状态类型的定义。状态类型的取值说明如下:

state_pressed

是否按下

按钮button

state_checked

是否勾选

单选框 RadioButton、复选框CheckBox

state_focused

是否获取焦点

文本编辑框EditText

state_selected

是否选中

各个控件均可

形状图形

还有一种常用的XML图形文件,是描述形状定义的图形—— shape图形。

形状图形的定义文件以shape元素为根节点。根节点下定义了6个节点:corners(圆角)、gradient(渐变)、padding(间隔)、size(尺寸)、solid(填充)、stroke(描边),各节点的属性值主要是长宽、半径、角度以及颜色。

1. shape

shapeXML文件的根节点,用来描述该形状图形是哪种几何图形。下面是shape节点的常用属性说明。

shape:字符串类型,图形的形状。

Rectangle矩形。默认值
Oval椭圆。此时corners节点会失效
line直线。此时必须设置stroke节点,不然会报错
Ring圆环

2. corners

cornersshape的下级节点,用来描述4个圆角的规格定义。若无corners节点,则表示没有圆角。下面是corners节点的常用属性说明。

bottomLeftRadius:像素类型,左下圆角的半径。

bottomRightRadius:像素类型,右下圆角的半径。

topLeftRadius:像素类型,左上圆角的半径。

topRightRadius:像素类型,右上圆角的半径。

radius:像素类型,圆角半径(若有上面4个圆角半径的定义,则不需要radius定义)。

3. gradient

gradientshape的下级节点,用来描述形状内部的颜色渐变定义。若无gradient节点,则表示没有渐变 效果。下面是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. padding

padding:是shape的下级节点,用来描述形状图形与周围视图的间隔大小。

若无padding节点,则表示四周 不设间隔。下面是padding节点的常用属性说明:

  • bottom:像素类型,与下边的间隔。
  • left:像素类型,与左边的间隔。
  • right:像素类型,与右边的间隔。
  • top:像素类型,与上边的间隔。
5. size
size shape 的下级节点,用来描述形状图形的尺寸大小(宽度和高度)。若无 size节点,则表示宽高自适应。下面是 size节点的常用属性说明:
  • height:像素类型,图形高度。
  • width:像素类型,图形宽度。

6. solid

solid是shape的下级节点,用来描述形状图形内部的填充色彩。若无solid节点,则表示无填充颜色。下 面是solid节点的常用属性说明:

  • color:颜色类型,内部填充的颜色。
  7. stroke

stroke是shape的下级节点,用来描述形状图形四周边线的规格定义。若无stroke节点,则表示不存在描边。下面是stroke节点的常用属性说明。

  • color:颜色类型,描边的颜色。
  • dashGap:像素类型,每段虚线之间的间隔。
  • dashWidth:像素类型,每段虚线的宽度。
  • width:像素类型,描边的厚度。若dashGap和dashWidth有一个值为0,则描边为实线。

在实际开发中,常用的有3个节点:corners(圆角)、solid(填充)和stroke(描边)。shape根节点的 属性一般不用设置(默认矩形就好了)。

  • 18
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

东成2022

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值