ClipDrawable代表从其它位图上截取一个"图片片段",XML中的根元素为<clip.../>,截取的方向由clipOrientation控制

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <clip
  3. xmlns:android="http://schemas.android.com/apk/res/android"
  4. android:drawable="@drawable/drawable_resource"
  5. android:clipOrientation=["horizontal" | "vertical"]
  6. android:gravity=["top" | "bottom" | "left" | "right" | "center_vertical" |
  7. "fill_vertical" | "center_horizontal" | "fill_horizontal" |
  8. "center" | "fill" | "clip_vertical" | "clip_horizontal"] />

android:clipOrientation有两个属性,默认为horizontal
android:gravity有两个属性,默认为left

使用时可以用ClipDrawable的setLevel(int level)方法来设置截取图片的区域大小,当level为0,就是空;为10000时,截取整个图片。

下面是通过这个对象来实现图片缓缓展开的效果。

转自:http://blog.csdn.net/jiaruihua_blog/article/details/12276215

    

思路:

1.在xml中写clip标签,在drawable中放入一个图片

2.在布局中放一个ImageView,src选择这个xml文件

3.在代码中用Imageview的findViewById()找到imageview对象

4.通过 final ClipDrawable drawable = (ClipDrawable)imageview.getDrawable(); 得到ClipDrawable对象

5.通过Timer和Handler结合来改变截取图片的大小,这里要通过setLevel()来做

6.当ClipDrawable.getLevel() >= 10000时结束截取,因为这时已经截取了全部图片

代码:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <clip xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:drawable="@drawable/gril"
  4. android:clipOrientation="horizontal"
  5. android:gravity="center">
  6. </clip>

layout

  1. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  2. xmlns:tools="http://schemas.android.com/tools"
  3. android:layout_width="match_parent"
  4. android:layout_height="match_parent"
  5. tools:context=".MainActivity" >
  6.  
  7. <ImageView
  8. android:id="@+id/image"
  9. android:layout_width="fill_parent"
  10. android:layout_height="fill_parent"
  11. android:layout_alignParentLeft="true"
  12. android:layout_alignParentTop="true"
  13. android:scaleType="fitStart"
  14. android:src="@drawable/clip_style"
  15. />
  16.  
  17. </RelativeLayout>

java

  1. package com.example.clipdrawable;
  2.  
  3. import java.util.Timer;
  4. import java.util.TimerTask;
  5.  
  6. import android.os.Bundle;
  7. import android.os.Handler;
  8. import android.os.Message;
  9. import android.app.Activity;
  10. import android.graphics.drawable.ClipDrawable;
  11. import android.view.Menu;
  12. import android.widget.ImageView;
  13.  
  14. public class MainActivity extends Activity {
  15.  
  16. @Override
  17. protected void onCreate(Bundle savedInstanceState) {
  18. super.onCreate(savedInstanceState);
  19. setContentView(R.layout.activity_main);
  20.  
  21. ImageView imageView = (ImageView) findViewById(R.id.image);
  22. //获取图片所显示的ClipDrawable对象
  23. final ClipDrawable drawable = (ClipDrawable) imageView.getDrawable();
  24. final Handler handler = new Handler(){
  25. @Override
  26. public void handleMessage(Message msg) {
  27. // TODO Auto-generated method stub
  28. if (msg.what==0x123) {
  29. /**setlevel()设置图片截取的大小
  30. * 修改ClipDrawable的level值,level值为0--10000;
  31. * 0:截取图片大小为空白,10000:截取图片为整张图片;
  32. */
  33. drawable.setLevel(drawable.getLevel()+200);
  34. }
  35. }
  36.  
  37. };
  38. final Timer timer = new Timer();
  39. timer.schedule(new TimerTask() {
  40.  
  41. @Override
  42. public void run() {
  43. // TODO Auto-generated method stub
  44. Message msg = new Message();
  45. msg.what = 0x123;
  46. handler.sendMessage(msg);
  47. if (drawable.getLevel()>=10000) {
  48. timer.cancel();
  49. }
  50. }
  51. }, 0,300);
  52. }
  53. }

详细参考:

http://blog.csdn.net/lee576/article/details/7827676

http://blog.csdn.net/jiaruihua_blog/article/details/12276215

