Android中XML绘图

android中xml来布局,个人认为主要考虑视图与逻辑分离,最主要的是实践mvc的开发模式,XML方式适合做可视化界面设计,而且可读性较好,java代码写UI就无法动态运行代码,在开发阶段实时渲染;这样在以后要改下视图,就不需要动逻辑部分,改改xml就可以了,或者说后面替换UI的话,没有必要跑到代码中去看哪些地方要改。

Bitmap

非常的简单且常用,例如:

android:src="@drawable/search"

这样引用资源中的图片,就可以转成Bitmap在程序中使用了。

Shape

它的作用是在XML中定义的几何形状,下面展示常用的参数:
android:shape=[“rectangle” | “oval” | “line” | “ring”]
其中rectagle矩形,oval椭圆,line水平直线,ring环形,默认是rectagle
shape中子节点的常用属性:

gradient 渐变
Android:startColor
起始颜色
Android:endColor
结束颜色
Android:angle
渐变角度,0从左到右,90表示从下到上,数值为45的整数倍,默认为0;
Android:type
渐变的样式 liner线性渐变 radial环形渐变 sweep

solid 填充
Android:color
填充的颜色

stroke 描边
Android:width
描边的宽度
Android:color
描边的颜色
Android:dashWidth
表示’-‘横线的宽度
Android:dashGap
表示’-‘横线之间的距离

corners 圆角 (当shape=“rectagle”时使用)
Android:radius (默认是1dp)
圆角的半径 值越大角越圆
Android:topRightRadius
右上圆角半径
Android:bottomLeftRadius
右下圆角角半径
Android:topLeftRadius
左上圆角半径
Android:bottomRightRadius
左下圆角半径

padding 填充
android:bottom=”1.0dip”
底部填充
android:left=”1.0dip”
左边填充
android:right=”1.0dip”
右边填充
android:top=”0.0dip”
上面填充

size 指定大小
android:width=”1.0dp”
android:height=”1dp”

Selecter

根据不同的选定状态来定义不同的现实效果
分为四大属性:
android:state_selected 是选中
android:state_focused 是获得焦点
android:state_pressed 是点击
android:state_enabled 是设置是否响应事件,指所有事件
另:
android:state_window_focused 默认时的背景图片
引用位置:res/drawable/文件的名称.xml

<?xml version="1.0" encoding="utf-8" ?>       <selector xmlns:Android="http://schemas.android.com/apk/res/android">     <!-- 默认时的背景图片-->      <item Android:drawable="@drawable/pic1" />        <!-- 没有焦点时的背景图片 -->      <item Android:state_window_focused="false" android:drawable="@drawable/pic_blue" />       <!-- 非触摸模式下获得焦点并单击时的背景图片 -->      <item Android:state_focused="true" android:state_pressed="true" android:drawable= "@drawable/pic_red" />     <!-- 触摸模式下单击时的背景图片-->      <item Android:state_focused="false" Android:state_pressed="true" Android:drawable="@drawable/pic_pink" />      <!--选中时的图片背景-->      <item Android:state_selected="true" android:drawable="@drawable/pic_orange" />       <!--获得焦点时的图片背景-->      <item Android:state_focused="true" Android:drawable="@drawable/pic_green" />       </selector>  

Layer

将多个图片或上面两种效果按照顺序层叠起来

以下就是右侧半弧的效果:

<?xml version="1.0" encoding="utf-8"?><layer-list xmlns:android="http://schemas.android.com/apk/res/android" >    <item>        <shape  android:shape="rectangle">            <solid android:color="#E5930E" />            <corners android:radius="30dp"/>        </shape>    </item>    <item android:right="30dp" >        <shape  android:shape="rectangle">            <solid android:color="#E5930E" />        </shape>    </item></layer-list>

以下可作为textview下划线的bg:

<?xml version="1.0" encoding="utf-8"?><layer-list xmlns:android="http://schemas.android.com/apk/res/android">    <item>        <shape>            <solid android:color="#FAAE4C" />        </shape>    </item>    <item android:bottom="3dp">        <shape>            <solid android:color="#FFFFFF" />        </shape>    </item></layer-list>

结语

上面的这些方式是Android提供的几个强大的技能,无论是扁平化还是渐变,都能绘制。将Shape/Seletor和Layer揉合到一块儿来使用,最终达到效果。

                                                            困难方能见人品质,tks

更多相关文章

  1. 几点Android(安卓)开发中的小技巧
  2. 分享几点Android(安卓)开发中的小技巧吧。不知道算不算?
  3. 分享几点Android(安卓)开发中的小技巧吧。不知道算不算?
  4. Android中shape的使用
  5. 分享几点Android(安卓)开发中的小技巧
  6. Android中shape的使用
  7. Android(安卓)Selector Shape使用详解
  8. Android背景颜色渐变
  9. Android(安卓)shape使用

随机推荐

  1. 从终端(iOS)运行React Native App出错
  2. 有没有办法用JavaScript控制iPod Touch的
  3. 将HTML返回到AJAX Rails调用
  4. 什么是计算Web KSLOC的好工具?
  5. jquery中的mouseenter实现理解
  6. VBA中的错误处理
  7. 在Javascript中将带有空格的字符串数组转
  8. chai-as-promised:单个测试中的多个期望语
  9. 如何使用Knockout从vm设置会话变量?
  10. 如何测试一个点是否是二次Bézier曲线的