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);

android Button 切换背景,实现动态按钮和按钮颜色渐变的更多相关文章

  1. android 按钮Button单击背景切换

    res/drawable/btn_selected.xml <?xml version="1.0" encoding="utf-8"?> <s ...

  2. Android Button点击效果(按钮背景变色、文字变色)

    一. 说明 Android Button的使用过程中,我们会需要为Button添加点击效果,不仅仅按钮的背景色需要变化,而且有时,我们连文字的颜色都希望变化,我们可以使用StateListDrawab ...

  3. [Android]Button按下后修改背景图

    Button按下后修改背景图 错误做法:为Button添加OnTouch事件监听,根据ACTION_UP和ACTION_DOWN动作来修改Button的背景图 错误原因:从理论上讲,按钮按下修改背景色 ...

  4. android 按钮特效 波纹 Android button effects ripple

    android 按钮特效 波纹 Android button effects ripple 作者:韩梦飞沙 Author:han_meng_fei_sha 邮箱:313134555@qq.com E- ...

  5. 怎么给button设置背景颜色?【Android】

    怎么给button设置背景颜色?[Android] 怎么给button设置背景颜色?[Android] 现在我想给按钮添加背景颜色,怎么做 1.android:background="@an ...

  6. 【转】UGUI之用脚本动态的改变Button的背景图片 和 颜色

    http://blog.csdn.net/u014771617/article/details/45102701 public Button button;void Start(){ColorBloc ...

  7. android radiogroup样式(设置切换背景与文字颜色)

    main.xml <RadioGroup android:id="@+id/radioGroup1" android:layout_width="wrap_cont ...

  8. android小功能:checkbox使用自己的背景点击切换背景

    xiazai_checkbox.xml <?xml version="1.0" encoding="utf-8"?> <selector xm ...

  9. Android实现AppWidget、Broadcast动态注册

    Android实现AppWidget.Broadcast动态注册 开发工具:Andorid Studio 1.3 运行环境:Android 4.4 KitKat 工程内容 主界面可以编辑广播的信息,点 ...

随机推荐

  1. schema对象介绍

    1.schema对象简介 数据库schema为一组数据结构的逻辑集合,称之为schema对象,schema对象最贱的为表和索引,schema对象由SQL创建和维护. 一个数据库用户拥有一个用户名和各种 ...

  2. JAVA与网络开发(TCP:Socket、ServerSocket;UDP:DatagramSocket、DatagramPacket;多线程的C/S通讯、RMI开发概述)

    通过TCP建立可靠通讯信道 1)为了对应TCP协议里的客户端和服务器端,Socket包提供了Socket类和ServerSocket类. 2)Socket类构造函数及相关方法 Public Socke ...

  3. 办公室网络二三事 - chunyu

    开始的时候,我们办公室拉了两条家庭百兆宽带,两条宽带分别接到路由器的wan1/wan2口上,我们愉快的工作愉快的上网. 后来,再拉了一条十兆企业专线,接到了路由器的wan3口上面,配了一些静态路由,希 ...

  4. nodejs + socket.io + redis 新手上路

    最近要更新网站架构了,决定转入 nodejs + socket.io + redis 方式. 战斗刚开始: 网上的文章太松散,我根据各个网友的分享进行整理 ,让大家可以方便上手. 进入node.js之 ...

  5. 降低Java垃圾回收开销的5条建议

    保持GC低开销的窍门有哪些? 随着一再拖延而即将发布的 Java9,G1(“Garbage First”)垃圾回收器将被成为 HotSpot 虚拟机默认的垃圾回收器.从 serial 垃圾回收器到CM ...

  6. 【转】从零开始,让你的框架支持CocoaPods

    首先概括一个大概的步骤: 代码上传到Github 创建podspec文件 在Github上创建release版本 注册CocoaPods账号 上传代码到CocoaPods 检验是否上传成功 更新框架版 ...

  7. 关闭SELinux的两种方法

    1 永久方法 – 需要重启服务器 修改/etc/selinux/config文件中设置SELINUX=disabled ,然后重启服务器. 2 临时方法 – 设置系统参数 使用命令setenforce ...

  8. AutoCAD.NET二次开发:扩展数据之XData

    结果缓存——ResultBuffer 结果缓存即 Autodesk.AutoCAD.DatabaseServices.ResultBuffer 类型,使用 ResultBuffer 对象时需要提供一个 ...

  9. AutoCAD.NET二次开发:创建自定义菜单(AcCui)

    从CAD2007之后,Autodesk提供了一个新的程序集AcCui.dll,使用这个程序集,我们可以方便地做一些界面方面的操作,比如创建自定义菜单. 下面介绍一下菜单的创建过程: 1.在项目中添加引 ...

  10. HDU 5723 Abandoned country (最小生成树+dfs)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5723 n个村庄m条双向路,从中要选一些路重建使得村庄直接或间接相连且花费最少,这个问题就是很明显的求最 ...