1.获取Drawable的内部宽\高:getIntrinsicHeight/Width。但是并不是所有Drawable都有内部宽高(比如说一个颜色形成的宽高,Drawable的宽高不等于大小,大小是根据VIew的大小而定的)

2.BitmapDrawable

作用:引用原始图片,但是附加各种渲染属性。

3.ShapeDrawable

使用:以前有分析过,就不分析了。

注意:<gradient>与<solid>冲突无法同时使用。<stroke>中只要dashWidth和dashGap有一个为0则虚线效果就不生效。

4.LayerDrawable

使用:以前有分析过,就不分析了

5.StateDrawable

使用:以前有分析过,就不分析了

6.LevelListDrawable

作用:当每个等级不同,使用不同的drawable。

语法:

<level-list>
<item
android:drawable="@drawable/resource"
android:maxLevel="integer"
android:minLevel="integer"/>
</level-list>

详解:每个<item>中装载drawable并设置最小和最大等级,当它作为View的背景时,通过Drawable的setLevel()方法设置不同等级,当等级在某个<item>的最小最大范围内的时候则选定该<item>并切换drawable(所以说等级最好不好重叠)。作为ImageView的src的时候则使用imageView.setImageLevel()来设置。

注:Drawable的等级时候范围的在0~10000之内

7.TranslationDrawable

作用:可以通过调用startTransition()和reverseTransition()实现两张图片的切换。

使用:实现淡入淡出的效果

<!--只能是两张图,两张图以上的图不显示-->
<transition xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@mipmap/ic_launcher"/>
<item android:drawable="@mipmap/test1"/>
</transition>

translation_test

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.maikefengchao.circleview.MainActivity"> <ImageView
android:id="@+id/main_iv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/translation_img"/>
</LinearLayout>

activity_main

  protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mIvShow = (ImageView)findViewById(R.id.main_iv);
TransitionDrawable transition = (TransitionDrawable)mIvShow.getDrawable();
transition.startTransition(1000);
//根据测试说明,第二章图以淡入的形式显示,只是覆盖第一张图,第一张图并未消失
}

MainActivity

8.InsetDrawable

作用:将其他Drawable内嵌到自己当中,当一个View希望自己的背景比自己的实际区域小的时候。

使用:设置缩小上下左右距离

9.ScaleDrawable

作用:根据等级缩放比例

使用:通过百分比设置scaleHeight/Width,但是同时还需要在java代码中用drawble.setLevel()设置其Level属性,因为drawable的level为0的时候不显示,根据P258页的源码可知。

同时level越大则内部的drawble看起来就越大,level最大等级是10000。

注意:根据自己的Level指定Drawable的缩放比例

10.ClipDrawable

作用:裁剪

使用:以前有

参考:http://blog.csdn.net/wode_dream/article/details/38584693

11.自定义Drawable

①、继承Drawable  ②、重写抽象方法

自定义View:http://blog.csdn.net/lmj623565791/article/details/43752383

