Android-Drawable(三)

前两两篇文章已经学习了6个Drawable,接下来我们继续学习剩下的一些Drawable.

本章我们学习一下的Drawable

  1. InsetDrawable
  2. ClipDrawable
  3. RotateDrawable
  4. LevelListDrawable
  5. AnimationDrawable
  6. TransitionDrawable

Android系统的Drawable

InsetDrawable

有时候为View设置了一个Drawable,我们并不想让Drawable填充满整个View,这时候我们就可以使用 InsertDrawable 来使Drawable与View之间有一些间隔即Drawable和View之间的内间距。

<!--可以统一设置内间距,也可以分别设置-->
<?xml version="1.0" encoding="utf-8"?>
<inset xmlns:android="http://schemas.android.com/apk/res/android"
android:drawable="@drawable/wallpaper"
android:inset="10dp" />

ClipDrawable

通过 ClipDrawable 我们可以裁剪Drawable。

ClipDrawable

<?xml version="1.0" encoding="utf-8"?>
<clip xmlns:android="http://schemas.android.com/apk/res/android"
android:clipOrientation="horizontal"
android:drawable="@drawable/pet9"
android:gravity="center" />

代码

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main) clipSB.max = 10000 clipSB.setOnSeekBarChangeListener(object : SeekBar.OnSeekBarChangeListener {
override fun onStartTrackingTouch(seekBar: SeekBar?) {}
override fun onStopTrackingTouch(seekBar: SeekBar?) {} override fun onProgressChanged
(seekBar: SeekBar?, progress: Int, fromUser: Boolean) {
var clip = petIV.drawable as ClipDrawable
clip.setLevel(clipSB.progress)
}
})
}

在实现功能的代码中我们调用了一个 setLevel 方法,Level属性代表的是被裁剪的程度,0是完全裁剪了 drawable不可见,10000 是最大值,代表Drawable完全可见。

在声明 Clipdrawable的时候有两个需要注意的属性 clipOrientationgravity 其中clipOrientation代表的剪切的方向,gravity需要和clipOrientation 结合使用,通过gravity可以设置剪切的方式。比如说从两边到中间、从左到右等等,并且gravity 属性是可通过 | 操作符来多个共用的,gravity的详细信息如下。 图片来自《Android开发艺术探索》

RotateDrawable

RotateDrawable可以将Drawable进行旋转操作,可以通过设置Level来控制旋转Level依然是 0-10000 之间的数

<?xml version="1.0" encoding="utf-8"?>
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
android:drawable="@drawable/pet9"
android:fromDegrees="-90"
android:pivotX="50%"
android:pivotY="50%"
android:visible="true" />

RotateDrawable属性详解

  • Drawable 设置Drawable
  • fromDegrees 开始的角度
  • toDegrees 结束的角度
  • pivotX 旋转的轴心的X轴的位置,是一个百分数,默认为50%
  • pivotY 旋转的轴心的Y轴的位置,是一个百分数,默认为50%
  • isable Drawable是否可见

LevelListDrawable

Level



ListDrawable会根据不同的Level来提供不同的Drawable。 同样是通过Level来设置,系统会根据Level来判断最适合的区间。

<?xml version="1.0" encoding="utf-8"?>
<level-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:drawable="@drawable/pet9"
android:maxLevel="1000"
android:minLevel="0" />
<item
android:drawable="@drawable/dog"
android:maxLevel="5000"
android:minLevel="1001" />
<item
android:drawable="@drawable/nopicture"
android:maxLevel="10000"
android:minLevel="5001" />
</level-list>

AnimationDrawable

帧动画,也算是一种Drawable。每一个item 表示动画的一帧,duration表示这一帧持续的时间。

<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
android:oneshot="false">
<item android:drawable="@drawable/frame1" android:duration="100"/>
<item android:drawable="@drawable/frame2" android:duration="100"/>
<item android:drawable="@drawable/frame3" android:duration="100"/>
<item android:drawable="@drawable/frame4" android:duration="100"/>
<item android:drawable="@drawable/frame5" android:duration="100"/>
<item android:drawable="@drawable/frame6" android:duration="100"/>
<item android:drawable="@drawable/frame7" android:duration="100"/>
<item android:drawable="@drawable/frame8" android:duration="100"/>
<item android:drawable="@drawable/frame9" android:duration="100"/>
<item android:drawable="@drawable/frame10" android:duration="100"/>
<item android:drawable="@drawable/frame11" android:duration="100"/>
<item android:drawable="@drawable/frame12" android:duration="100"/>
</animation-list>

TransitionDrawable

TransitionDrawable可以在__两个__Drawable之间平滑的切换--以淡入淡出的方式。

<?xml version="1.0" encoding="utf-8"?>
<transition xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/dog" />
<item android:drawable="@drawable/pet9" />
</transition>

开始播放

 var td = this.petIV.drawable as TransitionDrawable
