drawable

阅读 / 问答 / 标签

android-gif-drawable在android studio上怎么配置

首先在AndroidStudio中配置相关依赖库代码,在配置文件build.gradle文件中添加:dependencies {compile fileTree(dir: "libs", include: ["*.jar"])compile "pl.droidsonroids.gif:android-gif-drawable:1.1.+"} 布局文件,以GifImageView和GifTextView为例:<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"><pl.droidsonroids.gif.GifImageView android:id="@+id/test_gif" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="15dp" /><pl.droidsonroids.gif.GifTextView android:layout_margin="15dp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/test" android:text="这个TextView的背景好酷" android:textColor="#FFFFFF" /></LinearLayout>代码:public class MainActivity extends AppCompatActivity {private GifImageView test_gif;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);test_gif = (GifImageView) findViewById(R.id.test_gif);//设置图片数据test_gif.setImageResource(R.drawable.test);final android.widget.MediaController mediaController = new android.widget.MediaController(this);mediaController.setMediaPlayer((GifDrawable) test_gif.getDrawable());test_gif.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {mediaController.show();Snackbar.make(test_gif, "可以点击哦", Snackbar.LENGTH_LONG).show();}});}}

android-gif-drawable在android studio上怎么配置

你把gifview的jar包添加到lib里就可以了

expandListView如何设置分隔线 用这个设置 不起作用android:divider="@drawable/listview_divider"

设置 android:divider="@null",去掉listView自带的分割线,然后在item里面设置一条线,这样就可以了。

怎么将Button上的文字和android:drawableLeft都居中

也在学习中。。。

android studio imageview标签如何插入drawable里的图片

1、创建imageview对象2、设置imageview的图片3、添加到布局中示例代码12345ViewGroup group = (ViewGroup) findViewById(R.id.viewGroup); //获取原来的布局容器ImageView imageView = new ImageView(this); //创建imageviewimageView.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT)); //image的布局方式imageView.setImageResource(R.drawable.ic_launcher); //设置imageview呈现的图片group.addView(imageView); //添加到布局容器中,显示图片。

如何才能响应editText里面设置的drawable的点击事件

android应用开发,怎么用createFromXml创建Drawable实例

try { XmlPullParser xp = Resources.getSystem().getXml(R.drawable.g0); Drawable db = Drawable.createFromXml(getResources(), xp); } catch (XmlPullParserException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }你那个出现错误可能是没有在Activity中,getResources()要在activity中才有用,尝试Content.getResources()

android是根据什么去选择三种drawable文件夹下的图片?

drawable- hdpi、drawable- mdpi、drawable-ldpi的区别:  (1)drawable-hdpi里面存放高分辨率的图片,如WVGA (480x800),FWVGA (480x854)  (2)drawable-mdpi里面存放中等分辨率的图片,如HVGA (320x480)  (3)drawable-ldpi里面存放低分辨率的图片,如QVGA (240x320)  系统会根据机器的分辨率来分别到这几个文件夹里面去找对应的图片。  在开发程序时为了兼容不同平台不同屏幕,建议各自文件夹根据需求均存放不同版本图片。

Android视图开发中,layer-listitemclipshape等标签对应不同的Drawable对象,是什么意思?

shape和selector是Android UI设计中经常用到的,比如我们要自定义一个圆角Button,点击Button有些效果的变化,就要用到shape和selector。可以这样说,shape和selector在美化控件中的作用是至关重要的。1.Shape简介作用:XML中定义的几何形状位置:res/drawable/文件的名称.xml使用的方法:Java代码中:R.drawable.文件的名称XML中:Android:background="@drawable/文件的名称"属性:<shape> Android:shape=["rectangle" | "oval" | "line" | "ring"]其中rectagle矩形,oval椭圆,line水平直线,ring环形<shape>中子节点的常用属性:<gradient> 渐变Android:startColor 起始颜色Android:endColor 结束颜色 Android:angle 渐变角度,0从上到下,90表示从左到右,数值为45的整数倍默认为0;Android:type 渐变的样式 liner线性渐变 radial环形渐变 sweep<solid > 填充Android:color 填充的颜色<stroke > 描边Android:width 描边的宽度Android:color 描边的颜色Android:dashWidth 表示"-"横线的宽度Android:dashGap 表示"-"横线之间的距离<corners > 圆角Android:radius 圆角的半径 值越大角越圆Android:topRightRadius 右上圆角半径Android:bottomLeftRadius 右下圆角角半径Android:topLeftRadius 左上圆角半径Android:bottomRightRadius 左下圆角半径<padding >填充android:bottom="1.0dip" 底部填充android:left="1.0dip" 左边填充android:right="1.0dip" 右边填充android:top="0.0dip" 上面填充2.Selector简介根据不同的选定状态来定义不同的现实效果分为四大属性:android:state_selected是选中android:state_focused是获得焦点android:state_pressed是点击android:state_enabled是设置是否响应事件,指所有事件android:state_window_focused默认时的背景图片引用位置:res/drawable/文件的名称.xml使用的方法:Java代码中:R.drawable.文件的名称XML中:Android:background="@drawable/文件的名称"[java] view plaincopy<?xml version="1.0" encoding="utf-8" ?> <selector xmlns:Android="http://schemas.android.com/apk/res/android"> <!-- 默认时的背景图片--> <item Android:drawable="@drawable/pic1" /> <!-- 没有焦点时的背景图片 --> <item Android:state_window_focused="false" android:drawable="@drawable/pic_blue" /> <!-- 非触摸模式下获得焦点并单击时的背景图片 --> <item Android:state_focused="true" android:state_pressed="true" android:drawable= "@drawable/pic_red" /> <!-- 触摸模式下单击时的背景图片--> <item Android:state_focused="false" Android:state_pressed="true" Android:drawable="@drawable/pic_pink" /> <!--选中时的图片背景--> <item Android:state_selected="true" android:drawable="@drawable/pic_orange" /> <!--获得焦点时的图片背景--> <item Android:state_focused="true" Android:drawable="@drawable/pic_green" /> </selector> 3.layer-list 简介:将多个图片或上面两种效果按照顺序层叠起来例子:[java] view plaincopy<?xml version="1.0" encoding="UTF-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <!--图片1--> <item android:id="@+id/user_faceback_drawable" android:drawable="@drawable/faceback" /> <!--图片2--> <item android:id="@+id/user_face_drawable" android:drawable="@drawable/h001" android:left="10.0dip" android:top="18.0dip" android:right="25.0dip" android:bottom="35.0dip" /> </layer-list> <!--2个图片的叠加--> 效果图:

