android drawable 应用

转载 2012年03月29日 16:23:47

转自:http://www.moandroid.com/?p=784

Android SDK提供了一个强大的类Drawable,Drawable这个抽象类到底代表了什么,如何使用?Drawable是个很抽象的概念,通过简单的例子程序来学习它,理解它。先看个简单的例子,使用Drawable的子类ShapeDrawable来画图,如下:
public class testView extends View {
private ShapeDrawable mDrawable;
public testView(Context context) {
super(context);
int x = 10;
int y = 10;
int width = 300;
int height = 50;
mDrawable = new ShapeDrawable(new OvalShape());
mDrawable.getPaint().setColor(0xff74AC23);
mDrawable.setBounds(x, y, x + width, y + height);
}
protected void onDraw(Canvas canvas)
super.onDraw(canvas);
canvas.drawColor(Color.WHITE);//画白色背景
mDrawable.draw(canvas);
}
}
程序的运行结果,显示如下:

ShapDrawable 简要解析:
  1. 创建一个OvalShape(一个椭圆);
  2. 使用刚创建的OvalShape构造一个ShapeDrawable对象mDrawable
  3. 设置mDrawable的颜色;
  4. 设置mDrawable的大小;
  5. 将mDrawable画在testView 的画布上;

这个简单的例子可以帮我们理解什么是Drawable,Drawable就是一个可画的对象,其可能是一张位图(BitmapDrawable),也可能是一个图形(ShapeDrawable),还有可能是一个图层(LayerDrawable),我们根据画图的需求,创建相应的可画对象,就可以将这个可画对象当作一块“画布(Canvas)”,在其上面操作可画对象,并最终将这种可画对象显示在画布上,有点类似于“内存画布“。

上面只是一个简单的使用Drawable的例子,完全没有体现出Drawable的强大功能。Android SDK中说明了Drawable主要的作用是:在XML中定义各种动画,然后把 XML当作Drawable资源来读取,通过Drawable显示动画。下面举个使用TransitionDrawable 的例子,创建一个Android工程,然后再这个工程的基础上修改,修改过程如下:
1、去掉layout/main.xml中的TextView,增加ImagView,如下:
<ImageView
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:tint=”#55ff0000″
android:src=”@drawable/my_image”/>

2、创建一个XML文件,命名为expand_collapse.xml,内容如下:
<?xml version=”1.0″ encoding=”UTF-8″?>
<transition xmlns:android=”http://schemas.android.com/apk/res/android”>
<item android:drawable=”@drawable/image_expand”/>
<item android:drawable=”@drawable/image_collapse”/>
</transition>
需要3张png图片,存放到res\drawable目录下,3张图片分别命名为:my_image.png、image_expand.png、image_collapse.png。

3、修改Activity中的代码,内容如下:
LinearLayout mLinearLayout;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mLinearLayout = new LinearLayout(this);
ImageView i = new ImageView(this);
i.setAdjustViewBounds(true);
i.setLayoutParams(new Gallery.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
mLinearLayout.addView(i);
setContentView(mLinearLayout);
Resources res = getResources();
TransitionDrawable transition =
(TransitionDrawable) res.getDrawable(R.drawable.expand_collapse);
i.setImageDrawable(transition);
transition.startTransition(10000);
}

4、如果修改的没有错误,运行程序,结果显示如下:
初始图片
TransitionDrawable-begin
过渡中的图片
TransitionDrawable-mid
最后的图片
TransitionDrawable-end

屏幕上动画显示的是: 从图片image_expand.png过渡到image_collapse.png,也就是我们在expand_collapse.xml中定义的一个transition动画。看完这个例子,你对Drawable的理解是否又深入些?这里提供这个程序的源代码,供大家下载,可以在这个例子的基础上去体会其他的Drawable,来加深对Drawable的理解。

总结说明

通过以上2个例子程序,相信对Drawable会有一定的认识了,在以后的篇幅中会介绍更多的例子,更加深入的学习和理解Drawable。具体还有哪些Drawable,大家到Android SDK去深入学习吧



android开发 drawable中XML的相关应用

一。网络资源案例(关于selector用法):android背景选择器selector用法汇总(2011-04-19 13:40:00) 1.创建xml文件,位置:drawable/xxx.xm...
  • fngy123
  • fngy123
  • 2014年01月13日 12:29
  • 695

Android应用开发——Animation Drawable

Animation Drawable可以让你把一系列的图片像幻灯片一样一张一张地显示在屏幕上。Drawable Animation的基类是AnimationDrawable. 非常值得注意的一点是,...

android 自定义Drawable Shape 的应用

Android应用中res/drawable文件夹下定义的xml文件内容(二)selector

selector selector的作用可以理解为将不同的显示效果应用到一个控件背景。而什么情况下应显示什么效果将根据控件当前状态变化来控制。可用状态有以下这几种,当然不是每个控件都有这么多状态,而是...

android开发 drawable中XML的相关应用

一。网络资源案例(关于selector用法):android背景选择器selector用法汇总(2011-04-19 13:40:00) 1.创建xml文件,位置:drawable/xxx.xm...
  • zkq1989
  • zkq1989
  • 2014年08月12日 17:52
  • 326

Android中应用程序drawable图片资源占用内存的统计

在实际项目中,我们可能需要统计我们应用程序中drawable下的图片或文本在都载入的情况,最多会占用多少内存 ,以对其做定性分析。  关于Android中图片占用内存的计算,请参照《Andr...
  • hudashi
  • hudashi
  • 2013年05月03日 14:25
  • 3907

Android应用资源---绘制资源类型(Drawable)(二)

Nine-Patch NinePatch资源是一个PNG图片,在这个图片内能够定义拉伸区域,当在View对象的内容超过了普通图片的边框时,Android会缩放这个拉伸区域。通常,把这种类型的图片作为...

Android中Drawable资源的应用

1、图片资源 •图片资源是Android应用中最简单的Drawable资源,只需要把png、jpg、gif等格式的图片放在/res/drawable-xxx目录下,Android SDK会自动加载该...

Android 的drawable state 应用(selector)

我们在定义一个drawable的时候可以通过xml定义的drawable对象。它使得一个图片能在不同的状态下显示不同的图案,比如一个Button,它有pressed,focused,或者其它状态,通过...

android drawable高级应用

Drawable资源是对图像的一个抽象,你可以通过getDrawable(int)得到并绘制到屏幕上。这里有几种不同类型的Drawable:  Bitmap File      一个Bitma...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:android drawable 应用
举报原因:
原因补充:

(最多只允许输入30个字)