• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >Android > Drawable资源的初步使用

Drawable资源的初步使用

作者:网友 字体:[增加 减小] 来源:互联网 时间:2017-05-26

网友通过本文主要向大家介绍了drawable资源,android drawable资源,android drawable使用,drawable,bitmap转drawable等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

Drawable资源的初步使用


刚开始接触到Android的时候,看到类似下面的一个Button:

\

当时感觉这样的button有点像Material Design风格,真的以为是裁剪好的图片,好奇心驱使我上网查找实现的方法,原来不是裁剪好的图片,只是用xml来定义我们想要的图片,现在想想真的是挺搞笑,哈哈。实现这种图片我们可以自定义view,当然啦,最简单的还是用xml文件来定义!

现在看来,实现上面的效果,真的是太简单啦:

观察上面的图片,是一个近似长方形,但是四个角又有点有点圆滑。既然是Drawable资源,当然是在/res/drawable/下定义的啦,给出.xml文件:

shaper.xml:

 


    
    
    
selector.xml:

 

 


        
        

然后Button控件下使用android:background="@drawable/seletor_button",布局文件很简单,这里就不写出来了。
由selector.xml知,当松开按钮时,按钮的背景色也是蓝色,我们当然可以换成其他的颜色,那就要重新定义一个shaper2.xml:

 

 


    
    
    
然后在selector.xml中:
 
效果:

 

\

 

 </div> 也许你会问,上面的xml文件到底表示的是什么呢,下面简单的说明Drawable资源。

 

一.图片资源

这个大家肯定不陌生,获得/res/drawable/下的图片(如:png,gif,jpg),可以直接R.drawable.picture或者:

 

                Resources resources = getResources();
		Drawable drawable = resources.getDrawable(R.drawable.picture);
注意在命名这些图片时,不能以数字开头,否则会报错。图片资源使用比较简单,不详细阐述。

 

二.StateListDrawable资源

用于组织多个Drawable对象,当使用StateListDrawable作为目标组件的背景,前景图片时,StateListDrawable对象所显示的Drawable对象会随着目标组件状态的改变而自动切换。

类的继承层次关系:

java.lang.Object
   ? 	android.graphics.drawable.Drawable
  	   ? 	android.graphics.drawable.DrawableContainer
  	  	   ? 	android.graphics.drawable.StateListDrawable
如何使用该类资源呢?官方文档上已经给出:

 

It can be defined in an XML file with the element. Each state Drawable is defined in a nested element. For more information, see the guide to Drawable Resources.

文档指出定义StateListDrawable对象的xml文件的根元素为,该元素可以包含多个元素。

既然用XML文件定义,那么有哪些属性呢?(具体查阅API,这里就不进行大量Ctrl C/V操作了)

\

简单解释下上面的属性:

android:constantSize:
值为“true”表示随着状态变化,Drawable的大小保持不变(所有状态中最大的size);值为“false”表示大小会变化。默认是false。
android:color或者android:drawable:指定颜色或者Drawable对象
支持的state_xxx状态如下面几种:
android:state_active:代表是否处于激活状态
android:state_checkable:代表是否处于可勾选状态
android:state_checked:代表是否处于已勾选状态
android:state_enabled:代表是否处于可用状态
android:state_first:代表是否处于开始状态
android:state_focused:代表是否处于已得到焦点状态
android:state_last:代表是否处于结束状态
android:state_middle:代表是否处于中间状态
android:state_pressed:代表是否处于已被按下的状态
android:state_selected:代表上是否处于被选中的状态
android:state_window_focused:代表窗口是否处于已得到焦点状态

具体使用方法还得在工作实践中总结,文章开篇已经简单的使用StateListDrawable资源文件,这里就不再举例。

三.ShapeDrawable资源

ShapeDrawable资源
ShapeDrawable用于定义一个基本的图形(如矩形,线条,圆形,椭圆等等),定义的XML文件的根元素是元素,该元素可以指定如下属性:

 

shape=["rectangle"|"oval"|"line"|"ring"]  指定图形形状
corners   定义几何图形的四个角的弧度
gradient  定义使用渐变色填充
padding   定义几何形状的内边距(可以分别指定top,bottom,right,left)
size      定义几何形状的大小
solid     定义使用单种颜色填充
stroke    定义为几何形状绘制边框
height    定义图片高度
width     定义图片的宽度
使用方法相对简单,不再举例说明。