//设置两个Drawable转换的时间
td.startTransition(3000)
//反过来切换-先显示第二张再显示第一张
//td.reverseTransition(3000)

Android-Drawable(三)的更多相关文章

  1. Android动画 三种动画

    Android可以使用三种动画 Frame Animation-帧动画 ,就像GIF图片,通过一系列Drawable依次显示来模拟动画的效果 Tween Animation-补间动画,给出两个关键帧, ...

  2. Android Drawable 与 LayerList综合汇总

    先看需求.要求这样的效果 上代码 <?xml version="1.0" encoding="utf-8"? > <layer-list xm ...

  3. Android Drawable绘图学习笔记(转)

    如何获取 res 中的资源 数据包package:android.content.res 主要类:Resources Android SDK中的简介:Class for accessing an ap ...

  4. Android Drawable Mipmap Vector使用及Vector兼容

    原文地址:http://blog.csdn.net/eclipsexys/article/details/51838119 http://blog.csdn.net/qq_15545283/artic ...

  5. Android Studio插件:Android Drawable Importer

    Android Drawable Importer 为了在不同分辨率的设备上更好的展示图片的效果,我们往往需要在 res/drawable 中添加不同分辨率的图片.有时我们可能手里只有一份分辨率的图片 ...

  6. Android Drawable 详解(教你画画!)

    参考 1.Android中的Drawable基础与自定义Drawable 2.android中的drawable资源 3.Android开发之Shape详细解读 Drawable分类 No xml标签 ...

  7. Android Drawable的9种子类 介绍

    原文: Android Drawable的9种子类 介绍   Drawable 在android里面 就是代表着图像,注意是图像 而不是图片. 图片是图像的子集.图像除了可以包含图片以外 还可以包含颜 ...

  8. 【转】Android Drawable Resource学习(十一)、RotateDrawable

    对另一个drawable资源,基于当前的level,进行旋转的drawable. 文件位置: res/drawable/filename.xml文件名即资源名 编译数据类型: 指向 RotateDra ...

  9. 【转】Android LCD(三):Samsung LCD接口篇

    关键词:android LCD控制器 Framebuffer PWM  平台信息:内核:linux2.6/linux3.0系统:android/android4.0 平台:samsung exynos ...

  10. 【转】android camera(三):camera V4L2 FIMC

    关键词:android  camera CMM 模组 camera参数  CAMIF   V4L2  平台信息:内核:linux系统:android 平台:S5PV310(samsung exynos ...

随机推荐

  1. Django中Celery http请求异步处理(四)

    Django中Celery http请求异步处理 本章延续celery之前的系列 1.settings配置 2.编写task jib_update_task任务为更新salt jid数据 3.url设 ...

  2. python删除列表元素remove,pop,del

    python删除列表元素 觉得有用的话,欢迎一起讨论相互学习~Follow Me remove 删除单个元素,删除首个符合条件的元素,按值删除,返回值为空 List_remove = [1, 2, 2 ...

  3. bzoj千题计划278:bzoj4590: [Shoi2015]自动刷题机

    http://www.lydsy.com/JudgeOnline/problem.php?id=4590 二分 这么道水题 没long long WA了两发,没判-1WA了一发,二分写错WA了一发 最 ...

  4. bzoj千题计划246:bzoj2242: [SDOI2011]计算器

    http://www.lydsy.com/JudgeOnline/problem.php?id=2242 #include<map> #include<cmath> #incl ...

  5. elasticsearch-dump 迁移es数据 (elasticdump)

    elasticsearch 部分查询语句 # 获取集群的节点列表: curl 'localhost:9200/_cat/nodes?v' # 列出所有索引: curl 'localhost:9200/ ...

  6. MAC Book 共享网络连接

    CHENYILONG Blog MAC Book 共享网络连接 MAC Book 共享网络连接 MAC比Windows共享连接要方便很多,只需要以下两步操作: 1.打开系统偏好设置,选择共享 2.选择 ...

  7. 【洛谷P2420】让我们异或吧

    题目描述 异或是一种神奇的运算,大部分人把它总结成不进位加法. 在生活中…xor运算也很常见.比如,对于一个问题的回答,是为1,否为0.那么: (A是否是男生 )xor( B是否是男生)=A和B是否能 ...

  8. pt-table-checksum 3.0.4检测不出主从差异数据

    群里好几位同学问 pt-table-checksum 3.0.4, 主从两个表数据是不一致,为啥检测不出来?前段时间自己也测试过,只是没整理成随笔^_- 一.基本环境 VMware10.0+CentO ...

  9. python3 web测试模块selenium

    selenium是一个用于web应用程序测试工具,selenium测试直接运行在浏览器中,就像真正的用户在操作一样,支持的浏览器包括IE(7,8,9,10,11),mozilla firefox,sa ...

  10. android 读取本地json文件 解决显示乱码显示

    1.读取本地JSON ,但是显示汉字乱码 public static String readLocalJson(Context context,  String fileName){         ...