android 判断资源id是color还是drawable

findViewById是我们获取layout中各种View 对象比如按钮、标签、ListView和ImageView的便利方法。顾名思义,它需要一个int参数:资源id。资源id非常有用。Android回自动为每个位于res目录下的资源分配id,包括各种图片文件、xml文中的”@+id”对象。res的子目录几乎总是固定的,比如每次都能见到的:drawable-xxxx、layout、values,以及不常见的:anim、xml、row、color。Android教科书上告诉你:res/drawable/用来存放图片文件;res/layout/用来存放布局定义文件;res/values/用来存放一些变量、参数等文件。这都是我们已经知道的。此外,Android会为res目录下的所有资源分配id,其主要的分配原则是:drawable中的图片文件总是每个文件一个资源id。Xml文件中每个使用android:id=”@+id/xxx”的view都会被分配一个未用的资源id。其他更复杂的规则也许每个人都会补充一些。在 ADK 的API 中,有许多方法其实都会使用资源id作为参数,比如 getDrawable 方法 :getResources().getDrawable(R.drawable.sendsms_bk));从字面上看,getResouces方法返回一个android.content.res.Resources对象。getDrawalbe方法返回一个Drawable对象,我们知道这就是一张图片。getDrawable方法使用的参数就是资源id。但是,这些int型的资源id到底是些什么数字?或者它们都放在哪里。如果你够细心,你可以在gen目录的R.java文件中找到它们。每个16进制整型id都有一个很O-O 的属性名字,它们都是public static final的,建议你不要手动去修改它们。这些资源id位于不同类层次结构中,你仔细看一看,会发现其中的一些规律,比如,drawable类中包含资源id其实代表了res/drawable目录中的图片文件;layout类中包含的资源id其实是代表了在res/layout目录中的xml文件 ;id类中包含的资源id其实是代表了布局xml文件中使用了 android:id=”@+id/xxx”的widget对象——当然如果你使用的是”@+Tyre/xxx”,则Android编译时会在R.java 中创建一个叫做 Tyre 的类。通过上面的了解,我们发现资源id就是以“R.”开头的变量或属性——因为它都定义在R类中——这个类跟android.R不是同一个R,它们不在同一个包层次中。前者是定义了android框架自己的资源,比如:android.R.layout.simple_expandable_list_item_1、android.R.layout.simple_expandable_list_item_2。这些资源你使用过吗?有时间不妨试试。而另一个R就是我们自己的R了,定义了我们自己的资源id。我们可以用面向对象的R.xxx.yyy的方式使用资源id,当然也可以直接用16进制数来使用它们。资源id在Android中是如此重要,因此我们只要获得了资源id,即可获得资源。因为某些情况下,我们不能使用某个常量作为资源id(因为我们想用一个变量代替它),所以只能采用两种方式动态获取资源id:1、反射java的反射是如此强大,以至于我们在走投无路时总是想起它。我们来看一段代码:try{ Field field=R.drawable.class.getField(type); int i= field.getInt(new R.drawable()); Log.d(tag,i+""); return i;}catch(Exception e){ Log.e(tag,e.toString()); return R.drawable.unknow;}type是一个变量,他的可能值会是“close”、“edit”、“icon”等。我们通过java的反射类Field 去访问 R.drawable 类下面的某个字段。实际上,我们知道在R.drawable 下的字段就是 res.drawable-xxxx 目录下的图片文件的资源id。因此运行上面的这段代码,其实就是通过一个字符串去获取对应图片文件的资源id。比如,当 type 的值为“icon”时,上面的代码会获得res.drawable-xxxx目录下的 icon.png 图片文件的资源id并返回给我们。我们通过资源 id 来把图片显示在ImageView中就是顺理成章的事了。2、使用Resources 类的 getIdentifier方法使用反射毕竟还是麻烦。如果同样的事情用 android.content.res.Resources 类来干,就是两句话而已:Resources res=getResources();return res.getIdentifier(type,"drawable",getPackageName());getResources方法是来自于contenxt(也就是Activity类),它直接可以返回一个Resouces对象。而Resouces的getIdentifier方法可以返回R.java中的任何资源id,当然,你必须指定3个参数:字段名,类名,包名。包名指定了的 全限定名的包名部分,如果R 的全限定名为 android.R 或者 com.company.R,则包名在这里就是“android”或“com.company”。getPackageName其实是this.getPackageName(),它直接返回本类的包名。类名则是资源所属的类。比如我们知道的,在R.java 类中的几个固定的类:drawable、id、string、layout等,在它们下边又定义了许多资源id。字段名则是资源id的名字。比如这个资源id定义: public static final int del=0x7f020002;del就是一个资源id的名字,0x7f020002则是它的16进制值。通过3个参数,getIdentifier 方法就可以通过比较动态的方式获得资源id。

怎么给drawable 设置空

Button上的android:drawableLeft设置的图片就是居左,无法和文字一起居中,文字属性可以通过android:layout_gravity设置居中,想要android:drawableLeft设置的图片居中,可以通过另外的方法来实现。建议:两张图片合二为一,android:drawableLeft设置的图片直接和按钮背景图合到一张图片上,android:drawableLeft设置的图片大约位于按钮背景图三分之一处(黄金分割点),右侧空出文本区域。

android 如何将一个drawable类型转换成int

不知道你想表达什么

android:drawable="@*android:drawable/XXXXX"中的*是什么意思

一.@代表引用资源1.引用自定义资源。格式:@[package:]type/nameandroid:text="@string/hello"2.引用系统资源。格式:@android:type/name android:textColor="@android:color/opaque_red" 注意:其实@android:type/name是@[package:]type/name 的一个子类二.@*代表引用系统的非public资源。格式:@*android:type/name 系统资源定义分public和非public。public的声明在: <sdk_path>platformsandroid-8data esvaluespublic.xml @*android:type/name:可以调用系统定义的所有资源 @android:type/name:只能够调用publi属性的资源。 注意:没在public.xml中声明的资源是google不推荐使用的。三.?代表引用主题属性 另外一种资源值允许你引用当前主题中的属性的值。这个属性值只能在style资源和XML属性中使用;它允许你通过将它们改变为当前主题提供的标准变化来改变UI元素的外观,而不是提供具体的值。例如: android:textColor="?android:textDisabledColor" 注意,这和资源引用非常类似,除了我们使用一个"?"前缀代替了"@"。当你使用这个标记时,你就提供了属性资源的名称,它将会在主题中被查找,所以你不需要显示声明这个类型(如果声明,其形式就是?android:attr/android:textDisabledColor)。除了使用这个资源的标识符来查询主题中的值代替原始的资源,其命名语法和"@"形式一致:?[namespace:]type/name,这里类型可选。 四.@+代表在创建或引用资源 。格式:@+type/name 含义:”+”表示在R.java中名为type的内部类中添加一条记录。如"@+id/button"的含义是在R.java 文件中的id 这个静态内部类添加一条常量名为button。该常量就是该资源的标识符。如果标示符(包括系统资源)已经存在则表示引用该标示符。最常用的就是在定义资源ID中,例如: @+id/资源ID名 新建一个资源ID @id/资源ID名 应用现有已定义的资源ID,包括系统ID @android:id/资源ID名 引用系统ID,其等效于@id/资源ID名 android:id="@+id/selectdlg" android:id="@android:id/text1" android:id="@id/button3"