四.ClipDrawable资源

ClipDrawable资源定义在一个XML中,表示从其他资源裁剪一个"图片片段"。在XML定义时使用作为根元素。

xml中的属性:

 

drawable:指定截取Drawable对象
clipOrientation:指定截取方向,可以设置垂直截取或者水平截取
gravity:指定截取时的对齐方式
其中gravity的取值有很多,具体可以参考API这里就不贴上来了。

 

通过demo简单的说明下如何利用ClipDrawable资源文件缓缓的展开一张图片的,clip.xml:

 

 

上面也不需要解释上面了吧,布局文件也很简单,就是一个ImageView:

 

   ...
   ...
 
    ...
    ...
MainActivity.java:

 

 

public class MainActivity extends Activity {
	@SuppressWarnings("unused")
	private ClipDrawable clip;
    Handler handler = new Handler(){
    	public void handleMessage(Message msg){
    	   switch (msg.what) {
		case 0:
			clip.setLevel(clip.getLevel()+200);
			break;
		default:
			break;
		  }
    	}
    };
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		requestWindowFeature(Window.FEATURE_NO_TITLE);
		setContentView(R.layout.activity_main);
		    ImageView psg = (ImageView)findViewById(R.id.psb);
		    clip = (ClipDrawable)psg.getDrawable();
		    final Timer time = new Timer();
		    time.schedule(new TimerTask() {
				@Override
				public void run() {
					// TODO 自动生成的方法存根
					Message msg = new Message();
					msg.what = 0;
					handler.sendMessage(msg);
					if(clip.getLevel()>10000){
						time.cancel();
					}
				}
			},0,500);
		   
	}
}
看下效果,已经等的不耐烦了:

 

\

 

上面代码也很简单,利用Timer定时器,每隔500毫秒时间利用Handler发送信息,修改clip的Level,下面说明下Level:

裁剪一个其他资源基于ClipDrawable资源的Level, 默认的Level值是0,表示图片被完全裁剪,因此图片是不可见的。当值达到10000时,图片不被裁剪,所以可以完全显示。

五.RippleDrawable资源</div>

5.0后出现的ripple,使得我们更加方便的定义出波纹效果的控件,下面赶快来定义吧!(*^__^*) 嘻嘻……

首先还是看下基础的知识点,当然了,官方API文档是最好的资料:</div> 既然是用XML文件定义的,那么有什么属性呢?</div> android:color 受到ripple影响时的颜色</div> android:radius ripple完全传播时的半径</div> 不会就这两个属性吧!</div> 哈
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • Drawable资源的初步使用
  • Android入门——Drawable与对应的资源xml的应用

相关文章

  • 2017-05-26翻翻git之---一个丰富的通知的工具库 NotifyUtil
  • 2017-05-26andorid build tools 19.1,andorid19.1
  • 2017-05-227.1.1 Android网络编程要学的东西与Http协议学习
  • 2017-05-26Android Activity生命周期与启动模式,androidactivity
  • 2017-05-26Android 之 Intent(意图),androidintent意图
  • 2017-05-26Volley的基本使用,Volley使用
  • 2017-05-26ImageView的ScaleType属性,imageviewscaletype
  • 2017-05-26Android进程通信之两种序列化方式分析
  • 2017-05-26安卓第一天笔记,安卓第一天
  • 2017-05-26linux设备驱动程序之时钟管理(3)----我的那块儿蛋糕

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 接口回调封装,回调封装
    • 仿QQ空间根据位置弹出PopupWindow显示更多操作效果,popupwindow
    • android:数据存贮方式-SharedPreference
    • org.gradle.api.internal.tasks.DefaultTaskInputs$TaskInputUnionFileCollection cannot be cast to org.gradle.api.internal.file.collections.DefaultConfigurableFileCollection,gradletaskinputs
    • 关于TCP MSS的内核设置
    • Android 一个改善的okHttp封装库,androidokhttp
    • Android 学习2----页面布局的学习,android2----
    • Android Layout XML属性,androidlayout
    • 春秋旅行安卓客户端源码项目,旅行安卓客户端源码
    • 自定义控件详解(一):Paint类与Canvas类,paintcanvas

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有