ClipDrawable 资源

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

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:orientation="vertical"

    android:layout_width="fill_parent"

    android:layout_height="fill_parent"

    >

<ImageView  

    android:id="@+id/image"

    android:layout_width="fill_parent" 

    android:layout_height="wrap_content" 

    android:scaleType="fitStart"

    android:src="@drawable/my_clip"

    />

</LinearLayout>
my_clip.xml
<?xml version="1.0" encoding="UTF-8"?>

<clip xmlns:android="http://schemas.android.com/apk/res/android" 

    android:drawable="@drawable/shuangta" 

    android:clipOrientation="horizontal" 

    android:gravity="center"> 

</clip>
因为 ClipDrawble 对象可调用 setLevel(int level)控制截取图片的部分,因此本示例只要设 置一个定时器,让程序不断调用 ClipDrawble 的 setLevel(int level)方法即可实现图片徐徐展开 的效果。
 
ClipDrawableTest.java
package org.crazyit.res;



import java.util.Timer;

import java.util.TimerTask;



import org.crazyit.res.R;



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;



/**

 * Description:

 * <br/>site: <a href="http://www.crazyit.org">crazyit.org</a>

 * <br/>Copyright (C), 2001-2014, Yeeku.H.Lee

 * <br/>This program is protected by copyright laws.

 * <br/>Program Name:

 * <br/>Date:

 * @author  Yeeku.H.Lee [email protected]

 * @version  1.0

 */

public class ClipDrawableTest extends Activity

{

    @Override

    public void onCreate(Bundle savedInstanceState)

    {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

        ImageView imageview = (ImageView) findViewById(R.id.image);

        // 获取图片所显示的ClipDrawable对象

        final ClipDrawable drawable = (ClipDrawable)

            imageview.getDrawable();

        final Handler handler = new Handler()

        {

            @Override

            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()

        {

            @Override

            public void run()

            {

                Message msg = new Message();

                msg.what = 0x1233;

                // 发送消息,通知应用修改ClipDrawable对象的level值。

                handler.sendMessage(msg);

                // 取消定时器

                if (drawable.getLevel() >= 10000)

                {

                    timer.cancel();

                }

            }

        }, 0, 300);

    }

}
ScreenShot:双塔图片逐渐从中间向两边展开。
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

你可能感兴趣的:(drawable)