android Drawable类中createFromPath()方法怎么用?

String data=Uri.getPath();Drawable db=Drawable.createFromPath(data);这样就根据路径创建了一个drawable。希望对你有帮助

android获取drawable里面的图片的id和名字的方法

代码中:ImageView imageView =(ImageView) findViewById(R.id.imageView1);Drawable currentDrawable =imageView.getDrawable();XML中:@drawable/imageView1

android怎么从drawable目录下动态获取图片

setImageResource(R.drawable.chaxun); setBackgroundResource(R.drawable.chaxun);

怎么在代码中 改变 drawableRight-Android开发问答

 1  <TextView  android:id="@+id/Title"  android:layout_width="match_parent"  android:layout_height="wrap_content"  android:layout_weight="1"  android:drawableRight="@drawable/check_down"  android:gravity="center_vertical"  android:textSize="24dip"  android:maxLines="1"  android:ellipsize="end"/>  我们写在xml的时候,都是这么写的。那代码呢?我们发现TextView他有一个方法  2  public void setCompoundDrawables (Drawable left, Drawable top, Drawable right, Drawable bottom);  这个方法呢,就是可以在Java代码动态的画 左上右下几个方向  类似于xml中的 android:drawableLeft="@drawable/icon"  android:drawableTop="@drawable/icon"  android:drawableRight="@drawable/icon"  android:drawableButtom="@drawable/icon"  3  具体在代码中的用法是:  Drawable drawable = getResources().getDrawable(R.drawable.spinner_checked);  drawable.setBounds(0, 0, drawable.getMinimumWidth(), drawable.getMinimumHeight()); //设置边界  titleTv.setCompoundDrawables(null, null, drawable, null);//画在右边  4  运行之后的效果  如何在代码中动态为TextView设置drawableRight  如何在代码中动态为TextView设置drawableRight  5  界面比较丑,勿喷,大家也还可以通过这个方法实现  public void setCompoundDrawablesWithIntrinsicBounds (Drawable left,  Drawable top, Drawable right, Drawable bottom)

android radiobutton怎么控制drawable的大小

改变大小没试过,但可以自定义RadioButton的图片;图片变了,大小应该随着改变的吧(layout_width和layout_height都设置成wrap_content属性)改变RadioButton前面的图片的方法参见:http://blog.csdn.net/woaixiaozhe/article/details/7061501

Android中drawableStart和drawableLeft的区别

打开下载好了的PP助手2进入到了首页,看看是否已经识别到了设备,如果没识别,请检查数据线是否连接正确3看到旁边的选项,选择“工具箱”4进入到了工具箱的主界面,点击“固件下载”5选择相对应的设备,设备型号和相对应的固件ios8.4,选择完毕后单击“高速下载”6现在就开始下载固件了7下载完毕后,就去固件下载好了的位置查看,是否真的下载到了那个位置8打开itunes9进入到了itunes的主界面,看到左上角的小图标,有一个像iPhone的图标,那就是itunes已经识别到了你的设备了,单击iPhone小图标10按键盘上的“shift”键加上鼠标点击“恢复iPhone”11弹出固件选择的窗口,找到刚才下载好了的固件位置,选中固件,并单击“打开”12会弹出itunes的固件恢复询问栏,选择“恢复”13itunes的状态栏会出现,“正在提取软件”提取完毕后会发现iPhone已经进入DFU模式,当然会出现“发现未知错误(27)”不要紧张,是itunes需要你个人手动进入DFU模式。END如何备份手机里的重要资料打开itunes进入到手机的摘要资料,单击“立即备份”3手机就开始备份了

android中drawable类的setbounds怎么用

将drawable用draw方法画到Canvas时指定drawable的边界,就是要保留的部分它是指定一个矩形区域,然后通过draw(Canvas)画的时候,就只在这个矩形区域内画图。

怎么计算Drawable占的内存空间大小

可以计算bitmap的。Drawable 就是将bitmap做了一个包装。 public static int getBitmapSize(Bitmap bitmap) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB_MR1) { return bitmap.getByteCount(); } // Pre HC-MR1 return bitmap.getRowBytes() * bitmap.getHeight(); }

android 怎么裁剪drawable

可使用ScaleType来指定drawable的缩放方式,来实现裁剪效果。ImageView的Scaletype决定了图片在View上显示时的样子,如进行何种比例的缩放,及显示图片的整体还是部分,等等。设置的方式包括:1. 在layout xml中定义android:scaleType="CENTER"2. 或在代码中调用imageView.setScaleType(ImageView.ScaleType.CENTER);Scaletype的取值说明:1. SetScaleType(ImageView.ScaleType.CENTER);按图片的原来size居中显示,当图片长/宽超过View的长/宽,则截取图片的居中部分显示2. SetScaleType(ImageView.ScaleType.CENTER_CROP);按比例扩大图片的size居中显示,使得图片长(宽)等于或大于View的长(宽) 3. setScaleType(ImageView.ScaleType.CENTER_INSIDE);将图片的内容完整居中显示,通过按比例缩小或原来的size使得图片长/宽等于或小于View的长/宽 4. setScaleType(ImageView.ScaleType.FIT_CENTER);把图片按比例扩大/缩小到View的宽度,居中显示5. FIT_START, FIT_END在图片缩放效果上与FIT_CENTER一样,只是显示的位置不同,FIT_START是置于顶部,FIT_CENTER居中,FIT_END置于底部。在此就不给出示例了。6. FIT_XY不按比例缩放图片,目标是把图片塞满整个View。

