Android中各类drawable资源使用方法

1.颜色Drawable:

<color xmlns:android="http://schemas.android.com/apk/res/android"
    android:color="#ff0000"/>

2.形状Drawable

Android目前支持以下的形状类型,使用时需要将它们指定为shape类型,形状包括:line(线条)oval(椭圆)rectangle(矩形)ring(圆)

以下代码为矩形Drawable

<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <!--内部填充色-->
    <solid android:color="#ff060000" />
    <!--边框填充色以及边框宽度-->
    <stroke
        android:width="10dp"
        android:color="#00ff00" />
    <!--边框弧度-->
    <corners android:radius="15dp" />
    <!--上下左右边距-->
    <padding
        android:bottom="10dp"
        android:left="10dp"
        android:right="10dp"
        android:top="10dp" />
</shape>

3.渐变Drawable

渐变Drawable是使用<gradient>标记并且作为形状Drawable定义中的子节点定义的

类型包括线性渐变、辐射渐变、扫描渐变,具体代码如下:

<?xml version="1.0" encoding="utf-8"?>
<!--线性渐变-->
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle"
    android:useLevel="false">
    <gradient
        android:angle="45"
        android:centerColor="#000000"
        android:endColor="#ffffff"
        android:startColor="#ffffff"
        android:type="linear"
        android:useLevel="false" />
</shape>

<?xml version="1.0" encoding="utf-8"?>
<!--辐射渐变的椭圆-->
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="oval"
    android:useLevel="false">
    <gradient
        android:centerColor="#000000"
        android:endColor="#ffffff"
        android:gradientRadius="300"
        android:startColor="#ffffff"
        android:type="radial"
        android:useLevel="false" />
</shape>

<?xml version="1.0" encoding="utf-8"?>
<!--辐射渐变的圆环-->
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="ring"
    android:useLevel="false"
    android:innerRadiusRatio="3"
    android:thicknessRatio="8">
    <gradient
        android:startColor="#ffffff"
        android:endColor="#ffffff"
        android:centerColor="#000000"
        android:useLevel="false"
        android:type="sweep"/>
</shape>

4.变换Drawable:

ScaleDrawable:在<scalse>标记内,使用scaleHeight和scaleWidth属性分别定义相对于原始Drawable的包围框的目标高度和宽度。使用scaleGravity属性可以控制可缩放图像的锚点。

<?xml version="1.0" encoding="utf-8"?>
<scale xmlns:android="http://schemas.android.com/apk/res/android"
    android:drawable="@android:drawable/sym_def_app_icon"
    android:scaleHeight="80dp"
    android:scaleWidth="80dp"
    android:scaleGravity="center_horizontal|center_vertical">

</scale>

RotateDrawable:在<rotate>标记内,使用fromDegrees和toDegrees分别定义围绕轴心点的其实和结束角度。使用pivotX和pivotY属性定义轴心点,并使用nn%符号指定Drawable的宽度和高度的百分比

<?xml version="1.0" encoding="utf-8"?>
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
    android:drawable="@android:drawable/sym_def_app_icon"
    android:fromDegrees="0"
    android:pivotX="50%"
    android:pivotY="50%"
    android:toDegrees="90"></rotate>

然后需要在使用时候调用如下方法进行设置:

        ImageView scalingImage = (ImageView) findViewById(R.id.scale_view);
        ImageView rotateImage = (ImageView) findViewById(R.id.rotate_view);
        //将图像朝向最终方向旋转50%
        rotateImage.setImageLevel(5000);
        //将图像缩小为最终大小的50%
        scalingImage.setImageLevel(5000);

5.层Drawable

在此标记内,可以使用每个<item>子节点内的Drawable属性定义要添加的Drawable。每个Drawable将按照索引顺序堆叠,数组的第一个item将放在栈的最底部。

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@android:drawable/button_onoff_indicator_off"></item>
    <item android:drawable="@android:drawable/button_onoff_indicator_on"></item>
    <item android:drawable="@android:drawable/presence_audio_busy"></item>
</layer-list>

6.状态列表Drawable(选择器)

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@android:drawable/ic_btn_speak_now" android:state_pressed="true"></item>
    <item android:drawable="@android:drawable/button_onoff_indicator_on" android:state_focused="true"></item>
    <item android:drawable="@android:drawable/presence_audio_busy" android:state_window_focused="false"></item>
    <item android:drawable="@android:drawable/editbox_dropdown_dark_frame"></item>
</selector>

其中:

android:state_pressed    按下或者没有按下

android:state_focused    有焦点或者没有焦点

android:state_hovered    API11引入,光标在view上悬停或不悬停

android:state_selected    选中或者没有选中

android:state_checked    是选中状态或者不是选中状态

android:state_checkable    能或者不能被选中

android:state_enabled    启用或者禁用

android:state_activated    激活或者未激活

android:state_window_focused    父窗口有焦点或者没有焦点

7.级别列表Drawable

<?xml version="1.0" encoding="utf-8"?>
<level-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:drawable="@android:drawable/presence_audio_busy"
        android:maxLevel="0"></item>
    <item
        android:drawable="@android:drawable/alert_dark_frame"
        android:maxLevel="1"></item>
    <item
        android:drawable="@android:drawable/alert_light_frame"
        android:maxLevel="2"></item>
    <item
        android:drawable="@android:drawable/arrow_down_float"
        android:maxLevel="3"></item>
</level-list>
        ImageView ivLevelList = (ImageView) findViewById(R.id.level_list_drawable);
        //显示第几个索引值
        ivLevelList.setImageLevel(3);



你可能感兴趣的:(drawable,选择器,select)