前言

大家好,给大家带来Android开发工程师文集-1 小时学会各种Drawable的概述,希望你们喜欢

Drawable介绍

Drawable为抽象类,drawable与view有区别的地方,主要是体现事件和交互性上面。

view是面向用户的,是可见的控件,能给它添加点击事件。drawable则相反,不能面向,也不可见,也不能添加点击事件。

drawable有好多子类,drawable为抽象类,所以有很多子类来继承它。

主要原理方法

  • draw()
  • setBounds()

BitmapDrawable 巴特美drawable

该子类为bitmap的包装,可以保持原图片大小,填充,拉伸。

<bitmap
xmlns:android="http://schemas.android.com/apk/res/android"
android:src="@drawable/ic_launcher"
android:tileMode="mirror"//平铺
android:antialias="true"//消除锯齿
android:dither="true">
</bitmap>

LayerDrawable 勒儿drawable

该子类就是来管理一组drawable的,第一张图片的放置,那么第二张图片会在第一张图片上,由此依次放置。

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:top="40dp"
android:left="40dp"
android:src="@drawable/picture_1"
android:gravity="center">
</item>
<item
android:top="40dp"
android:left="40dp"
android:src="@drawable/picture_2"
android:gravity="center">
</item>
</layer-list>

StateListDrawable

该类StateListDrawable根据不同状态提供不同图片。

<?xml version="1.0" encoding="utr-8"?>
<selector
xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_focused="true" android:drawable="@drawable/botton_1"/>
<item android:state_pressed="true" android:drawable="@drawable/botton_2"/>
<item android:state_selected="true" android="@drawable/botton_3"/>
<item android:drawable="@drawable/botton_4"/>
</selector>

LevelListDrawable

该子类有不同的item -setlevel();

