`
javayestome
  • 浏览: 1040954 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

Android UI开发专题(三) 各种Drawable

阅读更多

本次我们主要讲解Android平台下的各种Drawable,这里在SDK的android.graphics.drawable包下面可以看到有各种Drawable类多达十几种,它们到底之间有什么关系和区别呢?

一、AnimationDrawable

顾名思义该类主要表示动画的图形类,可以实现逐帧播放的效果,下面代码示例如下

1. 定义一个cwj_animation.xml 放到res/drawable 目录下,其中定义的属性duration为延时,单位为毫秒,而oneshot属性表示是否仅播放一次,内容为:

<animation-list android:id="selected" android:oneshot="false">
<item android:drawable="@drawable/cwj0" android:duration="30" />
<item android:drawable="@drawable/cwj1" android:duration="30" />
<item android:drawable="@drawable/cwj2" android:duration="30" />
<item android:drawable="@drawable/cwj3" android:duration="30" />
<item android:drawable="@drawable/cwj4" android:duration="30" />
<item android:drawable="@drawable/cwj5" android:duration="30" />
</animation-list>

2.在java中调用也很简单

ImageView img = (ImageView)findViewById(R.id.cwj_image); //首先声明一个ImageView对象在xml布局文件中
img.setBackgroundResource(R.drawable.cwj_animation); //我们刚才的animation定义的xml文件
AnimationDrawable frameAnimation = (AnimationDrawable) img.getBackground(); //构造AnimationDrawable对象
frameAnimation.start() //开始播放动画

3. AnimationDrawable类还提供了一些常用的方法如下:

void stop() 停止
void addFrame(Drawable frame, int duration) 添加一帧,类似xml中的布局
Drawable getFrame(int index) 返回某帧的Drawable图形
int getNumberOfFrames() 返回总共动画帧数
boolean isOneShot() 是否仅播放一次
boolean isRunning() 是否正在播放

二、BitmapDrawable

在Android平台中对于缩放、变形的Bitmap对象由BitmapDrawable类表示,其构造方法也很简单,由于该类继承于android.graphics.drawable.Drawable,相对Drawable而言提供了更多的有关位图的操作方法,主要的构造方法如下:

BitmapDrawable() //直接构造一个空的对象,这样方式不推荐使用,SDK标记为deprecated.未来可能无法使用。
BitmapDrawable(Resources res) //从资源中构造
BitmapDrawable(Bitmap bitmap) //从Bitmap对象直接构造,但也是不推荐,而是希望用下一种
BitmapDrawable(Resources res, Bitmap bitmap) //从bitmap中创建设置初始的分辨率从res中
BitmapDrawable(String filepath) //从具体文件路径构造,也不推荐使用,而是下一种更好
BitmapDrawable(Resources res, String filepath) //同上
BitmapDrawable(InputStream is) //从输入流中构造,同样推荐下面的方法
BitmapDrawable(Resources res, InputStream is) //同上

在BitmapDrawable类中相对于Drawable类主要新增了以下几种方法,均比较实用:

final Bitmap getBitmap() 获取一个Bitmap对象
int getOpacity() //获取透明度
void setAntiAlias(boolean aa) //是否抗锯齿
void setTargetDensity(Canvas canvas) //设置目标Canvas密度
void setTargetDensity(DisplayMetrics metrics)

三、ClipDrawable

ColorDrawable
Drawable
GradientDrawable
InsetDrawable
LayerDrawable
LevelListDrawable
NinePatchDrawable
PaintDrawable
PictureDrawable
RotateDrawable
ScaleDrawable
ShapeDrawable
StateListDrawable
TransitionDrawable

以上的类型在常见的开发一般较少出现,主要是基类构造使用,Android内部的多个Widget基础控件使用了,感兴趣的网友可以查看开源GIT中的相关内容。

分享到:
评论

相关推荐

    Android UI开发专题

    ### Android UI开发专题知识点概述 #### 一、Android UI开发概览 在移动应用开发领域,用户界面(User Interface, UI)设计对于提升用户体验至关重要。Android作为全球最广泛使用的移动操作系统之一,其UI开发能力...

    android ui开发专题

    ### Android UI 开发专题知识点详解 #### 一、概述 Android UI 开发是移动应用开发中的重要组成部分,它直接影响到用户的交互体验与视觉感受。在本篇内容中,我们将详细介绍 Android UI 开发的基础知识,包括核心...

    android UI开发专题

    ### Android UI开发专题:深入解析资源管理与图形处理 在Android开发中,用户界面(UI)设计占据了极其重要的地位,良好的UI不仅能够提升用户体验,还能增强应用的吸引力。本专题聚焦于Android界面设计的关键方面,...

    Android UI开发专题之界面设计

    ### Android UI开发专题之界面设计 #### 一、概述与背景 随着移动互联网技术的飞速发展,用户体验(User Experience, UX)成为了决定一款应用能否成功的关键因素之一。特别是在Android平台上,良好的用户界面...

    AndroidUI开发专题(一)(二)(三)[参照].pdf

    Android UI开发专题主要涵盖界面设计、自绘控件和游戏制作等核心概念,其中涉及到多个关键包,包括`android.content.res`、`android.graphics`、`android.view`和`android.widget`。这些包提供了Android UI开发的...

    Android_UI开发专题.doc

    ### Android UI开发专题知识点概述 #### 一、Android UI开发概览 Android用户界面(UI)设计是移动应用开发中的一个重要组成部分。随着智能手机和平板电脑的普及,越来越多的开发者和爱好者开始关注如何创建美观且...

    Android_UI开发专题

    在Android UI开发中,了解和熟练掌握各种UI组件和图形绘制是至关重要的。本文将深入讲解Android UI开发的几个核心方面,包括资源管理、图形处理和控件使用,旨在帮助界面开发者更好地理解和应用这些技术。 首先,...

    Android UI开发专题(一) 之界面设计.docx

    在Android UI开发中,了解和熟练掌握界面设计是至关重要的,特别是对于自定义控件和游戏制作来说。本文将从Android的四大核心包——`android.content.res`、`android.graphics`、`android.view`和`android.widget`...

    AndroidUI开发专题(一)之界面设计[参照].pdf

    在Android UI开发中,界面设计是一项至关重要的任务,它直接影响到应用的用户体验和视觉效果。本文将深入探讨Android UI开发的界面设计,主要关注四个关键包:`android.content.res`、`android.graphics`、`android....

    Android_UI开发专题(一)_之界面设计

    ### Android UI界面设计知识点详解 #### 一、概述 Android用户界面(UI)设计是移动应用开发中的核心组成部分,良好的用户体验往往取决于UI设计的...未来专题还将继续深入探讨更多关于UI开发的技术细节,敬请期待。

    Android_UI_开发专题(一)_之界面设计

    Android UI开发是构建应用程序用户体验的关键部分,对于开发者来说,理解和熟练掌握各种UI组件和设计原则至关重要。本专题将深入探讨Android UI开发中的关键知识点,特别是界面设计的基础和自定义控件的实现。 首先...

    Android UI开发专题(四) View自绘控件

    在Android UI开发中,自定义View控件是创建独特、美观界面的重要手段。当系统提供的标准控件不能满足设计需求时,开发者需要深入理解View的工作原理,并通过自绘来实现定制化界面。本文将详细讲解如何自定义View,并...

    android UI 界面设计专题

    本专题将深入探讨Android UI开发中的四个核心包:`android.content.res`、`android.graphics`、`android.view`和`android.widget`。下面我们将逐一解析这些包的核心知识点。 首先,`android.content.res`包提供了...

    android界面设计专题

    在Android开发中,用户界面(User Interface,简称UI)是应用与用户交互的关键部分。良好的UI设计不仅能够提升用户体验,还能让应用程序更加吸引人。本篇将介绍一些关于Android界面设计的基本概念和常用技术。 ####...

    android资料

    1. **Android UI开发专题**:Android用户界面(UI)是应用程序与用户交互的关键部分。你需要学习如何使用Android提供的布局管理器(如LinearLayout、RelativeLayout和ConstraintLayout)、控件(TextView、Button、...

    android绘图.pdf

    在Android开发中,自定义UI和游戏制作常常需要深入理解并使用绘图系统。这份"android绘图.pdf"文档详细介绍了Android平台上的图形绘制技术,包括核心的绘图类和资源管理。以下是对文档中提到的关键知识点的深入解析...

Global site tag (gtag.js) - Google Analytics