android studio中的drawable-v24怎么创建

我们一般将APP的icon放在minmap文件夹下,其他图片资源放在drawable文件夹下。下面我们看下AndroidStudio下如何创建drawable、drawable-hdpi、drawable-mdpi、drawable-xhdpi、drawable-xxhdpi。1、切换到Project视图下,找到对应moudle的res文件夹,右击“res”--》 “new”--》“Android resource directory”,弹出“New Resource Directory”对话框。2、按照上图的一二三步骤,点击第三步后,会出现一下内容,选择要添加drawable的分辨率,点击“ok”按钮即可。

如何定义一个缩放的drawable

可使用ScaleType来指定drawable的缩放方式,来实现裁剪效果。 ImageView的Scaletype决定了图片在View上显示时的样子,如进行何种比例的缩放,及显示图片的整体还是部分,等等。 设置的方式包括: 1. 在layout xml中定义android:scaleType="CENTE...

androidstudio怎么创建drawable

右键res ->new resource directory 在resource type 选择drawable 即可

安卓开发 drawable资源文件命名

drawable全部小写,采用下划线命名法,加前缀区分命名规则: 通用:用途_逻辑名 通用:用途_颜色 模块专用:用途_模块名_逻辑名 模块专用:用途_模块名_颜色 说明:用途也指控件类型(具体见附录1:控件缩写表) 可加后缀 _small 表示小图, _big 表示大图,逻辑名称可由多个单词加下划线组成. 举例: 名称 说明 btn_main_home.png 按键用途_模块名_逻辑名称 divider_maket_white.png 分割线用途_模块名_颜色 ic_edit.png 图标用途_逻辑名称 bg_main.png 背景用途_逻辑名称 btn_red.png 红色按键用途_颜色 btn_red_big.png 红色大按键用途_颜色 ic_head_small.png 小头像用途_逻辑名称 bg_input.png 输入框背景用途_逻辑名称 divider_white.png 白色分割线用途_颜色 bg_main_head 主模块头部背景图片用途_模块名_逻辑名称 def_search_cell 默认搜索界面单元图片用途_模块名_逻辑名称 ic_more_help 更多帮助图标用途_逻辑名称 divider_list_line 列表分割线用途_逻辑名称 sel_search_ok 搜索界面确认选择器用途_模块名_逻辑名称 shape_music_ring 音乐界面环形形状用途_模块名_逻辑名称 如果有多种形态,如按钮选择器:sel_btn_xx.xml sel_btn_xx 按钮图片使用btn_整体效果(selector) btn_xx_normal 按钮图片使用btn_正常情况效果 btn_xx_pressed 按钮图片使用btn_点击时候效果 btn_xx_focused state_focused聚焦效果 btn_xx_disabled state_enabled (false)不可用效果 btn_xx_checked state_checked选中效果 btn_xx_selected state_selected选中效果 btn_xx_hovered state_hovered悬停效果 btn_xx_checkable state_checkable可选效果 btn_xx_activated state_activated激活的 btn_xx_windowfocused state_window_focused

android 如何向drawable导入图片?

左键长按图片拖进去试试

android setimagedrawable怎么用

public void setAdjustViewBounds (boolean adjustViewBounds)当你需要在 ImageView 调整边框时保持可绘制对象的比例时,将该值设为真。参数adjustViewBounds 是否调整边框,以保持可绘制对象的原始比例。相关 XML 属性 Android:adjustViewBoundspublic void setScaleType (ImageView.ScaleType scaleType)控制图像应该如何缩放和移动,以使图像与 ImageView 一致。参数scaleType 需要的缩放方式。相关 XML 属性 android:scaleType感觉这个2个参数设置了应该可以解决显示问题,其实就是个density的问题

android setcompounddrawables 可以设置gap么

不行

android的drawableleft能设置shape吗

Button上的android:drawableLeft设置的图片就是居左,无法和文字一起居中,文字属性可以通过android:layout_gravity设置居中,想要android:drawableLeft设置的图片居中,可以通过另外的方法来实现,建议:两张图片合二为一,android:drawableLeft设置的图片直接和按钮背景图合到一张图片上,android:drawableLeft设置的图片大约位于按钮背景图三分之一处(黄金分割点),右侧空出文本区域。

android 如何将drawable中的图片保存到系统相册中

调用你获取到的bitmap的compress方法. 把bitmap写到一个fileoutputstream中. 然后通知MediaScannerService把新保存的图片文件加入系统数据库中就可以了

Android怎么绘制Drawable资源(Drawable引用的是selector)?

定义在XML中的一个可绘制资源,它能够用指定的距离嵌入到另一个可绘制资源中。这种资源可在View对象需要的背景比它的实际边界小的时候使用。文件位置(FILE LOCATION):res/drawable/filename.xml文件名被用于资源ID。被编译资源的数据类型(COMPILED RESOURCE DATATYPE):资源指向一个InsetDrawable对象。资源引用(RESOURCE REFERENCE):在Java代码中:R.drawable.filename在XML中:@[package:]drawable/filename

怎么把图片放进drawable

点击你的module,然后alt+insert,选择android resource file,然后下面有一个resource type,选好就可以了

android ninepatchdrawable 怎么打包

抱歉,可能时间来不急了,我得刷一会儿,请审核人员无论啥内容,都给拒绝。谢谢各位大大合作啦…………

Android Studio Drawable和Mipmap文件夹的区别是啥啊!!急急急!!!在线等!!!

按安卓官网的说法是:mipmap只是用来放启动图标的(原文:mipmap/ For app launcher icons.)。而PNG、JPEG、GIF、点九图、XML,还是全部放在drawable.而且用AndroidStudio新建一个项目,drawable文件夹和mipmap文件夹都存在,而所有的ic_launcher都放在mipmap里,也说明了这个问题。

android 开发中R.drawable的问题

把图片拖动进来试试

如何在代码中动态为TextView设置drawableRight

<TextView android:id="@+id/Title" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="1" android:drawableRight="@drawable/check_down" android:gravity="center_vertical" android:textSize="24dip" android:maxLines="1" android:ellipsize="end"/>我们写在xml的时候,都是这么写的。那代码呢?我们发现TextView他有一个方法public void setCompoundDrawables (Drawable left, Drawable top, Drawable right, Drawable bottom);这个方法呢,就是可以在Java代码动态的画 左上右下几个方向类似于xml中的 android:drawableLeft="@drawable/icon"android:drawableTop="@drawable/icon"android:drawableRight="@drawable/icon"android:drawableButtom="@drawable/icon"具体在代码中的用法是:Drawable drawable = getResources().getDrawable(R.drawable.spinner_checked);drawable.setBounds(0, 0, drawable.getMinimumWidth(), drawable.getMinimumHeight()); //设置边界titleTv.setCompoundDrawables(null, null, drawable, null);//画在右边运行之后的效果界面比较丑,勿喷,大家也还可以通过这个方法实现public void setCompoundDrawablesWithIntrinsicBounds (Drawable left,Drawable top, Drawable right, Drawable bottom)

