Android基础学习,使用Drawable资源之ClipDrawable资源,实现图片在特定位置展开。
2017-04-17 14:56
465 查看
ClipDrawable代表从其它位图上截取一个"图片片段",XML中的根元素为<clip.../>,截取的方向由clipOrientation控制
下面以一个慢慢展开的图片为例
ClipDrawable代表从其它位图上截取一个“图片片段”。在XML文件中使用<clip.../>元素定义ClipDrawable对象,可指定如下三个属性:
android:drawable:指定截取的源Drawable对象
android:clipOrientation:指定截取的方向,可设置为水平截取或垂直截取
android:gravity:指定截取时的对齐方式
使用ClipDrawable对象时可以调用setLevel(int level)方法来设置截取的区域大小,当level为0时,截取的图片片段为空;当level为10000时,截取整张图片。
通过以上说明,我们发现,可以使用ClipDrawable的这种性质控制截取图片的区域大小,让程序不断调用setLevel方法并改变level的值,达到让图片慢慢展开的效果。
1.先定义一个ClipDrawable资源文件drawable_clip.xml 效果是从中间向两边展开
2.在主Activity的布局文件中添加ImageView ,名称activity_mian
3.0 主Activity代码 MainActivity
4.0 如果在布局activity_main中图片的显示方式是
则
这种方式。
下面以一个慢慢展开的图片为例
ClipDrawable代表从其它位图上截取一个“图片片段”。在XML文件中使用<clip.../>元素定义ClipDrawable对象,可指定如下三个属性:
android:drawable:指定截取的源Drawable对象
android:clipOrientation:指定截取的方向,可设置为水平截取或垂直截取
android:gravity:指定截取时的对齐方式
使用ClipDrawable对象时可以调用setLevel(int level)方法来设置截取的区域大小,当level为0时,截取的图片片段为空;当level为10000时,截取整张图片。
通过以上说明,我们发现,可以使用ClipDrawable的这种性质控制截取图片的区域大小,让程序不断调用setLevel方法并改变level的值,达到让图片慢慢展开的效果。
1.先定义一个ClipDrawable资源文件drawable_clip.xml 效果是从中间向两边展开
<?xml version="1.0" encoding="utf-8"?> <clip xmlns:android="http://schemas.android.com/apk/res/android" android:drawable="@drawable/test" android:clipOrientation="horizontal" android:gravity="center"> </clip>
2.在主Activity的布局文件中添加ImageView ,名称activity_mian
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <!-- 这里imageView的src定义为clipdrawable资源 --> <ImageView android:id="@+id/image" android:layout_width="fill_parent" android:layout_height="wrap_content" android:src="@drawable/drawable_clip" /> </LinearLayout>
3.0 主Activity代码 MainActivity
package com.wuzhou.clipdrawabletest; import android.graphics.drawable.ClipDrawable; import android.os.Handler; import android.os.Message; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.widget.ImageView; import java.util.Timer; import java.util.TimerTask; public class MainActivity extends AppCompatActivity { private ImageView imageView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); imageView = (ImageView) findViewById(R.id.image); //获取图片所显示的ClipDrawble对象 final ClipDrawable clipdrawable = (ClipDrawable) imageView.getDrawable(); /** * Handler * */ final Handler handler = new Handler() { public void handleMessage(Message msg) { if (msg.what == 0x1233) { //修改ClipDrawable的level值 clipdrawable.setLevel(clipdrawable.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 (clipdrawable.getLevel() >= 10000) { timer.cancel(); } } }, 0, 300); } }
4.0 如果在布局activity_main中图片的显示方式是
android:background="@drawable/drawable_clip"
则
//获取图片所显示的ClipDrawble对象 final ClipDrawable clipdrawable = (ClipDrawable) imageView.getBackground();
这种方式。
相关文章推荐
- Android使用Drawable资源之使用ClipDrawable资源 实现图片缓慢展示
- Android使用Drawable资源之使用ClipDrawable资源 实现进入条
- Android读取不同位置(drawable,asset,SDCard)的图片资源
- 关于Android读取不同位置(drawable,asset,SDCard)的图片资源的总结
- Android的图片,字符串,demin,color,以及Array,boolean,Integer资源的使用-android学习之旅(五十四)
- Android的图片,字符串,demin,color,以及Array,boolean,Integer资源的使用-android学习之旅(五十四)
- 关于Android读取不同位置(drawable,asset,SDCard)的图片资源的总结
- [原]零基础学习SDL开发之在Android使用SDL2.0渲染PNG图片
- Android的图片,字符串,demin,color,以及Array,boolean,Integer资源的使用-android学习之旅(五十四)
- 关于Android读取不同位置(drawable,asset,SDCard)的图片资源的总结
- ClipDrawable的使用--慢慢展开的图片
- 关于Android读取不同位置(drawable,asset,SDCard)的图片资源的总结
- Android 读取不同位置(drawable,asset,SDCard)的图片资源
- 关于Android读取不同位置(drawable,asset,SDCard)的图片资源的总结
- 关于Android读取不同位置(drawable,asset,SDCard)的图片资源的总结(转)
- android 5.0新特性学习--Drawable Tinting(为图片资源着色)
- Android学习15--使用(Drawable)资源
- android基础内容介绍(XXXDrawable、Android动画、Android资源使用、Fragment与Activity)
- 深度学习FPGA实现基础知识3(Altera与百度展开合作在云数据中心使用FPGA加速)
- 【Android基础学习】Android使用fitsSystemWindows属性实现–状态栏【status_bar】各版本适配方案