博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Drawable资源
阅读量:6497 次
发布时间:2019-06-24

本文共 2186 字,大约阅读时间需要 7 分钟。

hot3.png

1.StateListDrawable资源

   StateListDrawable对象多显示的Drawable对象会随着目标组件状态的改变而自动切换。

    1)根元素为<selector/>

    2)包含多个<item/>元素,该元素可以指定如下属性。

          android:color或者android:drawable:指定颜色或者drawable对象。

          android:state_XXX=true|false 指定一个特定状态。

2.LayoutDrawable资源

LayoutDrawable包含一个Drawable数组,因此系统将会按Drawable对象的数组顺序来绘制它们,索引最大的Drawable对象将会被绘制在最上面。

1)根元素为<layer-list/>

2)子元素为<item/>,包含如下属性

    android:drawabe   指定drawable对象

    android:id            指定一个ID

    android:bottom|top|left|right    指定绘制时的位置

3)ShapeDrawable资源

ShapeDrawable用于定义一个基本的几何图形.

1)根元素为<shape/>

2)该元素可以指定一下属性android:shape=["rectangle"|"oval"|"line"|"ring"]

4)ClipDrawable资源

clipDrawable资源代表从其他位图上截取的一个图片片段,在XML文件中定义ClipDrawable对象使用<clip/>元素。

clip元素有如下三个属性:

 1)android:drawable:指定截取源的Drawable对象。

 2)android:clipOrientation:指定截取方向,可设置水平截取或者垂直截取。

 3)android:gravity:指定截取时的对齐方式。

使用ClipDrawable对象时可使用setLevel()方法来设置截取的区域大小,当level为0的时候,截取的片段为空;当level为10000的时候,截取整张图片。

编写一个缓慢打开图片的demo:

myclip.xml:

main.xml:

Main.java:
package com.app.main;import java.util.Timer;import java.util.TimerTask;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.app.Activity;import android.graphics.drawable.ClipDrawable;import android.view.Menu;import android.widget.ImageView;public class Main extends Activity {	@Override	protected void onCreate(Bundle savedInstanceState) {		super.onCreate(savedInstanceState);		setContentView(R.layout.main);		ImageView imageView = (ImageView) this.findViewById(R.id.imageview);		final ClipDrawable clip = (ClipDrawable) imageView.getDrawable();		final Handler handler = new Handler() {			@Override			public void handleMessage(Message msg) {				if (msg.what == 0x001) {					clip.setLevel(clip.getLevel()+400);				}			}		};				final Timer timer=new Timer();				timer.schedule(new TimerTask(){			@Override			public void run() {								Message msg=new Message();								msg.what=0x001;								handler.sendMessage(msg);								if(clip.getLevel()>10000)				{					timer.cancel();				}			}								}, 0,100);	}}

实现效果:

转载于:https://my.oschina.net/summerpxy/blog/179676

你可能感兴趣的文章
android应用开发--------------看RadioGroup源代码,写相似单选选项卡的集成控件(如底部导航,tab等等)...
查看>>
LeetCode - Binary Tree Level Order Traversal
查看>>
FTP协议完全详解
查看>>
iOS:实现图片的无限轮播
查看>>
【C语言天天练(十五)】字符串输入函数fgets、gets和scanf
查看>>
【环境配置】配置sdk
查看>>
accept()
查看>>
USB 2.0 Hub IP Core
查看>>
USB 2.0 OTG IP Core
查看>>
解读浮动闭合最佳方案:clearfix
查看>>
Charles使用
查看>>
Python GUI编程(Tkinter) windows界面开发
查看>>
P(Y|X) 和 P(X,Y)
查看>>
dynamic关键字的使用
查看>>
iOS 音乐播放器之锁屏效果+歌词解析
查看>>
【转】Google 的眼光
查看>>
android O 蓝牙设备默认名称更改
查看>>
阳台的青椒苗
查看>>
swapper进程【转】
查看>>
跨链技术与通证经济
查看>>