<level-list
xmlns:android="http://schemas.android.om/apk/res/android">
<item
android:drawable="@drawable/off"
android:minLevel="5"
android:maxLevel="10">
</item>
<item
android:drawable="@drawable/on"
android:minLevel="10"
android:maxLevel="20">
</item>
</level-list>
public void On(View v){
iv.setImageLevel( //int );
}

TransitionDrawable --- transi tion drawable

为LayerDrawable的子类,只有两张图片的变化,没有多个图片,LayerDrawable可以有多个item,而transitiondrawable只有两个item。

<transition
xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/off">
</item>
<item android:drawable="@drawable/on">
</item>
</transition>
public void On(View v){
TransitionDrawable drawable=iv.getDrawable();
//开启 startTransition();
drawable.startTransition(2000);
}
public void Off(View v){
TranstionDrawable drawable=iv.getDrawable();
//关闭 reverseTransition();
drawable.reverseTransition(2000);
}

InsertDrawable

InsertDrawable表示嵌入图片==padding

<inset
xmlns:android="http://schemas.android.com/apk/res/android"
android:drawable="@drawable/background"
android:insetLeft="50dp"
android:insetRight="50dp"
android:insetTop="50dp"
android:insetBottom="50dp">
</inset>

ClipDrawable 可累drawable

该ClipDrawabel是一种裁剪的形式,如同进度条。

<clip xmlns:android="http://schemas.android.com/apk/res/android"
android:drawable="@drawable/picture"
android:clipOrientation="horizontal"
android:gravity="left"/>
ClipDrawable drawable=iv.getDrawable();
drawable.setLevel(5000);
//范围0-10000;

DIY的Drawable

自己动手试试吧

梳理:

BitmapDrawable,

LayerDrawable,

StateListDreawable,

LevelListDrawable,

TransitionDrawable,

InsertDrawable,

ClipDrawable.

总结

  • 本文讲了Android开发工程师文集-1 小时学会各种Drawable,如果您还有更好地理解,欢迎沟通
  • 定位:分享 Android&Java知识点,有兴趣可以继续关注

Android开发工程师文集-1 小时学会各种Drawable的更多相关文章

  1. Android开发工程师文集-1 小时学会Widget小组件开发

    前言 大家好,给大家带来Android开发工程师文集-1 小时学会Widget小组件开发的概述,希望你们喜欢 学会用Widget (小组件) Widget小组件很方便,很快捷,可以个性化,自己定制,相 ...

  2. Android开发工程师文集-1 小时学会SQLite

    前言 大家好,给大家带来Android开发工程师文集-1 小时学会SQLite的概述,希望你们喜欢 内容 什么是Sqlite: 效率高,开源,小型,程序驱动,支持事务操作,无数据类型,可嵌入的关系型数 ...

  3. Android开发工程师文集-Fragment,适配器,轮播图,ScrollView,Gallery 图片浏览器,Android常用布局样式

    Android开发工程师文集-Fragment,适配器,轮播图,ScrollView,Gallery 图片浏览器,Android常用布局样式 Fragment FragmentManager frag ...

  4. Android开发工程师文集-Activity生命周期,启动方式,Intent相关介绍,Activity详细讲解

    前言 大家好,给大家带来Android开发工程师文集-Activity生命周期,启动方式,Intent相关介绍,Activity详细讲解的概述,希望你们喜欢 Activity是什么 作为一个Activ ...

  5. Android开发工程师文集-相关控件的讲解,五大布局

    前言 大家好,给大家带来Android开发工程师文集-相关控件的讲解,五大布局的概述,希望你们喜欢 TextView控件 TextView控件有哪些属性: android:id->控件的id a ...

  6. Android开发工程师文集-layout_weight讲解

    前言 大家好,给大家带来Android开发工程师文集-layout_weight讲解的概述,希望你们喜欢 Layout_weight的相关代码展示 <TextView android:layou ...

  7. Android开发工程师文集-Android知识点讲解

    前言 大家好,给大家带来Android开发工程师文集-Android知识点讲解的概述,希望你们喜欢 WebView讲解 一般通过Intent调用系统的浏览器: Uri uri = Uri.parse( ...

  8. Android开发工程师文集-提示框,菜单,数据存储,组件篇

    提示框,菜单,数据存储,组件篇 Toast Toast.makeText(context, text, 时间).show(); setDuration();//设置时间 setGravity();// ...

  9. 帮朋友急招PHP、Android开发工程师 西安 工资8k-12k

    PHP高级工程师岗位要求: 1. 有两年以上PHP开发经验, 2. 精通PHP+MySQL程序设计及开发,拥有良好的代码习惯,要求结构清晰,命名规范,逻辑性强,代码冗余率低. 3. 熟悉面向对象的软件 ...

随机推荐

  1. OS模块的介绍

    os,语义为操作系统,模块提供了访问多个操作系统服务的功能,可以处理文件和目录这些我们日常手动需要做的操作.os和它的子模块os.path还包括一些用于检查.构造.删除目录和文件的函数,以及一些处理路 ...

  2. java 泛型详解-绝对是对泛型方法讲解最详细的,没有之一

    对java的泛型特性的了解仅限于表面的浅浅一层,直到在学习设计模式时发现有不了解的用法,才想起详细的记录一下. 本文参考java 泛型详解.Java中的泛型方法. java泛型详解 1. 概述 泛型在 ...

  3. fastjson中对象转化为字符串时过滤某字段

    fastjson中对象转化为字符串时过滤某字段,有两种方法: 一.在该字符定义上方添加"@JSONField(serialize=false)"注解: 二.调用含有Property ...

  4. JAVA设计模式一策略模式(Strategy Pattern)

    什么是设计模式? 就是一些经验.让程序代码更具弹性.好维护.代码复用的经验.而且设计模式都遵从一些OO设计原则. 题外话:以下罗列出常用的OO设计原则:链接 本文章介绍策略模式(Strategy Pa ...

  5. cdnbest如何在站点里开启强制缓存

    在站点设置中如下图设置: 强制缓存有两种方式,一种是文件类型,一种是url方式

  6. animation渐进实现点点点等待效果

    <style>    @keyframes dot {     0% { width: 0; }     33% { width: .2em; }     66% { width: .5e ...

  7. 判断JS的数据类型

    typeof.instanceof. constructor. prototype方法比较 (摘自如何判断JS中的数据类型) 1. 使用typeof操作符. 对一个值使用 typeof 操作符可能返回 ...

  8. Curator框架基础使用

    为了更好的实现java操作zookeeper服务器.后来出现Curator框架,非常强大,目前已经是Apache的顶级项目,有丰富的操作,,例如:session超时重连,主从选举.分布式计数器,分布式 ...

  9. 150. Evaluate Reverse Polish Notation逆波兰表达式

    [抄题]: Evaluate the value of an arithmetic expression in Reverse Polish Notation. Valid operators are ...

  10. [leetcode]42. Trapping Rain Water雨水积水问题

    Given n non-negative integers representing an elevation map where the width of each bar is 1, comput ...