android Button 切换背景,实现动态按钮和按钮颜色渐变

    android Button 切换背景,实现动态按钮和按钮颜色渐变
一、添加android 背景筛选器selector实现按钮背景改变
    1、右键单击项目->new->Others->Android->Android Xml File->next.
    2、在 New Android Xml File对话框中的 Resource Type 下拉框中选择Drawable。在File中输入要创建的文件名。
    3、在Root Element:中选择 selector(选择器)->next->finish;或者跳过该项选择,可以在生成的xml文件中添加selector的相关代码也是可以的。
    4、在生成的xml文件中添加如下代码:
    ①实现按钮切换后实现按钮背景图片转变。
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:state_pressed="true" android:color="#00000000"/>
    <item android:drawable="@drawable/bt_from1"/>
</selector>
在筛选器中,上述属性的设定是并列关系的(与关系),可以根据下列提供的属性组合出适应不同场合的筛选。根据筛选的条件可以设置不同状态的背景颜色和背景图片。
②实现按钮切换后实现按钮颜色渐变。
          
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"> / 
<item android:state_pressed="true">//定义当button 处于pressed 状态时的形态。 
 <shape>
 <gradient android:startColor="#8600ff" />
 <stroke android:width="2dp" android:color="#000000" /> 
 <corners android:radius="5dp" /> 
 <padding android:left="10dp" android:top="10dp" 
 android:bottom="10dp" android:right="10dp"/> 
 </shape>
</item> 
<item android:state_focused="true">//定义当button获得 focus时的形态 
 <shape> 
 <gradient android:startColor="#eac100"/> 
 <stroke android:width="2dp" android:color="#333333" color="#ffffff"/> 
 <corners android:radius="8dp" /> 
 <padding android:left="10dp" android:top="10dp" 
 android:bottom="10dp" android:right="10dp"/> 
 </shape> 
</item>
</selector> 
    5、在对布局xml文件中对按钮添加背景属性,背景引入以上创建的xml文件即可实现,动态的按钮背景和颜色。
<Button   
android:id="@+id/btn_user_selected"  
android:layout_width="wrap_content"  
android:layout_height="wrap_content"  
android:background="@drawable/btn_frome1/>  
    6、背景选择器相关属性
        android:state_selected :选中
        android:state_focused  :获得焦点
        android:state_pressed  :点击
        android:state_enabled  :设置是否响应事件,指所有事件
二、在java代码中实现背景切换。
1、针对单个按键实现背景切换
 public boolean onTouch(View v, MotionEvent event) {  
    Button upStepBtn = (Button) v;  
       if(event.getAction() == MotionEvent.ACTION_DOWN){  
            upStepBtn. getBackground().setAlpha(255);  //设置透明背景
        }else if(event.getAction() == MotionEvent.ACTION_UP){  
           upStepBtn.setBackgroundResource(R.drawable. R.drawable.bt_from1 );  
           finish();   
        }  
        return false;  
    }  
通过监听按钮的不同状态来更改按钮的背景图片
public boolean onTouch(View v,MotionEvent event){
 
}
参数v:事件源对象
参数event:事件封装类的对象,其中封装了触发事件的详细信息,同样包括事件的类型、触发时间等信息。
event.getAction() == MotionEvent.ACTION_DOWN   ======>按钮被按下
event.getAction() == MotionEvent.ACTION_UP                ======>按钮被释放
2、针对多个按键实现背景切换
private ImageView IB_1,IB_2;
public boolean onTouch(View v, MotionEvent event) {
if (v == IB_1) {
if (event.getAction() == MotionEvent. ACTION_UP ) {
IB_1.setBackgroundResource(R.drawable.bt_from1);		
} else {
	IB_1.getBackground().setAlpha(255);//设置透明背景	
}
if (v == IB_2) {
if (event.getAction() == MotionEvent. ACTION_UP ) {
IB_2.setBackgroundResource(R.drawable.bt_from2);
} else {
	IB_2.getBackground().setAlpha(255);//
}			
}
3、设置BUTTON背景为透明
 在“一”中使用了在筛选器中设置背景颜色设为透明,在“二”中实现在java中设置背景为透明。接下了,详细说一下透明背景的设置。

1、Button或者ImageButton的背景设为透明或者半透明
①、半透明<Button android:background="#e0000000" ... /> 
②、透明<Button android:background="#00000000" ... />
 
 理解:颜色和不透明度 (alpha) 值以十六进制表示法表示。任何一种颜色的值范围都是 0 到 255(00 到 ff)。对于 alpha,00 表示完全透明,ff 表示完全不透明。表达式顺序是“aabbggrr”,其中“aa=alpha”(00 到 ff);“bb=blue”(00 到 ff);“gg=green”(00 到 ff);“rr=red”(00 到 ff)。例如,如果您希望对某叠加层应用不透明度为 50% 的蓝色,则应指定以下值:7fff0000
 
RGB 
设置背景图片透明度:
View v = findViewById(R.id.content);//找到你要设透明背景的layout 的id
v.getBackground().setAlpha(100);//0~255透明度值
设置背景颜色透明度:
ImageView.setBackgroundColor(Color.TRANSPARENT);



  • 6
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值