软件世界网 购物 网址 三丰软件 | 小说 美女秀 图库大全 游戏 笑话 | 下载 开发知识库 新闻 开发 图片素材
多播视频美女直播
↓电视,电影,美女直播,迅雷资源↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
移动开发 架构设计 编程语言 Web前端 互联网
开发杂谈 系统运维 研发管理 数据库 云计算 Android开发资料
  软件世界网 -> 移动开发 -> Button多样化与自定义点击效果 -> 正文阅读

[移动开发]Button多样化与自定义点击效果


    在Android开发应用中,默认的Button是由系统渲染和管理大小的。然后,我们在产品的实际开发中,需要对默认Button进行美化,比如自定义背景的按钮自定义图片按钮等,以此来改善UI的美观并且提高用户的体验度。
Button控件常用属性如下:
一、自定义按钮背景
1.修改系统默认Button的背景颜色
(1)在drawable资源目录下按钮下后的效果变化描述文件drawable/sectorBtn.xml
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <selector xmlns:android="http://schemas.android.com/apk/res/android">  
  3.     <item android:state_pressed="false" >  
  4.         <color android:color="#FF8C00"/>  
  5.      </item>        
  6.   <item android:state_focused="true" >  
  7.     <color android:color="#B22222"/>  
  8.   </item>     
  9.   <item android:state_pressed="true" >  
  10.       <color android:color="#B22222"/>  
  11.   </item>  
  12. </selector> 

(2)设置布局文件中Button的android:background属性
  1. <Button  
  2.     android:layout_width="wrap_content"  
  3.     android:layout_height="wrap_content"  
  4.     android:text="默认Button"      
  5.     android:background="@drawable/sectorBtn" /> 

效果如下:

   [img]http://img.blog.csdn.net/20150512114912794?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMjYzNzUwMQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center                 [img]http://blog.csdn.net/u012637501/article/details/45667507/file:/C:/Users/jie/AppData/Local/YNote/data/jiangdongguo2013@126.com/7223f7692b5c444cbf3dff2f876916ac/clipboard.png
2.绘制矢量图形作为Button按钮背景
    绘制矢量图的方式实现比较简单,适合于对于按钮形状和图案要求不高的场合。
步骤如下:
(1) 在/drawable/btn_shape_default.xml、/drawable/btn_shape_pressing.xml定义一个圆角矩形,外围轮廓线实线、内填充渐变色
  1. <?xml version="1.0" encoding="utf-8"?>     
  2. <layer-list xmlns:android="http://schemas.android.com/apk/res/android">  
  3.         <item >  
  4.             <shape android:shape="rectangle">  
  5.                 <solid android:color="#FFEC7600"/>  
  6.                 <corners   
  7.                     android:topLeftRadius="5dip"  
  8.                     android:topRightRadius="5dip"  
  9.                     android:bottomLeftRadius="5dip"  
  10.                     android:bottomRightRadius="5dip"/>  
  11.             </shape>  
  12.         </item>  
  13.           
  14.         <item >  
  15.             <shape >  
  16.                 <gradient   
  17.                     android:startColor="#CD3700"  
  18.                     android:endColor="#CD6600"                            
  19.                     android:type="linear"  
  20.                     android:angle="90"  
  21.                     android:centerX="0.5"  
  22.                     android:centerY="0.5"/>  
  23.                      <corners   
  24.                     android:topLeftRadius="5dip"  
  25.                     android:topRightRadius="5dip"  
  26.                     android:bottomLeftRadius="5dip"  
  27.                     android:bottomRightRadius="5dip"/>  
  28.             </shape>  
  29.         </item>  
  30. </layer-list>  

注意:/drawable/btn_shape_pressing.xml与/drawable/btn_shape_default.xml 内容相同,就是渐变颜色不同,用于按钮按下后的背景变化效果。
  1.  <gradient   
  2.                     android:startColor="#FFEC7600"  
  3.                     android:endColor="#FFFED69E"     
  4.                     android:type="linear"  
  5.                     android:angle="90"  
  6.                     android:centerX="0.5"  
  7.                     android:centerY="0.5"/>  

(2)定义按钮下后的效果变化描述文件drawable/selector_btn_background.xml,代码如下:
  1. <?xml version="1.0" encoding="utf-8"?>     
  2. <selector xmlns:android="http://schemas.android.com/apk/res/android">      
  3.     <item android:state_pressed="false"  android:drawable="@drawable/btn_shape_default"/>  
  4.     <item android:state_focused="true"   android:drawable="@drawable/btn_shape_pressing"/>  
  5.     <item android:state_pressed="true"  android:drawable="@drawable/btn_shape_pressing"/>  
  6. </selector>  

(3)在界面文件(如layout/main.xml)中定义一个Button控件
  1. <Button  
  2.     android:layout_width="120dip"  
  3.     android:layout_height="40dip"  
  4.     android:text="登录"      
  5.     android:background="@drawable/selector_btn_background.xml" /> 

效果如下:

    [img]http://blog.csdn.net/u012637501/article/details/45667507/file:/C:/Users/jie/AppData/Local/YNote/data/jiangdongguo2013@126.com/edaf18512c624e89a9ca18e87a57eb94/clipboard.png[img]http://img.blog.csdn.net/20150512114941186?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMjYzNzUwMQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center
