前言

大家好,给大家带来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. Pandas合并数据集之merge、join方法

    合并数据集 pandas.merge 可根据一个或多个键将不同DataFrame中的行连接起来. pandas.concat 可以沿着一条轴将多个对象堆叠到一起. combine_first merg ...

  2. 2019南昌网络赛-M(二分)

    题目链接:https://nanti.jisuanke.com/t/38232 题意:给定字符串s(长度<=1e5),然后N组样例(N<=1e5),每组输入一个字符串t判断t是否为s的字串 ...

  3. oracle 查询索引和主键

    ORACLE: 1.查主键名称: select * from user_constraints where table_name = 'AAA' and constraint_type ='P'; 查 ...

  4. [SpringBoot]Web综合开发-笔记

    Web开发 Json接口开发 @RestController 给类添加 @RestController 即可,默认类中的方法都会以 json 的格式返回. 自定义filter filter作用: 用于 ...

  5. jsonarray根据id排序

    List<JSONObject> jsonValue=new ArrayList<JSONObject>(); JSONArray sortJsonarr=new JSONAr ...

  6. OOm是否可以try catch ?

    只有在一种情况下,这样做是可行的: 在try语句中声明了很大的对象,导致OOM,并且可以确认OOM是由try语句中的对象声明导致的,那么在catch语句中,可以释放掉这些对象,解决OOM的问题,继续执 ...

  7. sqlserver 组内排序

    关键词 partition(分区函数[pɑː'tɪʃ(ə)n])  by 参考: https://www.cnblogs.com/sanlang/archive/2009/03/24/1420360. ...

  8. 配置apache虚拟域名(phpStudy2016)

    以前也一个个的配置过apache.php和mysql,现在嫌麻烦,就用的phpStudy. 装好之后,发现127.0.0.1可以访问,但是localhost就不可以访问.大概是因为apache没有配置 ...

  9. 三 分析easyswoole源码(启动服务&TableManager,略提及Cache工具的原理)

    前文连接,讲了es是如何启动swoole服务的. 里面有一个工具类TableManager.这个类为了处理进程间数据共享.是对swoole_table的一层封装swoole_table一个基于共享内存 ...

  10. Step by Step Guide on Yanhua ACDP Clear BMW EGS ISN

    Yanhua Mini ACDP authorize new function on BMW EGS ISN clearing.So here UOBDII want to share this st ...