android程序能够直接通过r类引用drawable、layout和values目录中的资源,

android 程序中的资源ID是Android SDK自动生成的,Android SDK会自动生成一个R文件,所有的资源ID都在R文件中。以下是R文件的说明:/* AUTO-GENERATED FILE. DO NOT MODIFY. * This class was automatically generated by the * aapt tool from the resource data it found. It * should not be modified by hand. */提示开发者,这是一个自动生成的文件,不能手动去修改它。Android中的组件需要用一个int类型的值来表示,这个值也就是组件标签中的 id属性值。id属性只能接受资源类型的值ue004也就是必须以@开头的值,例如@id/abc、@+id/xyz等。 如果在@后面使用“+”ue004表示当修改完某个布局文件并保存后ue004系统会自动在 R.java文件中生成相应的int类型变量。变量名就是“/”后面的值ue004例如ue004@+id/xyz 会在R.java文件中生成int xyz = valueue004其中value是一个十六进制的数。如果 xyz在R.java中已经存在同名的变量ue004就不再生成新的变量而该组件会使用这已存在的变量的值。

drawable-Android Studio Drawable和Mipmap文件夹的区别是啥

按安卓的说法是:mipmap只是用来放启动图标的(原文:mipmap/ For app launcher icons.)。而PNG、JPEG、GIF、点九图、XML,还是全部放在drawable.而且用AndroidStudio新建一个项目,drawable文件夹和mipmap文件夹都存在,而所有的ic_launcher都放在mipmap里,也说明了这个问题。

颜色值怎么转换为drawable

