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. c++桥接模式

    可以简记为pointer to implement:”指向实现的指针”. [DP]书上定义:将抽象部分与它的实现部分分离,使它们都可以独立地变化.考虑装操作系统,有多种配置的计算机,同样也有多款操作系 ...

  2. linux driver ------ 三星公司uboot模式下更改分区(EMMC)大小fdisk命令 ------ iTOP4412 开发板烧写

    核心板 SCP 1G eMMC:KLM8G------>8G 终端(串口)输入(如果执行过,只需要执行最后一句即可): 开发板一启动,立马在终端按回车,进入 uboot 模式 fdisk -c ...

  3. SQL Server 一些查询技巧

    --1.[行列转换] --列转行 USE tempdb GO IF (OBJECT_ID('DEPT') IS NOT NULL) DROP TABLE DEPT CREATE TABLE DEPT( ...

  4. JAVA记录-JSP指令

    JSP中有三种类型的指令标签 - 序号 指令 说明 1 <%@ page ... %> 定义页面相关属性,如脚本语言,错误页面和缓冲要求. 2 <%@ include ... %&g ...

  5. Linux命令(二)关机重启

  6. Tornado实现多线程、多进程HTTP服务

    背景 线上有一个相关百科的服务,返回一个query中提及的百科词条.该服务是用python实现的,以前通过thrift接口访问,现要将其改为通过HTTP访问.之前没有搭建HTTPServer的经验,因 ...

  7. [BZOJ 2299][HAOI 2011]向量 题解(裴蜀定理)

    [BZOJ 2299][HAOI 2011]向量 Description 给你一对数a,b,你可以任意使用(a,b), (a,-b), (-a,b), (-a,-b), (b,a), (b,-a), ...

  8. PWN入门

    pwn ”Pwn”是一个黑客语法的俚语词 ,是指攻破设备或者系统 .发音类似“砰”,对黑客而言,这就是成功实施黑客攻击的声音——砰的一声,被“黑”的电脑或手机就被你操纵.以上是从百度百科上面抄的简介, ...

  9. pop3设置

  10. PHP中VC6、VC9、TS、NTS版本区别与用法

    1. VC6与VC9的区别: VC6 版本是使用 Visual Studio 6 编译器编译的,如果你的 PHP 是用 Apache 来架设的,那你就选择 VC6 版本.  VC9 版本是使用 Vis ...