美文网首页
Drawable小结

Drawable小结

作者: dev晴天 | 来源:发表于2018-08-01 16:07 被阅读0次

简介:Drawable 这个东西我们平时开发的时候经常会使用,无论是我们放至资源图片到drawable文件夹,或者是自己写个相关的xml文件(常见的selector)放入drawable下 ,或者直接操作相关的Drawable类,都会经常使用。


安卓中提供很多Drawable ,相关的xml标签 以及对应的类如下(借用在网上看的一篇文章的图片 哈哈😄) image.png
(左面是xml标签 有面是对应的类)

如上图:我们最常见的selector在首位一目了然,我们就先介绍selector的基本使用,(在xml中使用selector标签搞几个常见的drawable图案效果)

需求:平时我们在项目中会碰到按钮的默认背景色是一种颜色,点击按钮会是一种颜色,松开后又恢复了默认背景颜色。诸如此类的等等,还有按钮还会有圆角,按钮的边框会是金色的颜色等等。

接下来我们就按照需有来介绍下(相关的属性,标签在这里就不写了,回以详细的注释来介绍😄)

1 首先建立相关的文件(步骤给出的完整小白也会嘿嘿!)
首先在res的drawable文件夹下 点击new ,点击Drawable resource file,创建一个xml文件,

image.png

如下图我创建了一个文件(默认的跟元素为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

等等还有很多就不再总结了太多了总结不完,网上文章很多可以看看其他的。😂。

相关文章

网友评论

      本文标题:Drawable小结

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