3.使用9patch图片(位图)作为Button按钮背景
        当按钮的内容太多是,Android会自动缩放整张图片,以保证背景图片能覆盖整个按钮,但这种缩放整张图片的效果可能并不好。为了实现只缩放图片中的某个部分,我们可以借助9Patch图片来实现。9-patch格式,是在Android中特有的一种PNG图片格式,以"***.9.png"结尾。此种格式的图片定义了可以伸缩拉伸的区域和文字显示区域,这样,就可以在Android开发中对非矢量图进行拉伸而仍然保持美观。如果使用位图而没有经过9-patch处理的话,背景图片的效果就会被无情的拉伸,影响效果。9patch图片原理是:它在原始图片的四周各添加一个宽度为1像素的线条,这4条线决定了该图片的缩放规则、内容显示规则,即左侧和上侧直线共同决定图片的缩放区域(纵向缩放、水平缩放);右侧和下侧的直线共同决定图片内容的显示区域。
(1) 使用draw9patch.bat制作图片:运行SDK目录/tools/draw9patch.bat,双击运行,得到两张按钮背景,分别是正常和按下状态下的,命名为bg_btn.9.png和bg_btn_2.9.png。
[img]http://img.blog.csdn.net/20150512121949242?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMjYzNzUwMQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center   
(2) 编写图片使用描述文件bg_9patchbutton.xml。
  1. // in bg_9patchbutton.xml  
  2. <?xml version="1.0" encoding="UTF-8"?>  
  3. <selector xmlns:android="http://schemas.android.com/apk/res/android">  
  4.     <item android:state_pressed="true"  
  5.         android:drawable="@drawable/bg_btn_2" />  
  6.     <item android:state_focused="true"  
  7.         android:drawable="@drawable/bg_btn_2" />  
  8.     <item android:drawable="@drawable/bg_btn" />  
  9. </selector>  

[img]http://blog.csdn.net/u012637501/article/details/45667507/file:/C:/Users/jie/AppData/Local/YNote/data/jiangdongguo2013@126.com/bbf3f5c1543f420f83c3ea74db07a403/bg_btn.9.9.png  [img]http://img.blog.csdn.net/20150512114818691?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMjYzNzUwMQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center
(3) 在界面定义文件 layout/main.xml中添加Button、ImageButton按钮控件的定义。Button、ImageButton都是可以使用背景属性的
  1. <Button  
  2.     android:layout_width="120dp"  
  3.     android:layout_height="40dp"  
  4.     android:text="9-patch图片背景按钮"  
  5.     android:background="@drawable/bg_9patchbutton" />  
  6. <Button  
  7.     android:layout_width="200dp"  
  8.     android:layout_height="40dp"  
  9.     android:text="9-patch图片背景按钮"  
  10.     android:background="@drawable/bg_9patchbutton" />  
  11. <Button  
  12.     android:layout_width="120dp"  
  13.     android:layout_height="80dp"  
  14.     android:text="9-patch图片背景按钮"  
  15.     android:background="@drawable/bg_9patchbutton" />  
  16. <ImageButton  
  17.     android:layout_width="120dp"  
  18.     android:layout_height="40dp"  
  19.     android:src="@drawable/bg_9patchbutton"  
  20.     android:scaleType="fitXY"  
  21.     android:background="@android:color/transparent" />  

二、自定义图片按钮
(1)准备自定义样式图片speaking.png、speak.png

[img]http://blog.csdn.net/u012637501/article/details/45667507/file:/C:/Users/jie/AppData/Local/YNote/data/jiangdongguo2013@126.com/5361ab01824e469d902b1770b7571b8f/clipboard.png   [img]http://img.blog.csdn.net/20150512114831888?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMjYzNzUwMQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center


(2)在/res/drawable目录下增加一个imagepress.xml文件,用于设置触发按钮时显示不同的图片效果
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <selector xmlns:android="http://schemas.android.com/apk/res/android" >  
  3.     <item android:state_pressed="false" android:drawable="@drawable/speak"/>  
  4.  <item android:state_focused="true" android:drawable="@drawable/speaking"/>  
  5.  <item android:state_pressed="true" android:drawable="@drawable/speaking"/>  
  6. </selector>  

(3)在界面文件layout/main.xml添加ImageButton按钮
  1. <ImageButton  
  2.         android:layout_width="wrap_content"  
  3.         android:layout_height="wrap_content"  
  4.         android:src="@drawable/imagepress"  
  5.         android:scaleType="fitXY"  
  6.         android:background="@android:color/transparent" /> 

参考文献:http://blog.csdn.net/lucherr/article/details/7476941
......显示全文...
    点击查看全文


上一篇文章      下一篇文章      查看所有文章
2015-05-12 20:57:56  
移动开发 最新文章
深入了解android中的消息机制Handler
Android
Libgdx之BitmapFont字体
AndroidApp发布到应用市场的流程
Android开发找工作之前先看看这些知识点吧
View的事件分发机制解析
简单介绍了解白鹭引擎Egret
Cocos2d
android获取本地图片(二)
动画特效七:碰撞动画
360图书馆 软件开发资料 文字转语音 购物精选 软件下载 美食菜谱 新闻资讯 电影视频 小游戏 Chinese Culture
生肖星座 三丰软件 视频 开发 Android开发 站长 古典小说 网文精选 搜图网 美图 中国文化英文版 多播 租车 短信
2017-7-24 22:41:23
多播视频美女直播
↓电视,电影,美女直播,迅雷资源↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  软件世界网 --