Android XML Drawable

一、简介

  Android把任何可绘制在屏幕上的图形图像都称为drawable。drawable是一种抽象的图形,一个继承了Drawable类的子类,或者是一张位图图像。

二、示例

   1. 下面通过一些例子感受一下,利用ShapeDrawable创建彩色图形,既然XML Drewable与特定的像素密度无关,因此无需考虑特定像素密度的目录。Drawable的XML文件默认放于res/drawable目录下,利用Drawable和Shape创建一个圆角按钮。创建button_shape_normal.xml文件。

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <shape
 3     xmlns:android="http://schemas.android.com/apk/res/android"
 4     android:shape="rectangle">
 5
 6     <corners android:radius="10dp" />
 7     <gradient
 8         android:angle="90"
 9         android:endColor="#cccccc"
10         android:startColor="#acacac" />
11
12 </shape>

  在style.xml中,修改如下:

1 <style name="Remote_control_btn_style">
2         <item name="android:layout_width">0dp</item>
3         <item name="android:layout_height">match_parent</item>
4         <item name="android:background">@drawable/button_shape_normal</item>
5     </style>

  这样一个圆角按钮就完成了。

  2. 下面完成一个按钮在默认状态下的样式,及在点击按钮后的变化样式,再创建一个按钮点击后的Drewable文件button_shape_pressed.xml:

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <shape
 3     xmlns:android="http://schemas.android.com/apk/res/android"
 4     android:shape="rectangle">
 5
 6     <corners android:radius="10dp" />
 7
 8     <gradient
 9         android:angle="270"
10         android:endColor="#cccccc"
11         android:startColor="#acacac" />
12
13 </shape>

  创建交互式的按钮shape(button_shape.xml):

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <selector
 3     xmlns:android="http://schemas.android.com/apk/res/android">
 4
 5     <item android:drawable="@drawable/button_shape_pressed"
 6           android:state_pressed="true" />
 7     <item android:drawable="@drawable/button_shape_normal"
 8           android:state_pressed="false" />
 9
10 </selector>

  再次修改样式文件style.xml,如下所示:

1 <style name="Remote_control_btn_style">
2         <item name="android:layout_width">0dp</item>
3         <item name="android:layout_height">match_parent</item>
4         <item name="android:background">@drawable/button_shape</item>
5 </style>

  这样,一个通过xml绘制的按钮就完成了。

三、总结

  使用两张图片做了个selector (tab_item_home.xml):

1 <?xml version="1.0" encoding="utf-8"?>
2 <selector
3     xmlns:android="http://schemas.android.com/apk/res/android">
4     <item android:drawable="@drawable/tab_ic_norm_home" />
5     <item android:state_pressed="true" android:drawable="@drawable/tab_ic_sel_home" />
6 </selector>

  为ImageView的src或者background设置样式(itemView.xml),

1 <ImageView
2         android:id="@+id/tab_item_icon"
3         android:layout_width="wrap_content"
4         android:layout_height="wrap_content"
5         android:layout_margin="3dp"
6         android:src="@drawable/tab_item_home"/>

  在运行后,点击总是没有效果,那么,问题出在哪里了呢?

  在做出如下修改,点击效果就恢复正常了,

1 <?xml version="1.0" encoding="utf-8"?>
2 <selector
3     xmlns:android="http://schemas.android.com/apk/res/android">
4     <item android:state_pressed="true" android:drawable="@drawable/tab_ic_sel_home" />
5     <item android:state_selected="true" android:drawable="@drawable/tab_ic_sel_home"/>
6     <item android:drawable="@drawable/tab_ic_norm_home" />
7 </selector>

  PS: 设置按钮selected状态,在代码中可以动态设置被选中后的持续效果。

  总结:default(默认)/不点击的图片应该放在最下边,才会有点击效果,不然,只会显示default图片。

四、核心图像资源子类

  • BitmapDrawable对象:用于创建、平铺、拉伸以及对齐位图。
  • ColorDrawable对象:用于用颜色填充指定的其它各类对象。
  • GradientDrawable对象:用于创建并绘制自定义渐变。
  • AnimationDrawable对象:用于创建基于帧的动画。
  • TransitionDrawable对象:用于创建交叉淡入淡出过渡。
  • NinePatchDrawable对象:用于通过定义可拉伸区域来创建可缩放位图。
