Android开发笔记(七)初识Drawable
来源:互联网 发布:淘宝开店店铺描述 编辑:程序博客网 时间:2024/06/04 17:46
什么是Drawable
Android把所有显示出来的图形都抽象为Drawable(该单词意思就是“可绘制的”),这里的图形不只是图片,还包括色块、画板、背景等等。android.graphics.drawable源码目录下的drawable有十几种,博主就不一一介绍了,只说说一些常见的用法,以及容易弄错的地方。Drawable资源目录
drawable文件放在res目录的各个drawable目录下,\res\drawable一般放的是描述性的xml文件,图片文件一般放在具体分辨率的drawable目录下。例如drawable-ldpi里面主要放低分辨率的图片,如QVGA(240×320)
drawable-mdpi里面主要放中等分辨率的图片,如HVGA(320×480)
drawable-hdpi里面主要放高分辨率的图片,如WVGA(480×800),FWVGA(480×854)
drawable-xhdpi里面主要放加高分辨率的图片,如Nexus(720×1280)以上分辨率
drawable-xxhdpi里面主要放超高分辨率的图片,如Nexus(1080×1920)以上分辨率
基本上分辨率每加大一级,宽度和高度就要加大二分之一像素。如果各目录存在同名图片,则Android会根据手机的分辨率来分别适配对应文件夹里的图片。所以在开发APP时,为了兼容不同的手机屏幕,根据需求在不同目录存放不同大小的图片,才能达到最合适的显示效果。
比如说,我在drawable-hdpi放了一张背景图片bg.png(分辨率480×800),其他目录就没放,使用分辨率480×800的手机查看该APP是没有问题的,但是现在有一台分辨率高的手机如720×1280,在这个高分辨率手机上查看APP,就会发现背景图片有点模糊,原因是Android为了bg.png适配屏幕,把bg.png拉伸到了720×1280,拉伸的后果便是图片糊掉了。
Drawable的状态
简单的drawable都是静态的图形,现在我们让它动一下,根据不同的触摸情况来变更图形,这时就要用到Drawable的一个子类StateListDrawable。StateListDrawable是在一个xml文件中定义不同状态下呈现的图像。下面是一个例子btn_visit_selector.xml
<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true" android:drawable="@drawable/common_jia_selected" /> <item android:drawable="@drawable/common_jia_normal" /></selector>
该xml中关键点是state_pressed,该值为true表示按下时显示common_jia_selected图像,其余情况显示common_jia_normal图像。
常用的状态位有:
state_pressed:为true时表示按下,一般用于按钮Button,图形设置于android:background
state_checked:为true时表示勾选,一般用于单选框RadioButton、复选框CheckBox,图形设置于android:drawableLeft
state_selected:为true时表示选中,一般用于单选框RadioButton、复选框CheckBox,图形设置于android:background
state_focused:为true时表示获取焦点,一般用于文本框EditText,图形设置于android:background
6 0
- Android开发笔记(七)初识Drawable
- Android开发笔记(九十五)自定义Drawable
- 初识android vector drawable
- Android Drawable Resource学习(七)、TransitionDrawable
- Android Drawable Resource学习(七)、TransitionDrawable
- Android Drawable Resource学习(七)、TransitionDrawable
- Android Drawable Resource学习(七)、TransitionDrawable
- (七)android的绘图机制&&Drawable
- Android开发秘籍学习笔记(七)
- 深入浅出 - Android系统移植与平台开发(七)- 初识HAL
- 深入浅出 - Android系统移植与平台开发(七)- 初识HAL
- 深入浅出 - Android系统移植与平台开发(七)- 初识HAL
- 深入浅出 - Android系统移植与平台开发(七)- 初识HAL
- 深入浅出 - Android系统移植与平台开发(七)- 初识HAL
- 深入浅出 - Android系统移植与平台开发(七)- 初识HAL
- Android 开发艺术探索笔记 第六章 Android的Drawable
- android开发drawable-nodpi
- Android开发总结笔记 Drawable (上) 3-1
- Redis Cluster(Redis 3.X)设计要点
- Python基础教程(二):基础语法、变量类型
- IOS框架图(一)
- python 3 文件管理
- [笔记] 最优化方法 - 最优性条件
- Android开发笔记(七)初识Drawable
- [Android] 简单的状态机实现
- Android中设置TimePickerDialog旧版样式
- Android通过Url传递数据,实现分享功能
- 学习使用Robot Framework自动化测试框架(二)——简单测试例子
- 单例中调用多例
- 一道经典面试题:计算n以内的素数(质数)算法
- java类静态域、块,非静态域、块,构造函数的初始化顺序
- mediaplayer在listview中 首页自动播放第一个item的问题