ClipDrawable代表从其他位图上截取一个“图片片段”,在XML文件中用<clip…/>元素
该元素语法为:
定义ClipDrawable对象,可指定如下三个属性:
android:drawable:指定截取的源Drawable对象
android:clipOrientation:指定截取的方向,可设置为水平截取或垂直截取
android:gravity:指定截取时的对齐方式
使用ClipDrawable对象时可以调用setLevel(int level)方法来设置截取的区域大小(最大为10000),当level为0时,截取的图片片段为空;当level为10000时,截取整张图片。
下面是一个实例来说明ClipDrawable对象的用法
可以使用ClipDrawable的这种性质控制截取图片的区域大小,让程序不断调用setLevel方法并改变level的值,达到让图片慢慢展开的效果。
先定义ClipDrawable对象
资源文件==》drawable文件夹下
上面的程序控制从中间开始截取图片,截取方向为水平截取。接下来程序将通过一个定时器来修改ClipDrawable对象的level,达到徐徐张开的效果。
代码实现==》
package com.example.myclipdrawable;
import java.util.Timer;
import java.util.TimerTask;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.graphics.drawable.ClipDrawable;
import android.view.Menu;
import android.widget.ImageView;
@SuppressLint(“HandlerLeak”)
public class MainActivity extends Activity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ImageView img = (ImageView) this.findViewById(R.id.image);
final ClipDrawable drawable = (ClipDrawable) img.getDrawable();
final Handler hanler = new Handler()
{
@Override
public void handleMessage(Message msg)
{
if (msg.what == 1)
{
int value=drawable.getLevel() + 200;
drawable.setLevel(value);
}
}
};
final Timer timer = new Timer();
timer.schedule(new TimerTask()
{
@Override
public void run()
{
Message msg = new Message();
msg.what = 1;
hanler.sendMessage(msg);
// 取消定时器
if (drawable.getLevel() >= 10000)
{
timer.cancel();
}
}
}, 0, 300);
}
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
布局文件:
<Button
android:id="@+id/button1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="开始展示图片"
android:onClick="btnClick"/>
<Button
android:id="@+id/button2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="裁剪图片"
android:onClick="btnClick"/>
<ImageView
android:id="@+id/image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/drawable_clip"/>
效果图:
沈艳https://blog.csdn.net/qq_41107618/article/details/90514292