简介:Drawable 这个东西我们平时开发的时候经常会使用,无论是我们放至资源图片到drawable文件夹,或者是自己写个相关的xml文件(常见的selector)放入drawable下 ,或者直接操作相关的Drawable类,都会经常使用。
一
(左面是xml标签 有面是对应的类)
如上图:我们最常见的selector在首位一目了然,我们就先介绍selector的基本使用,(在xml中使用selector标签搞几个常见的drawable图案效果)
需求:平时我们在项目中会碰到按钮的默认背景色是一种颜色,点击按钮会是一种颜色,松开后又恢复了默认背景颜色。诸如此类的等等,还有按钮还会有圆角,按钮的边框会是金色的颜色等等。
接下来我们就按照需有来介绍下(相关的属性,标签在这里就不写了,回以详细的注释来介绍😄)
1 首先建立相关的文件(步骤给出的完整小白也会嘿嘿!)
首先在res的drawable文件夹下 点击new ,点击Drawable resource file,创建一个xml文件,
如下图我创建了一个文件(默认的跟元素为selector标签)
image.png
2 编写xml布局:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- item标签 selector根元素的子标签 -->
<!-- item 有很多属性其中常见的属性: 1 state_xxx 属性值一般为布尔值。 2 drawable 属性 值可为资源图片 或者资源颜色
如果我使用了shape 子标签 就不使用drawable 属性了
state_xxx: 一般我们常见的 state_enabled 是否可用状态(控件都适合)
state_checked 是否勾选时(适合选择类的按钮 例如 rdiobutton)
state_pressd 是否摁下(适合按钮)
-->
<item android:state_pressed="true">
<!-- 如果我们不设置状态变化 那么 不必在 item里面添加state_xxx 直接使用drawable 就行 或者item里面添加shape 画个自定义图案-->
<shape android:shape="rectangle">
<!-- shape 标签 可以在item下 也可以直接替换selector
其下的子标签 solid 汉语意思 固体 此标签一般设置为内填充 如上你会发现我们在shape 标签内添加了shape属性
值 设置为了rectangle 表示我们画的图形为矩形 (还可以为line 线,oval 椭圆 ,等等)此时solid作用与矩形内部
corner 圆角 设置圆角 属性radius 设置圆角的半径
size 大小 设置图案的大小 可设置宽高
stroke 作用的是边框(如我们橘红色的边框) 可设置边框宽度 边框颜色
-->
<solid android:color="@android:color/holo_blue_light" />
<corners android:radius="10dp" />
<size android:width="80dp" android:height="40dp" />
<stroke android:width="3dp" android:color="@android:color/holo_orange_dark" />
</shape>
</item>
>
<item android:state_pressed="false">
<shape android:shape="rectangle">
<solid android:color="@android:color/holo_red_dark" />
<corners android:radius="10dp" />
<size android:width="80dp" android:height="40dp" />
<stroke android:width="3dp" android:color="@android:color/holo_orange_dark" />
</shape>
</item>
>
<!-- 还有其他的标签属性这一个例子也讲不完 不过几乎可以应付常见简单的需求了-->
</selector>
xml视图预览效果:(xml中我们设置了不按压时为桔红色)
image.png
3 使用这个xml文件十分简单在你的按钮xml布局中设置背景色为此布局文件即可
image.png实现效果:(未点击的时候为桔红色,点击时蓝色,松开为橘红 此处就不添加gif图片了,高了点击松开的截图 凑合着看 😄😄😄)
image.png
二 如上图的标签transition scale rotate 的属性 与补间动画的属性相似
大致原理为 这些标签包括shape标签 变化我们自己的图案
如下用rotate搞个倒三角 设置给Textview
<?xml version="1.0" encoding="utf-8"?>
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
android:fromDegrees="45"
android:toDegrees="45"
android:pivotX="135%"
android:pivotY="15%">
<shape android:shape="rectangle">
<solid android:color="@android:color/holo_orange_dark"/>
</shape>>
</rotate>
image.png
image.png
详细的动画属性参考(很详细😄):
https://blog.csdn.net/liao277218962/article/details/48134833
三 Tint 着色的 Drawable
使用bitmap元素时,可以使用 android:tint 属性为其着色。
默认情况下,待着色的图片资源,会将其所有有颜色地方,都着色成我们指定的颜色,但是会保留透明度。
例如使用前:
image.png接下来使用Tint属性(简单的用ImageView显示):
<?xml version="1.0" encoding="utf-8"?>
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
android:src="@drawable/icon_hiyuanquanyi"
android:tint="@color/colorAccent">
</bitmap>
image.png
等等还有很多就不再总结了太多了总结不完,网上文章很多可以看看其他的。😂。
网友评论