30 ClipDrawable

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

下面以一个慢慢展开的图片为例

先定义一个ClipDrawable资源文件my_clip.xml

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

接下来在主界面main.xml中的imageview中引用它

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >
    <!-- 这里imageView的src定义为clipdrawable资源 -->
    <ImageView
        android:id="@+id/image"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/my_clip" />
</LinearLayout> 

主界面代码

package WangLi.Resouce.ClipDrawableTest;  

import java.util.Timer;
import java.util.TimerTask;  

import android.app.Activity;
import android.graphics.drawable.ClipDrawable;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.widget.ImageView;  

public class ClipDrawableTest extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        ImageView imageview = (ImageView)findViewById(R.id.image);
        //获取图片所显示的ClipDrawble对象
        final ClipDrawable drawable = (ClipDrawable)imageview.getDrawable();
        final Handler handler = new Handler()
        {
            public void handleMessage(Message msg)
            {
                if(msg.what == 0x1233)
                {
                    //修改ClipDrawable的level值
                    drawable.setLevel(drawable.getLevel() +200);
                }
            }
        };
        final Timer timer = new Timer();
        timer.schedule(new TimerTask()
        {
            public void run()
            {
                Message msg = new Message();
                msg.what = 0x1233;
                //发送消息,通知应用修改ClipDrawable对象的level值
                handler.sendMessage(msg);
                //取消定时器
                if(drawable.getLevel() >= 10000)
                {
                    timer.cancel();
                }
            }
        },0,300);
    }
}  

显示的效果就是图片从中间往两边慢慢展开

时间: 2024-08-08 16:47:50

30 ClipDrawable的相关文章

百度,宫颈癌和房和附件是房价将阿斯顿发

http://www.ebay.com/cln/vnqus-aoi2rh42/ebay/157776573019/2015.01.30 http://www.ebay.com/cln/vnqus-aoi2rh42/ebay/157776590019/2015.01.30 http://www.ebay.com/cln/vnqus-aoi2rh42/ebay/157776608019/2015.01.30 http://www.ebay.com/cln/vnqus-aoi2rh42/ebay/15

百度,换房间啊回复大花洒减肥哈的时间放假了圣诞节

http://www.ebay.com/cln/yous-ypfkprfc/ebay/157911546014/2015.01.30 http://www.ebay.com/cln/yous-ypfkprfc/ebay/157911557014/2015.01.30 http://www.ebay.com/cln/yous-ypfkprfc/ebay/157911568014/2015.01.30 http://www.ebay.com/cln/dinjag.bwlw17m/ebay/15814

日志文件cpm

08/30/14 11:19:29,856 INFO =============CDN BaseLib is starting......!================ pid = 5894 [src/main.cpp:417] 08/30/14 11:19:29,857 TRACE Enter InitThreadPool() [src/main.cpp:260] 08/30/14 11:19:29,857 TRACE Exit InitThreadPool() [src/main.cpp

Android的stateListDrawable,layerDawable,clipdrawable,AnimationDarwable介绍-android学习之旅(五十五)

StatelistDrawable资源 代码示例 <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_focused="true" android:color="f44"/&

即刻开始使用Kotlin开发Android的12个原因(KAD 30)

作者:Antonio Leiva 时间:Jul, 11, 2017 原文链接:https://antonioleiva.com/reasons-kotlin-android/ 这组文章已到最后了,它们是非常实用的.今天我想谈谈为什么我认为学习Kotlin是非常有趣的. 虽然, Kotlin现在已是官方支持的开发Android APP的编程语言,而你仍可能觉得没有足够的理由进行改变.在这些年以来,Java已经证明其能力,为什么要改变? 这是我认为转换到Kotlin不是一个冒险的赌注,而是你可以做的

cygwin + git + nat123 30元搭建公网可访问的git服务器

首先参考上一篇安装服务器上的CYGWIN: http://jingyan.baidu.com/article/7e440953eabd742fc0e2efae.html 上一篇中已经加入了GIT相关的包,这里就不再赘述. 然后添加git用户,在CYGWIN客户端输入: net user git 123 /add 一般只是GIT用户用的话不需要加入管理员组. 随后切换windows用户,使用git用户登录,启动一次cygwin这时cygwin会自动创建用户的个人目录/home/git/以及更新其他

30分钟掌握ES6核心内容

ECMAScript 6(以下简称ES6)是JavaScript语言的下一代标准.因为当前版本的ES6是在2015年发布的,所以又称ECMAScript 2015. 也就是说,ES6就是ES2015. 虽然目前并不是所有浏览器都能兼容ES6全部特性,但越来越多的程序员在实际项目当中已经开始使用ES6了.所以就算你现在不打算使用ES6,但为了看懂别人的你也该懂点ES6的语法了... 在我们正式讲解ES6语法之前,我们得先了解下Babel. Babel Babel是一个广泛使用的ES6转码器,可以将

Autodesk PowerMill 2017 SP1 v21.0.30.64.1203015 1DVD

Isotropix.Clarisse.iFX.v3.0.SP3.Win64 1CD Mentor.Graphics.Calibre.2016.1.Linux 2DVD Progman Oy MagiCAD for Revit MEP 2016.4 UR-1 and 2015.11 1DVD Simulation.Lab.Software.SimLab.Composer.7.v7.2.0.MacOSX 1CD Stat-Ease.Design.Expert.v10.0.3.1.Win64 1CD

Centos7.1 for MySQL5.6.30源码安装

预备工作: OS:Centos7.1 DATABASE: mysql-5.6.30.tar.gz 1. 创建mysql帐号 创建用户和用户组   [[email protected] ~]# groupadd mysql       [[email protected] ~]# useradd -g mysql mysql   [[email protected] ~]# passwd mysql 2.验证安装包 先验证之前是否安装过mysql,若存在mysql相关包,则rpm -e逐个删除(建