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. SQL Server 性能优化详解

    故事开篇:你和你的团队经过不懈努力,终于使网站成功上线,刚开始时,注册用户较少,网站性能表现不错,但随着注册用户的增多,访问速度开始变慢,一些用户开始发来邮件表示抗议,事情变得越来越糟,为了留住用户, ...

  2. django 学习笔记(转)

    原文链接:https://my.oschina.net/linktime/blog/105280 例如有一下模型 from django.db import models class person(m ...

  3. CF&&CC百套计划4 Codeforces Round #276 (Div. 1) A. Bits

    http://codeforces.com/contest/484/problem/A 题意: 询问[a,b]中二进制位1最多且最小的数 贪心,假设开始每一位都是1 从高位i开始枚举, 如果当前数&g ...

  4. POJ 3537 multi-sg 暴力求SG

    长为n的一列格子,轮流放同种棋子,率先使棋子连成3个者胜. 可以发现每次放一个棋子后,后手都不能放在[x-2,x+2]这个区间,那么相当于每次放棋将游戏分成了两个,不能放棋者败. 暴力求SG即可 /* ...

  5. html js点击按钮滚动跳转定位到页面指定位置(DIV)的方法代码

    一:通过html锚点实现滚动定位到页面指定位置(DIV):    如果我们要点击实现跳转的地方是一个html锚点,也就是点击一个A标签超链接实现跳转,可以把A标签的href属性直接指向跳转指定位置的d ...

  6. sh脚本学习之: 命令处理

    输出 默认是命令行输出 > 替换输出 >> append输出 2>  错误输出 < 由文件输入 <<eof 控制台输入,eof为输入结束标志 /dev/nul ...

  7. CSS function--(来自网易)

    /* function */ .f-cb:after,.f-cbli li:after{;overflow:hidden;content:".";} .f-cb,.f-cbli l ...

  8. VMware Linux 下 Nginx 安装配置 - Tomcat 配置 (二)

    准备工作 相关浏览: VMware Linux 下 Nginx 安装配置 (一) 1. 选在 /usr/local/ 下创建 softs 文件夹,通过 ftp 命令 把 apache-tomcat-7 ...

  9. 机器学习&深度学习视频资料汇总

      第一部分 基础语言   pandax视频教程 链接: https://pan.baidu.com/s/1pLqavVX 密码: fath python入门到精通 链接: https://pan.b ...

  10. 云计算--hbase shell

    具体的 HBase Shell 命令如下表 1.1-1 所示: 下面我们将以“一个学生成绩表”的例子来详细介绍常用的 HBase 命令及其使用方法. 这里 grad 对于表来说是一个列,course ...