Android基础学习,使用Drawable资源之ClipDrawable资源,实现图片在特定位置展开。

导读:本篇文章讲解 Android基础学习,使用Drawable资源之ClipDrawable资源,实现图片在特定位置展开。,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

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  效果是从中间向两边展开

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

这种方式。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/119237.html

(0)
seven_的头像seven_bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!