Drawable图片资源

在Android中操作图片是通过Drawable类来完成的,Drawable类有很多子类,如BitmapDrawable类用于操作位图ColorDrawable类用于操作颜色ShapeDrawable类用于操作形状AnimationDrawable类用于操作逐帧动画

在Android应用的drawable-hdpidrawable-ldpidrawable-mdpidrawable-xhdpi任一文件夹中添加一个图片资源文件(例如draw1.jpg)后,在R.java文件中会自动创建一个索引项:R.drawable.draw1,这几个drawable文件夹用于存放不同分辨率的图片,在这些文件夹中可以存放相同名称的文件,但是在R.java中只会生成一个资源索引项,那么引用的时候,系统究竟会使用哪一个呢?系统会根据运行程序的设备的分辨率进行选择,自动选择和设备分辨率最接近的图片,如果只在一个文件夹中包含图片文件,那么系统别无选择,只能使用该文件,即使它的分辨率与设备的分辨率相去甚远,也就是说这几个文件夹的存在主要是为了在不同的设备上使用不同分辨率但内容相同的图片,使应用程序具有更好的灵活性和适应性。这几个Drawable文件夹中图片之间的尺寸关系如下图所示:

生成资源索引后,既可以在XML资源文件中通过“@drawable/draw1”来引用该Drawable对象,也可以在Java代码中通过R.drawable.draw1来访问该图片。

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

需要指出的是,R.drawable.draw1只是一个int类型的常量,代表该Drawable对象的资源ID,如果在Java程序中需要获得实际的Drawable对象,则可以调用Activity从android.content.ContextWrapper继承的getResources()方法获取所有的资源,再调用Resources的getDrawable(intid方法来获取。

getResources().getDrawable(intid);

时间: 2025-01-01 03:04:09

Drawable图片资源的相关文章

动态获取Drawable图片资源

比如Drawable中有一系列连续的图片,img0.png, img1.png, img2.png ... 如果要动态获取这些图片,通过"R.drawable.imgx"的ID方式指定是不行的,因为这个ID无法动态变化,即你是无法通过字符串拼接的方法来实现的. 但可以通过下面方式获取: ``` String imgname = "img_" + idx; int imgid = getResources().getIdentifier(imgname, "

资源的引用

res文件夹中的资源分类 (可直接通过R类调用),assets文件夹中的资源,如mp3必须通过二进制流来读取 anim(xml动画) drawable(图片资源) layout(布局文件) menu(菜单) raw(二进制文件) values(常量值) xml(xml文件) 引用资源的两种方法 在xml文件中 <TextView android:id="@+id/textView" android:textColor="@color/gray81" andro

Android -- selector&amp;&amp;StateListDrawable

selector <?xml version="1.0" encoding="utf-8" ?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <!-- 触摸时并且当前窗口处于交互状态 --> <item android:state_pressed="true" android:state_w

android背景选择器selector用法汇总

一.创建xml文件,位置:drawable/xxx.xml,同目录下记得要放相关图片 <?xml version="1.0" encoding="utf-8" ?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <!-- 默认时的背景图片--> <item android:drawable="@draw

相当郁闷的问题,TabHost选项卡标签图标始终不出现?

在学习Android TabHost布局过程中,很多教程告诉我,这样来显示选项卡标签的图标和文字: TapSpec spec1 = tabHost.newTabSpec("tab 1"); spec1.setIndicator("选项卡一", getResources().getDrawable(R.drawable.tab_icon)); spec1.setContent(R.id.tab1); tabHost.addTab(spec1); 折腾来折腾去,setI

Android中View(视图)绘制不同状态背景图片原理深入分析以及StateListDrawable使用详解

今天继续给大家分享下View的相关知识,重点有一下两点:   1.View的几种不同状态属性            2.如何根据不同状态去切换我们的背景图片. 开篇介绍:android背景选择器selector用法汇总 对Android开发有经验的同学,对 <selector>节点的使用一定很熟悉,该节点的作用就是定义一组状态资源图片,使其能够 在不同的状态下更换某个View的背景图片.例如,如下的hello_selection.xml文件定义: <?xml version="

项目结构图

// Android 模式 |--app |--manifests                                                                |--清单文件 |--AndroidManifest.xml                                             |-- 配置文件,App基本信息(名称.版本.SDK.权限等等) |--java                                      

原文翻译 Android_Develop_API Guides_Animation Resources(动画资源)

英文原文:http://developer.android.com/guide/topics/resources/animation-resource.html#Property 一个动画资源可以使用如下两种动画类型的一种来定义:Property Animation    通过 Animator 获得到的一系列的时间集来改变一个对象的属性值创建的动画.View Animation    通过视图动画框架,这里有两种类型的动画你可以定义.    ·Tween animation(补间动画) : 通

安卓开发Day1

笔记 将所有.class文件变成一个.dex 文件 是dvm(Dalvik vm)的优势. 很快 dvm基于寄存器的架构 安卓版本4.1.2和2.3 是最稳定的 安卓任何的控件都继承自View System.out.println() 才能输出 .少了ln都不行 et_number.getText().toString() et_number.getText()居然也可以 MainActivity最终继承于上下文 Context 打电话 RelativeLayout线性布局 <EditText