• 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文件中添加如下代码:
        ①实现按钮切换后实现按钮背景图片转变。
    [html]  view plain copy
     
    1. <?xml version="1.0" encoding="utf-8"?>  
    2. <selector xmlns:android="http://schemas.android.com/apk/res/android" >  
    3.     <item android:state_pressed="true" android:color="#00000000"/>  
    4.     <item android:drawable="@drawable/bt_from1"/>  
    5. </selector>  
    在筛选器中,上述属性的设定是并列关系的(与关系),可以根据下列提供的属性组合出适应不同场合的筛选。根据筛选的条件可以设置不同状态的背景颜色和背景图片。
    ②实现按钮切换后实现按钮颜色渐变。
              
    [html]  view plain copy
     
    1. <?xml version="1.0" encoding="utf-8"?>  
    2. <selector xmlns:android="http://schemas.android.com/apk/res/android"> /   
    3. <item android:state_pressed="true">//定义当button 处于pressed 状态时的形态。   
    4.  <shape>  
    5.  <gradient android:startColor="#8600ff" />  
    6.  <stroke android:width="2dp" android:color="#000000" />   
    7.  <corners android:radius="5dp" />   
    8.  <padding android:left="10dp" android:top="10dp"   
    9.  android:bottom="10dp" android:right="10dp"/>   
    10.  </shape>  
    11. </item>   
    12. <item android:state_focused="true">//定义当button获得 focus时的形态   
    13.  <shape>   
    14.  <gradient android:startColor="#eac100"/>   
    15.  <stroke android:width="2dp" android:color="#333333" color="#ffffff"/>   
    16.  <corners android:radius="8dp" />   
    17.  <padding android:left="10dp" android:top="10dp"   
    18.  android:bottom="10dp" android:right="10dp"/>   
    19.  </shape>   
    20. </item>  
    21. </selector>   
        5、在对布局xml文件中对按钮添加背景属性,背景引入以上创建的xml文件即可实现,动态的按钮背景和颜色。
    [html]  view plain copy
     
    1. <Button     
    2. android:id="@+id/btn_user_selected"    
    3. android:layout_width="wrap_content"    
    4. android:layout_height="wrap_content"    
    5. android:background="@drawable/btn_frome1/>    
        6、背景选择器相关属性
            android:state_selected :选中
            android:state_focused  :获得焦点
            android:state_pressed  :点击
            android:state_enabled  :设置是否响应事件,指所有事件
    二、在java代码中实现背景切换。
    1、针对单个按键实现背景切换
    [html]  view plain copy
     
    1. public boolean onTouch(View v, MotionEvent event) {    
    2.    Button upStepBtn = (Button) v;    
    3.       if(event.getAction() == MotionEvent.ACTION_DOWN){    
    4.            upStepBtn. getBackground().setAlpha(255);  //设置透明背景  
    5.        }else if(event.getAction() == MotionEvent.ACTION_UP){    
    6.           upStepBtn.setBackgroundResource(R.drawable. R.drawable.bt_from1 );    
    7.           finish();     
    8.        }    
    9.        return false;    
    10.    }    
    通过监听按钮的不同状态来更改按钮的背景图片
    public boolean onTouch(View v,MotionEvent event){
     
    }
    参数v:事件源对象
    参数event:事件封装类的对象,其中封装了触发事件的详细信息,同样包括事件的类型、触发时间等信息。
    event.getAction() == MotionEvent.ACTION_DOWN   ======>按钮被按下
    event.getAction() == MotionEvent.ACTION_UP                ======>按钮被释放
    2、针对多个按键实现背景切换
    [html]  view plain copy
     
    1. private ImageView IB_1,IB_2;  
    2. public boolean onTouch(View v, MotionEvent event) {  
    3. if (v == IB_1) {  
    4. if (event.getAction() == MotionEvent. ACTION_UP ) {  
    5. IB_1.setBackgroundResource(R.drawable.bt_from1);          
    6. } else {  
    7.     IB_1.getBackground().setAlpha(255);//设置透明背景   
    8. }  
    9. if (v == IB_2) {  
    10. if (event.getAction() == MotionEvent. ACTION_UP ) {  
    11. IB_2.setBackgroundResource(R.drawable.bt_from2);  
    12. } else {  
    13.     IB_2.getBackground().setAlpha(255);//  
    14. }             
    15. }  
    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);

  • 相关阅读:
    中文转拼音 (utf8版,gbk转utf8也可用)
    会不会死循环
    图片放大缩小的zoom.js
    Getting unknown property: commonmodelsTeacher::auth_Key
    Yii-admin 权限菜单配置
    wordpress 后台富文本编辑器,添加图片发现无法左对齐,样式出现混乱
    windows 命令
    Yii2 获取URL的一些方法
    PHP 直接使用html输出excel
    json JSON_UNESCAPED_UNICODE 防止中文乱码
  • 原文地址:https://www.cnblogs.com/dyllove98/p/3236828.html
Copyright © 2020-2023  润新知