Android学习15--使用(Drawable)资源

本文详细介绍了Android中的Drawable资源,包括图片资源、StateListDrawable、LayerDrawable、ShapeDrawable、ClipDrawable和AnimationDrawable。讲解了如何在Java和XML中访问资源,以及如何利用这些资源实现动态效果和动画。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、图片资源

图片资源是最简单的Drawable资源,只要把*.png、*.jpg*、.gif等格式的图片放入/res/drawable-XXX目录下,Android SDK就会在编译应用自动加载该图片,并在R资源清单类中生成该资源的引用。

Android不允许图片资源的文件名中出现大写字母,且不能以数字开头。

java中访问资源:[<package>.]R.drawable.<file_name>

XML中访问资源:@[<package_name:>]drawable/file_name

为了在程序中获得实际的Drawable对象,Resources提供了Drawable getDrawable(int id)方法,该方法跟据Drawable资源在R清单类中的ID获取实际的Drawable对象。

2、StateListDrawable资源

StateListDrawable用于组织多个Drawable对象。当使用StateListDrawable作为目标组件的背景、前景图片时,StateListDrawable对象所显示的Drawable对象会随目标组件形态的改变而自动切换。

定义StateListDrawable对象的XML文件的根元素为<selector../>,该元素可包含多个<item.../>元素,该元素可指定如下属性:

android:color或android:drawable:指定颜色或drawable对象

android:state_xxx:指定一个特定状态

3、LayerDrawable资源

与StateListDrawable有点类似,LayerDrawable也可以包含一个Drawable数组,因此系统将会按这些Drawable对象的数组顺序来绘制它们,索引最大的Drawable对象将会被绘制在最上面。

定义LayerDrawable对象的XML文件的根元素为<layer-list.../>,该元素可以包含多个<item.../>元素,该元素可指定如下属性:

android:drawable:指定作为LayerDrawable元素之一的Drawable对象。

android:id:为该Drawable对象指定一个标识

android:buttom|top|button:它们用于指定一个长度值,用于指定将该Drawable对象绘制到目标组件的指定位置

4、ShapeDrawable资源

ShapeDrawable用于定义一个基本的几何图形(如矩形、圆形、线条等),定义ShapeDrawable的XML文件的根元素是<shape.../>元素,该元素可指定如下属性:

android:shape=["rectangle"|"Oval"|"line"|"ring"]:指定定义哪种类型的几何图形

5、ClipDrawable资源

ClipDrawable代表从其它位图上截取的一个“图片片段”。在XML文件中定义ClipDrawable对象使用<clip.../>元素。

可指定如下三个属性:

android:drawable:指定截取的源Drawable对象

android:clipOrientation:指定截取方向,可设置水平截取或垂直截取

android:gravity:指定截取时的对齐方式

使用ClipDrawable对象可调用setLevel(int level)方法来设置截取的区域大小。当Level为0时,截取的图片片段为空,当Level为10000时,截取整张图片。

6、AnimationDrawable资源

AnimationDrawable代表一个动画。定义补间动画的XML资源文件以<set.../>元素作为根元素,该元素内可以指定如下4个元素:

alpha:设置透明度的改变

scale:设置图片进行缩放改变

translate:设置图片进行位移变换

rotate:设置图片进行旋转

定义动画的XML资源应该放在/res/anim路径下,当使用ADT创建一个Android应用时,默认不会包含该路径,开发者需要自行创建该路径。

定义补间动画的思路很简单:设置一张图片的开始状态(包括透明度、位置、缩放比、旋转度)、并设置图片的结束状态(包括透明度、位置、缩放比、旋转度),再设置动画的持续时间,Android系统会使用动画效果把这张图片从开始状态变换到结束状态。

在java代码中访问动画资源文件:[<package>.]R.anim.<file_name>

在XML文件中访问动画资源文件:@[<package_name>:]anim/file_name

为了在java代码中获取实际的Animation对象,可以调用AnimationUtils的如下方法:loadAnimation(Context ctx,int resld)

简明、完整、全面的安卓开发demo集合,包含如下示例 1、LinearLayout Button、RadioGroup、 CheckBox 2、TableLayout 3、FrameLayout 霓虹灯效果 4、RelativeLayout 梅花效果 5、自定义view跟着触点走的小球 6、 ListView 列表视图 7、WebView web视图 8、ToggleButton 动态布局效果 9、AnalogClock 、 DigitalClock and Chronometer 时钟和数字日期 10、AutoCompleteTextView 根据输入自动补充可能的全部 11、Spinner View 选择框(弹出框形式选择) 12、DatePicker TimePicker View 日期时间选择器 13、ProgressBar View 普通进度条、显示在标题栏上的进度条 14、RatingBar View 评级 15、 SeekBar 拖动条,音量调节效果 16、ScrollView 、HorizontalScrollView 垂直和水平滚动条 17、ScrollView 、HorizontalScrollView 垂直和水平滚动条 18、ExpandableListView 分组可展开收缩的ListView 19、Notification 状态栏通知 20、GridView、ImageSwitcher 21、SmsManager 消息管理器,发短信(这里是模拟器只能给其它模拟器发短信) 22、Intent Action、Category属性 测试 23、系统 Action、Category属性 24、ClipDrawable 徐徐展开的风景 25、AnimationDrawable 会动的图片 26、Menu、SubMenu、ContextMenu xml配置menu 27、Attribute 自定义view的duration属性 控制图片的透明度 28、Bitmap、BitmapFactory 图形与图像处理 29、Canvas 绘制自定义图形 30、Canvas 采用双缓存实现画图板 31、SharedPreference 简单的key-value数据存取 32、SQLiteDatabase 安卓客户端的嵌入式数据库 33、GestureDetector + ViewFlipper实现翻页效果 34、GestureLiberay 自定义手势 35、GestureLiberay 通过自定义的手势实现用户操作 36、TextToSpeech 语音朗读 37、ContentProvider、ContentResolver 应用之间共享数据 38、 Service 相当于没有界面的activity 39、Activity与Service运行中通信 40、Service 相当于没有界面的activity 41、AIDL Service android中的跨进程调用 客户端,服务端见AidlService 42、BroadcastReceiver 接收广播消息 43、非UI线程中不能操作UI线程中的View测试 44、ImageSwitcher animation gesture实现可以滑动的跑马灯 45、下载状态栏显示下载进度 46、Gallery3d效果 47、ListView 上拉加载更多效果 48、异步加载图片的二级缓存技术 49、QQ的好友列表展示效果 50、Fragment + ViewPager实现tab滑动切换 51、能够显示在桌面前面的的歌词效果 52、activity切换特效
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值