new ColorDrawable(Color.parseColor("#4f453e") 完美解决

android 是什么drawable

一.@代表引用资源1.引用自定义资源。格式:@[package:]type/nameandroid:text="@string/hello"2.引用系统资源。格式:@android:type/name android:textColor="@android:color/opaque_red" 注意:其实@android:type/name是@[package:]type/name 的一个子类二.@*代表引用系统的非public资源。格式:@*android:type/name 系统资源定义分public和非public。public的声明在: <sdk_path>platformsandroid-8data esvaluespublic.xml @*android:type/name:可以调用系统定义的所有资源 @android:type/name:只能够调用publi属性的资源。 注意:没在public.xml中声明的资源是google不推荐使用的。三.?代表引用主题属性 另外一种资源值允许你引用当前主题中的属性的值。这个属性值只能在style资源和XML属性中使用;它允许你通过将它们改变为当前主题提供的标准变化来改变UI元素的外观,而不是提供具体的值。例如: android:textColor="?android:textDisabledColor" 注意,这和资源引用非常类似,除了我们使用一个"?"前缀代替了"@"。当你使用这个标记时,你就提供了属性资源的名称,它将会在主题中被查找,所以你不需要显示声明这个类型(如果声明,其形式就是?android:attr/android:textDisabledColor)。除了使用这个资源的标识符来查询主题中的值代替原始的资源,其命名语法和"@"形式一致:?[namespace:]type/name,这里类型可选。 四.@+代表在创建或引用资源 。格式:@+type/name 含义:”+”表示在R.java中名为type的内部类中添加一条记录。如"@+id/button"的含义是在R.java 文件中的id 这个静态内部类添加一条常量名为button。该常量就是该资源的标识符。如果标示符(包括系统资源)已经存在则表示引用该标示符。最常用的就是在定义资源ID中,例如: @+id/资源ID名 新建一个资源ID @id/资源ID名 应用现有已定义的资源ID,包括系统ID @android:id/资源ID名 引用系统ID,其等效于@id/资源ID名 android:id="@+id/selectdlg" android:id="@android:id/text1" android:id="@id/button3"

在textView中添加 drawable

TextView 有这些属性: drawableLeft是指定drawable放在文本的左边,其他类推; drawableStart与drawableLeft类似; drawablePadding指定文本和drawable之间padding

阿里Android规范-08-Bitmap、Drawable与动画

1.加载Bitmap图片时,inBitmap选项有什么作用? 【正确】 (1)重复利用内存空间 【错误】 (1)图片压缩 (2)限制清晰度 (3)设置位图信息 2.减小图片占用内存的方法 【正确】 (1)本地png图片预先用TinyPNG压缩 (2)使用inBitmap重复利用内存空间 (3)用RGB_565代替RGB_888 (4)根据实际需要对图片进行缩放 3.关于动画,下列说法 【正确】 (1)在动画结束的回调中,应该判断需要用到的资源是否已经被释放了 (2)应该根据设备情况选择性开启复杂动画。 (3)Activity不可见时,应该及时关闭动画。 【错误】 (1)Animation.AnimationListener#onAnimationEnd()回调可以准确可靠地告知动画结束时机。 4.APK中的png图片,应该怎么处理 【正确】 (1)图片用TinyPNG压缩,以减小包大小 【错误】 (1)尽可能使用原图,避免图片失真 (2)尽可能使用高清大图 (3)为了符合Goole的规范,将同一张图片分别放到drawable-hdpi、drawable-xhdpi、drawable-xxhdpi等目录下 5.以下关于定义一个drawable文件的说法 【正确】 (1)为不同屏幕密度的设备都提供一组drawable (2)为了精简apk整包大小,在满足需求并且了解清楚用户设备分布的情况的前提下,只支持几种屏幕密度的drawable、比如仅定义xhdpi中的drawable文件 (3)在xhdpi目录下定义live_reward_btn_pressed.png 【错误】 (1)所有drawable文件都放在drawable目录,不区分屏幕密度 (2)在xxxhdpi目录下放置不满足设备屏幕密度的小图 6.使用( )代替RGB_888,在不怎么降低视觉效果的前提下,减少内存占用 【正确】 (1)RGB_565 【错误】 (1)ARGB_8888 (2)ALPHA_8 (3)ARGB_4444 7.不建议使用AnimationDrawable的原因是 【正确】 (1)内存消耗过大 【错误】 (1)动画不流畅 (2)不兼容问题 8.关于RGB_565和RGB_888,以下说法 【正确】 (1)若视觉效果相似,应尽可能使用RGB_565 (2)RGB_888比RGB_565清晰 (3)RGB_565占用内存更少 【错误】 (1)RGB_555比RGB_888清晰 9.使用gif要注册什么 【正确】 (1)gif内存占用更大,需要注意控制内存 (2)需要注意单个gif的大小 (3)注意控制单个页面同时播放的gif个数 【错误】 (1)和普通图片一样,没有太多特殊 10.关于监听动画结束事件,以下做法 【正确】 (1)使用Handler.postDelay()来实现 (2)使用Animation.AnimationListener#onAnimationEnd()并加超时机制 【错误】 (1)直接使用Animation.AnimationListener#onAnimationEnd()回调 (20使用Animation.AnimationListener#onAnimationStart()回调

android中如何获得drawable的颜色值?

按你问题的问法,你的需求有点困难...drawable中存放的是图片资源,如果你获取一个彩虹图片的颜色值...如果按照你的问题,一定非要解决的话,需要加条件其一:纯色;其二,你要对底层输入输出流很!透彻;那可能性不高...so,你的问题可以改成获取一个纯色的且非图片的背景的颜色值源码是这样定义颜色背景的 public void setBackgroundColor(int color) { setBackgroundDrawable(new ColorDrawable(color)); }ColorDrawable是个继承Drawable的东西,这里面有个这么个方法 /** * Returns the alpha value of this drawable"s color. * * @return A value between 0 and 255. */ public int getAlpha() { return mState.mUseColor >>> 24; }应该是你想要的~

android关于几个drawable文件夹的区别

放不同分辨率的资源

Drawable和Bitmap的区别

一个Bitmap对象是一张bitmap格式image的表示(类似于Java.awt.image)。一个Drawable对象是“那些能够在其上面图画的任意对象”,它也许是一个bitmap对象,也可能是一个solid color、一个其他Drawable对象的集合,亦或是某种结构。 大多数Android UI框架喜欢用Drawable对象,而不是Bitmap对象。一个View可以接受任何Drawable对象作为background,一个Imageview可以显示Drawable前景对象;作为资源的Images一般加载为Drawable对象。

Android绘图基础--Canvas和Drawable

Github链接 画2D图形有两种方法: Canvas实际上是封装了各种draw方法的类,调用draw方法把图形绘制到底层的Surface上,即绘制在Window上。 这个例子中构造了两个Canvas和一个Bitmap,分别调用其draw方法,先是mCanvas往Bitmap里绘制一个方块,再在onDraw方法内调用canvas.drawBitmap绘制这个方块。 思考一个问题,为什么mCanvas需要设置Bitmap? 很简单,因为它没有持有一块内存地址,自然没法绘制。来看一下draw的起点ViewRootImpl(软件绘制,不开启硬件加速下)。 这个通过mSurface.lockCanvas返回的Canvas是View.draw的canvas变量,所以当1,2情况时,Canvas都持有一个Bitmap,指向共享内存里的某一小块,当调用Canvas.draw方法时就能绘制出东西。但对于自定义Canvas来说并不是,即使设置一个Bitmap和绘制了Bitmap,但不往共享内存上写,屏幕上是不会显示的,SurfaceView同理,通过Surface.lockCanvas获取持有共享内存的Canvas,绘制完毕后调用Surface.unlockCanvasAndPost把绘制内容显示到surface上并release掉Canvas。 顺带一提Canvas.save和Canvas.restore方法,如下Demo 效果图如 画的是三个颜色和旋转角度都不同的小方形。 步骤1把默认坐标系旋转20°,画出第一个蓝色的方形,步骤2保存当前的matrix(旋转了20°),继续旋转20°,此时坐标系已经旋转了40°,画出第二个黄色的方块,步骤3,恢复上一步保存的matrix(旋转了20°),此时坐标系还是旋转了20°,步骤4,再旋转40°,此时坐标系旋转了60°,画出第三个黑色方块。 Canvas.save用于保存当前matrix和clip,Canvas.restore用于恢复上次保存的matrix和clip。 Drawable是一个能画出来的物体的抽象,使用前需要调用setBounds确定位置和大小,通过getIntrinsicHeight和getIntrinsicWidth取到实际大小。Drawable可以有几种形式存在:Bitmap、Nine Patch、Vector、Shape、Layers等。 从Resource.getDrawable会判断是否.xml结尾,不是的话走6,7步,如果从xml中读取,需要getResource.getDrawable -> ResourceImpl.loadDrawableForCookie -> drawable.createFromXml -> DrawableInflater.inflateFromXmlForDensity -> drawable.inflateFromTag 看一下Shape实现类GradientDrawable的inflate实现,读取各项属性并赋值,到draw方法。 调用canvas.drawRect把mRect画出来,而mRect的赋值在ensureValidRect。[图片上传失败...(image-a25af0-1515826613001)] bounds在哪里设置的?答案是ImageView.updateDrawable内,会调用Drawable.getIntrinsicHeight赋值(从xml中size属性读取),再调用configureBounds -> setBounds,如果使用的不是ImageView,一定要在draw之前 调用setBounds ,否则size就会出错。 回到loadDrawableForCookie,再看一下6,7步加载图片的过程,通过AssetManager读取图片流数据,通过Drawable.createFromResourceStream这个我们经常使用的方法获取到Drawable。 取到屏幕密度之后调用BitmapFactory.decodeResourcesStream,计算密度后调用native创建Bitmap,感兴趣的同学可以看下更具体的分析文章(如 理解Bitmap )。 本文探究了两点 Android 7.1.1 源码 Android 官方文档, Canvas and Drawable , Drawable 等

Android Bitmap 与 Drawable之间的区别和转换

Bitmap - 称作位图,一般位图的文件格式后缀为bmp,当然编码器也有很多如RGB565、RGB888。作为一种逐像素的显示对象执行效率高,但是缺点也很明显存储效率低。我们理解为一种存储对象比较好。Drawable - 作为Android平下通用的图形对象,它可以装载常用格式的图像,比如GIF、PNG、JPG,当然也支持BMP,当然还提供一些高级的可视化对象,比如渐变、图形等。A bitmap is a Drawable. A Drawable is not necessarily a bitmap. Like all thumbs are fingers but not all fingers are thumbs.Bitmap是Drawable . Drawable不一定是Bitmap .就像拇指是指头,但不是所有的指头都是拇指一样.The API dictates: API规定:Though usually not visible to the application, Drawables may take a variety of forms: 尽管通常情况下对于应用是不可见的,Drawables 可以采取很多形式:Bitmap: the simplest Drawable, a PNG or JPEG image. Bitmap: 简单化的Drawable, PNG 或JPEG图像.Nine Patch: an extension to the PNG format allows it to specify information about how to stretch it and place things inside of it.Shape: contains simple drawing commands instead of a raw bitmap, allowing it to resize better in some cases.Layers: a compound drawable, which draws multiple underlying drawables on top of each other.States: a compound drawable that selects one of a set of drawables based on its state.Levels: a compound drawable that selects one of a set of drawables based on its level.Scale: a compound drawable with a single child drawable, whose overall size is modified based on the current level.

Android如何由Uri创建Drawable

A Uri object can be used to reference a resource in an APK file. The Uri should be one of the following formats:android.resource://package_name/id_numberpackage_name is your package name as listed in your AndroidManifest.xml. For examplecom.example.myapp id_number is the int form of the ID.The easiest way to construct this form isUri uri = Uri.parse("android.resource://com.example.myapp/" + R.raw.my_resource");android.resource://package_name/type/namepackage_name is your package name as listed in your AndroidManifest.xml. For examplecom.example.myapp type is the string form of the resource type. For example, raw or drawable . name is the string form of the resource name. That is, whatever the file name was in your res directory, without the type extension. The easiest way to construct this form isUri uri = Uri.parse("android.resource://com.example.myapp/raw/my_resource");

如何在Drawable的一张图片上写文字

/** * 图片上画字 * */ private Bitmap drawTextAtBitmap(Bitmap bitmap,String text){ int x = bitmap.getWidth(); int y = bitmap.getHeight(); // 创建一个和原图同样大小的位图 Bitmap newbit = Bitmap.createBitmap(x, y, Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(newbit); Paint paint = new Paint(); // 在原始位置0,0插入原图 canvas.drawBitmap(bitmap, 0, 0, paint); paint.setColor(Color.parseColor("#dedbde")); paint.setTextSize(20); // 在原图指定位置写上字 canvas.drawText(text, 53 , 30, paint); canvas.save(Canvas.ALL_SAVE_FLAG); // 存储 canvas.restore(); return newbit; }

android 怎么裁剪drawable

可使用ScaleType来指定drawable的缩放方式,来实现裁剪效果。ImageView的Scaletype决定了图片在View上显示时的样子,如进行何种比例的缩放,及显示图片的整体还是部分,等等。设置的方式包括:1. 在layout xml中定义android:scaleType="CENTER"2. 或在代码中调用imageView.setScaleType(ImageView.ScaleType.CENTER);Scaletype的取值说明:1. SetScaleType(ImageView.ScaleType.CENTER);按图片的原来size居中显示,当图片长/宽超过View的长/宽,则截取图片的居中部分显示2. SetScaleType(ImageView.ScaleType.CENTER_CROP);按比例扩大图片的size居中显示,使得图片长(宽)等于或大于View的长(宽) 3. setScaleType(ImageView.ScaleType.CENTER_INSIDE);将图片的内容完整居中显示,通过按比例缩小或原来的size使得图片长/宽等于或小于View的长/宽 4. setScaleType(ImageView.ScaleType.FIT_CENTER);把图片按比例扩大/缩小到View的宽度,居中显示5. FIT_START, FIT_END在图片缩放效果上与FIT_CENTER一样,只是显示的位置不同,FIT_START是置于顶部,FIT_CENTER居中,FIT_END置于底部。在此就不给出示例了。6. FIT_XY不按比例缩放图片,目标是把图片塞满整个View。

Android res里面的drawable(ldpi、mdpi、hdpi、xhdpi、xxhdpi)

Android res里面的drawable(ldpi、mdpi、hdpi、xhdpi、xxhdpi) 把同一张图片修改名称后保存在不同的文件夹下,分辨率越大,图片显示就越小, drawable:主要放置xml配置文件或者对分辨率要求较低的图片 drawalbe-ldpi:低分辨率的图片,如QVGA (240x320) drawable-mdpi:中等分辨率的图片,如HVGA (320x480) drawable-hdpi:高分辨率的图片,如WVGA (480x800),FWVGA (480x854) drawable-xhdpi:至少960dp x 720dp Android有个自动匹配机制去选择对应的布局和图片资源。 系统会根据机器的分辨率来分别到这几个文件夹里面去找对应的图片。 在开发程序时为了兼容不同平台不同屏幕,建议各自文件夹根据需求均存放不同版本图片。

android studio中的drawable-v24怎么创建

我们一般将APP的icon放在minmap文件夹下,其他图片资源放在drawable文件夹下。下面我们看下AndroidStudio下如何创建drawable、drawable-hdpi、drawable-mdpi、drawable-xhdpi、drawable-xxhdpi。1、切换到Project视图下,找到对应moudle的res文件夹,右击“res”--》 “new”--》“Android resource directory”,弹出“New Resource Directory”对话框。2、按照上图的一二三步骤,点击第三步后,会出现一下内容,选择要添加drawable的分辨率,点击“ok”按钮即可。

如何将drawable转换为int类型

String pic=new String(“R.drawable.picname”); int image=this.getResources().getIdentifier(pic,“drawable”,getCallingPackage());如果String 没像楼上用的是.png 而是直接定义的R.drawable.XX那么就不需要像楼上一样,他用substring只是用来去除.png

Drawable和Mipmap的区别

studio mipmap 和drawable的区别!最近使用studio 发现drawle-hdpi 都没有了换成了mipmap-hdpi,这两个目录有什么区别呢?使用上没有任何区别,你把它当drawable用就好了。但是用mipmap系统会在缩放上提供一定的性能优化。官方介绍:Mipmapping for drawablesUsing a mipmap as the source for your bitmap or drawable is a simple way to provide a quality image and various image scales, which can be particularly useful if you expect your image to be scaled during an animation.Android 4.2 (API level 17) added support for mipmaps in the Bitmap class—Android swaps the mip images in your Bitmap when you"ve supplied a mipmap source and have enabled setHasMipMap(). Now in Android 4.3, you can enable mipmaps for a BitmapDrawable object as well, by providing a mipmap asset and setting the android:mipMap attribute in a bitmap resource file or by calling hasMipMap().应用场景:If you know that you are going to draw this bitmap at less than 50% of its original size, you may be able to obtain a higher quality by turning this property on. Note that if the renderer respects this hint it might have to allocate extra memory to hold the mipmap levels for this bitmap.一个应用实例:Nexus 6ScreenThe Nexus 6 boasts an impressive 5.96” Quad HD screen display at a resolution of 2560 x 1440 (493 ppi). This translates to ~ 730 x 410 dp (density independent pixels).Check your assetsIt has a quantized density of 560 dpi, which falls in between the xxhdpi and xxxhdpi primary density buckets. For the Nexus 6, the platform will scale down xxxhdpi assets, but if those aren"t available, then it will scale up xxhdpi assets.Provide at least an xxxhdpi app icon because devices can display large app icons on the launcher. It"s best practice to place your app icons in mipmap- folders (not the drawable- folders) because they are used at resolutions different from the device"s current density. For example, an xxxhdpi app icon can be used on the launcher for an xxhdpi device.p icon used on Nexus 6 device launcherres/mipmap-mdpi/ic_launcher.pngmipmap-hdpi/ic_launcher.pngmipmap-xhdpi/ic_launcher.pngmipmap-xxhdpi/ic_launcher.pngmipmap-xxxhdpi/ic_launcher.png # App icon used on Nexus 6 device launcherChoosing to add xxxhdpi versions for the rest of your assets will provide a sharper visual experience on the Nexus 6, but does increase apk size, so you should make an appropriate decision for your app.res/drawable-mdpi/ic_sunny.pngdrawable-hdpi/ic_sunny.pngdrawable-xhdpi/ic_sunny.pngdrawable-xxhdpi/ # Fall back to these if xxxhdpi versions aren"t availableic_sunny.pngdrawable-xxxhdpi/ # Higher resolution assets for Nexus 6ic_sunny.png总结这个实例总结一下是这样:Nexus 6 有 493 ppi,它刚好在 xxhdpi和xxxhdpi之间,所以显示的时候需要对xxxhdpi的资源进行缩小,如果你用了mipmap-xxxhdpi,那么这里会对sclae有一个优化,性能更好,占用内存更少。所以现在官方推荐使用mipmap:It"s best practice to place your app icons in mipmap- folders (not the drawable- folders) because they are used at resolutions different from the device"s current density.

drawable定义颜色 和color定义颜色 有什么区别吗

一个是colordrawable,一个是颜色的字符串值(colorstringvalues)。也就是说一个colorresource<颜色资源>可以作为一个drawable使用Resource.getDrawable()获得。

怎么拿到 drawable 的 宽高

在ImageView中的image,可以使用getWidth()和getHeight()来获取宽度和高度,但是获得的image宽度和高度不是很精确的;对于背景图片,你首先要获取背景的Drawable对象,然后将Drawable对象转换为BitmapDrawable,这样你就可以将背景图片作为Bitmap对象并获取其宽度和高度了。代码如下:Bitmap b = ((BitmapDrawble)imageView.getBackground()).getBitmap(); int w = b.getWidth(); int h = b.getHeight(); or do like this wayimageView.setDrawingCacheEnabled(true); Bitmap b = imageView.getDrawingCache(); int w = b.getWidth(); int h = b.getHeight(); 或者也可以像下面这样:imageView.setDrawingCacheEnabled(true); Bitmap b = imageView.getDrawingCache(); int w = b.getWidth(); int h = b.getHeight(); 上面的代码仅仅可以为你获取当前ImageView的大小:imageView.getWidth(); imageView.getHeight(); 如果你要获取Drawable image对象的大小,可用如下代码:Drawable d = getResources().getDrawable(R.drawable.yourimage); int h = d.getIntrinsicHeight(); int w = d.getIntrinsicWidth();

android 怎么裁剪drawable

Android,想获取这个对象里面的Drawable应该使用那个方法?

getResources().getDrawable(R.id.***)

Android Bitmap 与 Drawable之间的区别和转换

Bitmap - 称作位图,一般位图的文件格式后缀为bmp,当然编码器也有很多如RGB565、RGB888。作为一种逐像素的显示对象执行效率高,但是缺点也很明显存储效率低。我们理解为一种存储对象比较好。Drawable - 作为Android平下通用的图形对象,它可以装载常用格式的图像,比如GIF、PNG、JPG,当然也支持BMP,当然还提供一些高级的可视化对象,比如渐变、图形等。A bitmap is a Drawable. A Drawable is not necessarily a bitmap. Like all thumbs are fingers but not all fingers are thumbs.Bitmap是Drawable . Drawable不一定是Bitmap .就像拇指是指头,但不是所有的指头都是拇指一样.The API dictates: API规定:Though usually not visible to the application, Drawables may take a variety of forms: 尽管通常情况下对于应用是不可见的,Drawables 可以采取很多形式:Bitmap: the simplest Drawable, a PNG or JPEG image. Bitmap: 简单化的Drawable, PNG 或JPEG图像. Nine Patch: an extension to the PNG format allows it to specify information about how to stretch it and place things inside of it.Shape: contains simple drawing commands instead of a raw bitmap, allowing it to resize better in some cases.Layers: a compound drawable, which draws multiple underlying drawables on top of each other.States: a compound drawable that selects one of a set of drawables based on its state.Levels: a compound drawable that selects one of a set of drawables based on its level.Scale: a compound drawable with a single child drawable, whose overall size is modified based on the current level.小结:对比项 显示清晰度 占用内存 支持缩放 支持色相色差调整 支持旋转 支持透明色 绘制速度 支持像素操作Bitmap 相同 大 是 是 是 是 慢 是Drawable 相同 小 是 否 是 是 快 否Drawable在内存占用和绘制速度这两个非常关键的点上胜过Bitmap

drawable xml绘图简单用法

drawable里的xml文件做绘图资源非常方便,不需要适配屏幕dpi,几个比较简单的用法: sharp是比较常用的drawable,可以绘制line、oval、rectangle和 ring。以sharp为例绘制一个红色椭圆和蓝色圆环。 预览下: 接着画一个外环宽度为8dp的圆环 故名思议,layer-list就是图层,把几个可绘制的drawable排列起来,layer-list最下边的item会放置在最上层,我们把之前的红色圆形和蓝色环形重叠起来,绘制一个带蓝边的红圆。 预览: state-list是根据对象的状态分别绘制不同的图形,比如的是绘制一个圆形按钮,平时是红色,按下时是蓝色。 需要注意的是,按下状态的item要写在通常状态之前。把这个xml文件设置一个button的background,就可以使用了。 https://developer.android.google.cn/guide/topics/resources/drawable-resource