注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

你想快速掌握安卓编程吗

 
 
 

日志

 
 

更改按钮状态——StateListDrawable的使用  

2014-09-09 13:09:50|  分类: B.例程 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

更改按钮状态 - 沉默蜂 - 沉默蜂B4A安卓编程实战资料
运行效果图

 

 

#Region 代码说明


'版本:2014-09-09
'设计:天天
'博客:http://silentbees.blog.163.com (B4A技术博客)

#End Region

#Region  Project Attributes
 #ApplicationLabel: 状态列表
 #VersionCode: 1
 #VersionName:
 'SupportedOrientations possible values: unspecified, landscape or portrait.
 #SupportedOrientations: unspecified
 #CanInstallToExternalStorage: False
#End Region

#Region  Activity Attributes
 #FullScreen: False
 #IncludeTitle: True
#End Region

Sub Process_Globals
 'These global variables will be declared once when the application starts.
 '这里声明的变量能被所有模块使用!                                

End Sub

Sub Globals
 'These global variables will be redeclared each time the activity is created.
 '这里声明的变量只能在此模块使用!    
 
 Dim Button1(3) As Button
 Dim Button2 As Button
 Dim Button3 As Button
End Sub

Sub Activity_Create(FirstTime As Boolean)

 Activity.Color =Colors.White
 
 #Region 在屏幕上显示按钮控件
 
 
 For i=0 To Button1.Length-1
  Button1(i).Initialize("Button1")
  Button1(i).Text="按钮" & (i+1)
  Button1(i).TextSize =12
  Button1(i).TextColor=Colors.Black
  Activity.AddView(Button1(i),25%x,50dip*(i)+35dip*(i+1),50%x,35dip)
 Next
 
 
 Button2.Initialize("Button2")
 Button2.Text ="更换背景颜色"
 Button2.TextSize =12
 Activity.AddView(Button2,0,300dip,50%x,35dip)
 
 Button3.Initialize("Button3")
 Button3.Text ="更换背景图片"
 Button3.TextSize =12
 Activity.AddView(Button3,50%x,300dip,50%x,35dip)
 
 #End Region 在屏幕上显示按钮控件
 
 
 
End Sub

Sub Activity_Resume

End Sub

Sub Activity_Pause (UserClosed As Boolean)

End Sub

 

Sub Button2_Click '更换按钮状态颜色
 For i=0 To 2
  Button1(i).Background =ButtonGradient(Array As Int(Colors.RGB(50, 205, 50), Colors.RGB(0,128,0)))
 Next
End Sub


Sub Button3_Click '更换按钮状态图片

 Dim sld(3) As StateListDrawable
 Dim bd(3) As BitmapDrawable
 bd(0).Initialize(LoadBitmap(File.DirAssets,"b1.png")) '按钮禁用时的图片,可更换其他图片
 bd(1).Initialize(LoadBitmap(File.DirAssets,"b2.png"))
 bd(2).Initialize(LoadBitmap(File.DirAssets,"b1.png"))
 
 
 For i=0 To 2
  sld(i).Initialize
  sld(i).AddState(sld(i).State_Disabled,bd(0))
  sld(i).AddState(sld(i).State_Pressed,bd(1))
  sld(i).AddCatchAllState(bd(2))
  Button1(i).Background =sld(i)
 Next
 
End Sub


'以下函数来自官网
'Tutorial StateListDrawable example
'http://www.basic4ppc.com/android/forum/threads/statelistdrawable-example.6589/#content
Sub ButtonGradient(ColorList() As Int) As StateListDrawable   ' Define a GradientDrawable for Enabled state

 '正常状态时的渐变色
 Dim gdwEnabled As GradientDrawable 
 gdwEnabled.Initialize("TOP_BOTTOM",ColorList) 
 gdwEnabled.CornerRadius = 5   ' Define a GradientDrawable for Pressed state 
 
 '按下状态时的渐变色
 Dim gdwPressed As GradientDrawable
 gdwPressed.Initialize("BOTTOM_TOP",ColorList) 
 gdwPressed.CornerRadius = 7   ' Define a GradientDrawable for Disabled state
 
 '禁用状态时的渐变色
 Dim gdwDisabled As GradientDrawable 
 gdwDisabled.Initialize("TOP_BOTTOM", Array As Int(Colors.LightGray, Colors.DarkGray)) 
 gdwDisabled.CornerRadius = 5   ' Define a StateListDrawable
 
 '状态列表对象,一个状态列表对象只能给一个控件赋值,而不能同时对多个控件对象赋值
 Dim stdGradient As StateListDrawable 
 stdGradient.Initialize
 
 stdGradient.AddState2(Array As Int(stdGradient.State_enabled, -stdGradient.State_Pressed), gdwEnabled) 
 stdGradient.AddState(stdGradient.State_Pressed, gdwPressed)
 stdGradient.AddState(stdGradient.State_Disabled, gdwDisabled)
 
 
 Return stdGradient
 
End Sub

  评论这张
 
阅读(203)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017