Android中Drawable资源的应用

1、图片资源
•图片资源是Android应用中最简单的Drawable资源,只需要把png、jpg、gif等格式的图片放在/res/drawable-xxx目录下,Android SDK会自动加载该图片并在R资源类中生成索引。
•访问方法:
–R.drawable.file_name
–@drawable/file_name
注意: Android 不允许图片资源的文件名中出现大 写字母,且不能以数字开头。
2、bitmap资源
•bitmap可以指定显示一个图片资源,并设置该图片的显示方式:比如平铺、拉伸及显示的位置。以下是可指定的属性。
–android:src:指向图片资源
–android:gravity:图片的显示的位置(只有在没有设置titleMode或者titleMode设置为disabled才有用)
–android:titleMode:显示方式
•disabled – 如果没有设置gravity则拉伸,否则根据         gravity设置的位置显示
•clamp – 固定位置
•repeat – 平铺
•mirror – 镜子式平铺
例如:首先在res下建立drawable目录在建立drawable_btn.xml文件设置图片为拉伸显示
<?xml version="1.0" encoding="utf-8"?>
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
    android:src="@drawable/logo"
    android:gravity="center"
    android:tileMode="disabled"
     >
    

</bitmap>

使用该xml文件
android:background="@drawable/drawable_btn"

3、StateListDrawable资源

StateListDrawable用于组织多个Drawable资源,并且可以设置其中Drawable对象随目标组件状态的改变而自动切换。比如按钮未按下和按下时分别设置不同的背景图片。
例如:建立drawable_edittext_focus.xml文件档组建获得焦点时字体颜色为#f00失去焦点时为#00f
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
	<item android:state_focused="true" android:color="#f00"></item>
	<item android:state_focused="false" android:color="#f0f"></item>    
    
</selector>
使用:
<EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textColor="@drawable/drawable_edittext_focus" />
•state的所有状态:
state_active
是否处于激活状态
state_checkable
是否处于可勾选状态
state_checked
是否处于已勾选状态
state_enabled
是否处于可用状态
state_first
是否处于开始状态
state_focus
是否处于已得到焦点状态
state_last
是否处于结束状态
state_middle
是否处于中间状态
state_pressed
是否处于已被按下状态
state_selected
是否处于已被选中状态
state_window_focused
是否窗口已得到焦点状态

4、LayerDrawable资源
•叠加图片
–比如有三张图片共同组成图像

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

    <item>
	<!-- 图片左上对齐 -->
        <bitmap
            android:gravity="left|top"
            android:src="@drawable/title_button_group_left_normal" >
        </bitmap>
    </item>
	<!-- 图片与上一图片的左距离 -->
    <item android:left="104px">
        <bitmap
            android:gravity="left|top"
            android:src="@drawable/title_button_group_middle_normal" >
        </bitmap>
    </item>
    <item android:left="209px">
        <bitmap
            android:src="@drawable/title_button_group_right_normal" >
        </bitmap>
    </item>
</layer-list>
5、ShapeDrawable资源
•ShapeDrawable资源用于定义一个基本的几何图形(如矩形、圆形、线条等等),定义ShapeDrawable资源的根元素为<shape …/>,
有如下属性。–android:shape=[rectangle(矩形)|oval(椭圆)|line(线条)|ring(圆形)]
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle" >

    <!-- 背景填充色 -->
    <solid android:color="#ff0" />
    <!-- 内边距 -->
    <padding
        android:bottom="10dp"
        android:left="10dp"
        android:right="10dp"
        android:top="10dp" />
    <!--
		边框设定
		width:边框大小
		color:边框颜色


    -->
    <stroke
        android:width="2dp"
        android:color="#00f" />
    <!--
		设置圆角矩形
		radius:四个圆角的大小。也可以单独设置

    -->
    <corners android:radius="10dp" />
    <!--
    	设置背景渐变色
	    startColor:开始颜色
	    endColor:结束颜色
	    centerColor:中间颜色
    -->
    <gradient
        android:endColor="#80ff00ff"
        android:startColor="#ffff0000" />

</shape>
使用:
<EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/drawable_edittext_border"
        android:textColor="@drawable/drawable_edittext_focus" />


设置渐变色背景
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle" >
    
    
<!--
    设置背景渐变色
    startColor:开始颜色
    endColor:结束颜色
    centerColor:中间颜色
     -->
<gradient android:centerColor="#efefef" android:endColor="#111111" android:startColor="#222221" /> </shape>

使用方法同上给组建添加背景颜色
6、ClipDrawable资源
•ClipDrawable可以从其他位图上截取一个片段显示。可指定如下属性。
–android:drawable:指定截取的源Drawable对象
–android:clipOrientation:指定截取的方向
–android:gravity:指定截取时的对齐方式。
在代码中可以通过setLevel方法来设置截取的区域大小。当level为0时,截取的图片为空;当level为10000时,截取整个图片。
例如:从中间向两边水平截取
<clip xmlns:android="http://schemas.android.com/apk/res/android"
    android:clipOrientation="horizontal"
    android:drawable="@drawable/logo"
    android:gravity=“center" >
</clip>

代码设置截取大小:
ImageView clipImg = (ImageView) findViewById(R.id.main_test_drawable_clip_img);
		clipImg.getDrawable().setLevel(6000);

使用截取后的图片:
<ImageView
        android:id="@+id/main_test_drawable_clip_img"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/drawable_clip_img" />

如果能灵活的吧这些资源利用起来,做出的界面一定会出乎意料的炫。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值