利用ClipDrawable实现照片的徐徐展开

简介: MainActivity如下: package cc.testclipdrawable;import java.util.Timer;import java.

MainActivity如下:

package cc.testclipdrawable;

import java.util.Timer;
import java.util.TimerTask;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.widget.ImageView;
import android.app.Activity;
import android.graphics.drawable.ClipDrawable;
/**
 * Demo描述:
 * 利用ClipDrawable实现照片的徐徐展开
 * 
 * 示例说明:
 * 1 在clipdrawable中使用clip来描述一张将被徐徐展开的图片
 *   android:drawable         设定图片资源
 *   android:clipOrientation  设定clip的方向
 *   android:gravity          设定clip时的对齐方式
 * 
 * 2 ClipDrawable对象可以调用setLevel()方法来设置clip区域的大小
 *   其中0表示截取原图的大小为空,10000表示截取整张图片
 * 
 * 参考资料:
 * 疯狂Android讲义(第二版) 作者 李刚
 *
 */
public class MainActivity extends Activity {
	private Timer mTimer;
	private Handler mHandler;
    private ImageView mImageView;
    private ClipDrawable mClipDrawable;
    private final int FLAG=9527;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		init();
	}
	private void init(){
		
		mImageView=(ImageView) findViewById(R.id.imageView);
		mClipDrawable=(ClipDrawable) mImageView.getDrawable();
		
		mHandler=new Handler(){
			@Override
			public void handleMessage(Message msg) {
				super.handleMessage(msg);
				if (msg.what==FLAG) {
					//不断修改Level值,达到徐徐展开的效果
					mClipDrawable.setLevel(mClipDrawable.getLevel()+500);
				}
			}
		};
		
		mTimer=new Timer();
		mTimer.schedule(new TimerTask() {
			@Override
			public void run() {
				Message message=new Message();
				message.what=FLAG;
				mHandler.sendMessage(message);
				if (mClipDrawable.getLevel()>=10000) {
					mTimer.cancel();
				}
			}
		}, 0, 300);
	}

}


main.xml如下:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <ImageView
        android:id="@+id/imageView"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:src="@drawable/clipdrawable"
    />

</RelativeLayout>


clipdrawable如下:

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


 

相关文章
|
人工智能 安全 计算机视觉
这款AI已经这么牛了!输入画面关键词就能找到相关画面视频片段素材
大家是否有过这样的经历?看到一个很棒的视频,却只想要其中几秒钟的片段,却要花费很长时间来搜索想要的片段。
1877 0
这款AI已经这么牛了!输入画面关键词就能找到相关画面视频片段素材
|
30天前
|
移动开发 前端开发 UED
卡片翻转,故事展开:HTML+CSS动画让信息传递更生动!(含源码)
卡片翻转,故事展开:HTML+CSS动画让信息传递更生动!(含源码)
|
4月前
|
人工智能 搜索推荐 定位技术
证件照尺寸修改、图片背景换色、照片大小压缩…几个在线图片编辑、处理网站推荐
证件照尺寸修改、图片背景换色、照片大小压缩…几个在线图片编辑、处理网站推荐
140 1
|
前端开发 数据可视化 定位技术
百度地图开发:根据指定手绘图纸照片行政区划自定义绘制对应区域边界生成geoJOSN的解决方案
百度地图开发:根据指定手绘图纸照片行政区划自定义绘制对应区域边界生成geoJOSN的解决方案
386 0
百度地图开发:根据指定手绘图纸照片行政区划自定义绘制对应区域边界生成geoJOSN的解决方案
|
人工智能 编解码
Photoshop的AI功能上新:截图→背景填充一气呵成,再也不怕没拍全了
Photoshop的AI功能上新:截图→背景填充一气呵成,再也不怕没拍全了
141 0
平面设计实验三 手机海报与选区操作
平面设计实验三 手机海报与选区操作
69 0
|
机器学习/深度学习 人工智能 算法
给图片悄悄加上像素级水印:防止AI「抄袭」艺术作品的方法找到了
给图片悄悄加上像素级水印:防止AI「抄袭」艺术作品的方法找到了
210 0
|
IDE 编译器 开发工具
|
机器学习/深度学习 编解码 人工智能
Photoshop把AI论文demo打包实现了:照片上色、改年龄、换表情只需要点点鼠标
我们见过很多神经网络上色、换表情、修改年龄的研究和应用,但它们往往只存在于 GitHub 上,距离「人人能用」还有一段距离。但最近,推出 Photoshop 的 Adobe 这次终于有所表示了:你们论文里的效果,我们打包实现了。
343 0
Photoshop把AI论文demo打包实现了:照片上色、改年龄、换表情只需要点点鼠标
快速展开Excel表格里的内容至适合屏幕的方法
快速展开Excel表格里的内容至适合屏幕的方法
190 0
快速展开Excel表格里的内容至适合屏幕的方法