时间: 2024-10-06 10:12:08

Android XML Drawable的相关文章

android开发(33) 自定义 listView的分割线( 使用xml drawable画多条线)

我遇到这样一个场景,我需要自定义 listView的分割线,而这个分割线是由两条线组成的,在使用xml drawable时遇到了困难. 注释:画两条线是为了实现 凹陷的效果,在绘图中一条暗线紧跟着一条明显会给人视觉上产生明显的“沟”的感觉. 因为我的背景是透明(背景渐变)的,直接用图片来实现效果不好. 看看效果: 使用 layer-list 来实现. layer-list 可以包含多个item,每个item堆叠在一起. layer-list  的item可以设置 间距,使用  android:b

Android入门——Drawable与对应的资源xml的应用

引言 Android 中的Drawable是一个抽象的概念,换言之所有能被画出来的都可以定义成Drawable(A Drawable is a general abstraction for "something that can be drawn." ).所以Android应用中使用最为广泛和最灵活的资源,不仅仅可以直接使用.png..9.png..gif..jpg等图片作为资源,还可以使用多种XML文件. 一.Drawable概述 Drawable同时也是一个抽象类,我们在Andr

[转]android中drawable资源的解释及例子

原文链接:         http://blog.csdn.net/wode_dream/article/details/38584693 文章中的内容参考Dev Guide中的Drawable Resources,英文好的朋友可以直接去读英文.总结这篇文章的目的是自己在使用drawable资源遇到一些问题跟大家分享下,同时整理下自己对drawable的理解. drawable资源共有10种,包括Bitmap文件.Nine-Path文件.Layer List.State List.Level

Android - 抑制lint的Android XML的警告:tools:ignore

抑制lint的Android XML的警告:tools:ignore 本文地址:http://blog.csdn.net/caroline_wendy Android的XML经常会出现警告,对于一个良好的程序,应该认真对待所有的警告. 除非我们可以确认警告,才可以排除. 显示所有警告的方法:Analyze -> Inspect Code; 就可以检查出所有的警告: 抑制警告使用: tools:ignore. // 忽略全部 xmlns:tools="http://schemas.andro

android的drawable资源

1.android中可以通过xml文件配置资源,比如字符串啦,整数拉.浮点数等等,当然也可以配置图片资源和选择器,下面我们就看看几种图片资源的配置. @1矩形方框,带渐变色的配置代码 <?xml version="1.0" encoding="utf-8"?><shape xmlns:android="http://schemas.android.com/apk/res/android">     <!--设置黑色边

Android 自定义Drawable

1.使用BitmapShader实现图片圆角 public class CornerDrawable extends Drawable { private Paint mPaint; private Bitmap bmp; private RectF rectF; public CornerDrawable(Bitmap bmp) { this.bmp = bmp; BitmapShader shader = new BitmapShader(bmp, Shader.TileMode.CLAMP

【Android XML】Android XML 转 Java Code 系列

最近在公司做一个项目,需要把Android界面打包进jar包给客户使用.对绝大部分开发者来说,Android界面的布局以XML文件为主,并辅以少量Java代码进行动态调整.而打包进jar包的代码,意味着无法通过常规的getResources(),getString()等方法来快速的获取资源,因为这些资源都是在apk安装的时候初始化生成的.为了满足客户的需求,笔者开始在网上寻找各种解决方案.结果如下: 1.apk 主体包方案 实现方法:安装一个新的apk,新apk和主apk使用android:sh

Android之drawable state各个属性详解

我们在定义一个drawable的时候可以通过xml定义的drawable对象.它使得一个图片能在不同的状态下显示不同的图案,比如一个Button,它有pressed,focused,或者其它状态,通过使用state list drawable,你就可以为每种状态提供不同的图片. 先看一个范例: XML file saved at res/drawable/button.xml: [java] view plaincopyprint? <?xml version="1.0" enc

Android 自带图标库 android.R.drawable

在xml文件中调用. android:title="@string/secure_connect"android:orderInCategory="100"android:icon="@android:drawable/ic_menu_search" android:drawableRight="@android:drawable/arrow_down_float"/> 程序中调用. setIcon(android.R.