ClipDrawable属性介绍的更多相关文章

  1. DIV+CSS布局中主要CSS属性介绍

    Float: Float属性是DIV+CSS布局中最基本也是最常用的属性,用于实现多列功能,我们知道<div>标签默认一行只能显示一个,而使用Float属性可以实现一行显示多个div的功能 ...

  2. Android使用Drawable资源之使用ClipDrawable资源 实现进入条

    以前我自定义的进度条(就是咱们现在工程中用的)是从android的源码中扒出来的一个XML,然后把里面的图片给替换了.一直不知道它的具体原理是什么. 今天得空研究了一下,发现它的原理其实就是用的and ...

  3. ClipDrawable 实现图片渐变现实

    clip.xml <?xml version="1.0" encoding="utf-8"?><clip xmlns:android=&quo ...

  4. location.hash属性介绍

    location.hash属性介绍 例如URL: http://wwww.a.com/index#rhythmk 通过location.hash 我们将获取到 #rhythmk. 默认浏览器会滚动至i ...

  5. Autocomplete:属性介绍、firefox中文支持问题

    如有问题,请前往 http://www.cnblogs.com/dreamowneryong/p/4953911.html 原文评论交流 一,属性介绍 * minChars (Number) 在触发a ...

  6. android学习笔记34——ClipDrawable资源

    ClipDrawable ClipDrawable代表从其他位图上截取一个“图片片段” 在XML文件中定义ClipDrawable对象使用<clip.../>元素,该元素的语法为: 以上语 ...

  7. Intent的属性介绍

    在Android系统的设计中有四大组件:Activity,Service,BroadcastReceiver,ContentProvider.Intent可以被应用于ContentProvider之外 ...

  8. RelativeLayout常用属性介绍

    RelativeLayout常用属性介绍 转自: http://www.douban.com/note/97496783/ 下面介绍一下RelativeLayout用到的一些重要的属性: 第一类:属性 ...

  9. ClipDrawable 资源

    ClipDrawable 代表从其他位图上截取的一个“图片片段”. 示例: main.xml <?xml version="1.0" encoding="utf-8 ...

随机推荐

  1. Ubuntu出现apt-get: Package has no installation candidate问题

    今天在安装 vim 的时候出现了 Package 'vim' has no installation candidate的问题 解决方法如下:# apt-get update# apt-get upg ...

  2. CF 554A 字符串水题

    给出一个字符串,问再加入一个字母,最多能形成多少种字符串 inputaoutput51inputhioutput76 # include <iostream> # include < ...

  3. 洛谷P2017 [USACO09DEC]晕牛Dizzy Cows [拓扑排序]

    题目传送门 晕牛Dizzy Cows 题目背景 Hzwer 神犇最近又征服了一个国家,然后接下来却也遇见了一个难题. 题目描述 The cows have taken to racing each o ...

  4. mini-css-extract-plugin简介

    将css单独打包成一个文件的插件,它为每个包含css的js文件都创建一个css文件.它支持css和sourceMaps的按需加载. 目前只有在webpack V4版本才支持使用该插件 和extract ...

  5. JAVA 类和对象基础知识详解

    /*文章中用到的代码只是一部分,需要源码的可通过邮箱联系我 1978702969@qq.com*/ 和C++一样,JAVA也是一门面向对象的语言,其基础和核心是类和对象.而面向对象的思想是来源与显示生 ...

  6. 3D游戏开发之UE4中的集合:TSet容器

    好久没有更新了,最近一直在老家过年,网络不通的,今天才有时间更新一集. 一.TSet<T>是什么 UE4中,除了TArray动态数组外,还提供了各种各样的模板容器.这一节,我们就介绍集合容 ...

  7. Atom-同步设置

    Atom-同步设置 参考博客 CNBLOG First 首先呢,如果我们想要通过Atom的设置和插件的话,我们需要这个一个Atom插件. PS: 因为Gist被墙的原因,所以需要***才行,我挂了ss ...

  8. BZOJ.1926.[SDOI2010]粟粟的书架(前缀和 主席树 二分)

    题目链接 题意: 在给定矩形区域内找出最少的数,满足和>=k.输出数的个数.两种数据范围. 0~50 注意到(真没注意到...)P[i,j]<=1000,我们可以利用前缀和预处理. num ...

  9. Asyncio中Lock部分的翻译

    Asyncio中Lock部分的翻译 Locks class asyncio.Lock(*, loop=None) 原始锁的对象. 这个基础的锁是一个同步化的组件,当它上锁的时候就不属于典型的协程了(译 ...

  10. 【转载】VC GDI 像素转厘米(英寸)

    [转载]http://blog.sina.com.cn/s/blog_638dd78201018663.html 函数原型:int GetDeviceCaps(int nIndex); 常用的参数有( ...