Android的Drawable的更多相关文章

  1. Android使用Drawable资源之使用ClipDrawable资源 实现进入条

    以前我自定义的进度条(就是咱们现在工程中用的)是从android的源码中扒出来的一个XML,然后把里面的图片给替换了.一直不知道它的具体原理是什么. 今天得空研究了一下,发现它的原理其实就是用的and ...

  2. Android之drawable state各个属性详解

    android:drawable 放一个drawable资源android:state_pressed 是否按下,如一个按钮触摸或者点击.android:state_focused 是否取得焦点,比如 ...

  3. Android Studio中使用android:src="@drawable/ic_launcher"报错

    今天尝试着安装了Android Studio,界面确实不错,列表什么的也改了很多. 然后新建工程,习惯性在activity_main那里加上一段代码测试看看: <ImageView androi ...

  4. Android动画Drawable Animation

    Drawable Animation是逐帧动画,那么使用它之前必须先定义好各个帧.我们可以通过代码定义,也可以使用xml文件定义,一般使用后者.如下: <?xml version="1 ...

  5. Android 自定义Drawable

    1.使用BitmapShader实现图片圆角 public class CornerDrawable extends Drawable { private Paint mPaint; private ...

  6. Android的Drawable缓存机制源码分析

    Android获取Drawable的方式一般是Resources.getDrawable(int),Framework会返回给你一个顶层抽象的Drawable对象.而在Framework中,系统使用了 ...

  7. Android 自带图标库 android.R.drawable

    在xml文件中调用. android:title="@string/secure_connect"android:orderInCategory="100"an ...

  8. 玩转Android之Drawable的使用

    Drawable天天用,可你是否对Drawable家族有一个完整的认知?今天我们就来系统的学习一下Drawable的使用. 1.概述 用过Drawable的筒子都知道Drawable有很多种,有的时候 ...

  9. 《Android开发艺术探索》读书笔记 (6) 第6章 Android的Drawable

    本节和<Android群英传>中的第六章Android绘图机制与处理技巧有关系,建议先阅读该章的总结 第6章 Android的Drawable 6.1 Drawable简介 (1)Andr ...

随机推荐

  1. YII Framework学习教程-YII的Model-开发规范-路径别名-命名空间

    到这里,大概的YII开发已经基本可以,但是下面要将的所有课程,学完之后可以让你更爱YII.下面的教程是讲的MVC的M,model.数据,业务,代码的集中地区.所以开始之前,学学开发规范-路径别名-命名 ...

  2. 几项有用的JQUERY代码

    检测IE浏览器 在进行CSS设计时,IE浏览器对开发者及设计师而言无疑是个麻烦.尽管IE6的黑暗时代已经过去,IE浏览器家族的人气亦在不断下滑,但我们仍然有必要对其进行检测.当然,以下片段亦可用于检测 ...

  3. shell date格式化输出

    1-  echo `date "+%Y-%m-%d %H:%M:%S"` 2014-11-13 15:06:26 2-  echo `date "+%y-%m-%d %H ...

  4. [原]C语言实现的快速排序,采用分治策略,递归实现

    #include<stdio.h> #define LEN 8 int a[LEN] = { 5, 2, 4, 7, 1, 3, 2, 6 }; int Partition(int a[] ...

  5. WPF中获取控件之间的相对位置

    1,获取元素相对于父控件的位置 使用Vector VisualTreeHelper.GetOffset(Visual visual)方法,其会返回visual在其父控件中的偏移量,然后你再将返回值的V ...

  6. spring springMVC mybatis 集成

    最近闲来无事,整理了一下spring springMVC mybatis 集成,关于这个话题在园子里已经有很多人写过了,我主要是想提供一个完整的demo,涵盖crud,事物控制等. 整个demo分三个 ...

  7. Windows下FFmpeg快速入门 <第二篇>

    FFmpeg简介 FFmpeg是什么? FFmpeg是用于录制.转换和流化音频和视频的完整解决方案, 包括 libavcodec ,一套领先的音/视频编解码类库.FFmpeg 在Linux上开发,当可 ...

  8. 【温故而知新-万花筒】C# 异步编程 逆变 协变 委托 事件 事件参数 迭代 线程、多线程、线程池、后台线程

    额基本脱离了2.0 3.5的时代了.在.net 4.0+ 时代.一切都是辣么简单! 参考文档: http://www.cnblogs.com/linzheng/archive/2012/04/11/2 ...

  9. Quartz.NET作业调度框架详解

    Quartz.NET作业调度框架详解 http://www.cnblogs.com/lmule/archive/2010/08/28/1811042.html

  10. 用试探回溯法解决N皇后问题

    学校数据结构的课程实验之一. 数据结构:(其实只用了一个二维数组) 算法:深度优先搜索,试探回溯 需求分析: 设计一个在控制台窗口运行的“n皇后问题”解决方案生成器,要求实现以下功能: 由n*n个方块 ...