美文网首页
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