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

时间:2022-09-17 20:16:00
    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. &lbrack;Android&rsqb;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. hadoop常见问题汇集

    1 hadoop conf.addResource http://*.com/questions/16017538/how-does-configuration-addreso ...

  2. Xamarin Android教程如何使用Xamarin开发Android应用

    Xamarin Android教程如何使用Xamarin开发Android应用 在了解了Xamarin和Andriod系统之后,下面我们需要了解一下如何使用这些工具和系统来开发我们的应用程序. And ...

  3. 每天一个 Linux 命令(4):mkdir

    linux mkdir 命令用来创建指定的名称的目录,要求创建目录的用户在当前目录中具有写权限,并且指定的目录名不能是当前目录中已有的目录. 1.命令格式: mkdir [选项] 目录- 2.命令功能 ...

  4. Informatica9&period;6&period;1在Linux Red Hat 5&period;8上安装遇到的有关问题整理&lowbar;1

    1.  产品安装过程中提示无法创建Domain([ICMD_10033] Command [defineDomain] failed with error [[INFASETUP_10002]) 1) ...

  5. UVa 11992 &lpar;线段树 区间修改&rpar; Fast Matrix Operations

    比较综合的一道题目. 二维的线段树,支持区间的add和set操作,然后询问子矩阵的sum,min,max 写完这道题也是醉醉哒,代码仓库里还有一份代码就是在query的过程中也pushdown向下传递 ...

  6. Android之adb

    其实大部分的PC开发机与Android设备的操作都是通过adb(android debug bridge)技术完成的,这是一个C/S架构的命令行工具,主要由三个部分组成 运行在PC开发机上的命令行客户 ...

  7. Ubuntu安装中文字体

    Ubuntu没有宋体,楷体之类的中文字体,在Libreoffice中打不出中文,-_-! 我们可以从windows中借点字体过来,哈哈. 一.准备字体 从windows7中拷贝出字体文件,拷贝的目录为 ...

  8. 五、Oracle 分组查询、视图

    一.分组函数1.avg:平均分2.sum:求和3.max:最大值4.min:最小值注意:前面四个必须针对数值字段,且参数只能是一个5.count:求个数 二.分组查询1.语法是 group by 分组 ...

  9. 《面向对象程序设计》c&plus;&plus;第六次作业&lowbar;&lowbar;&lowbar;calculator SE

    c++第五次作业 Calculator SE 代码 PS:这次作业延迟了很久,人要是迷茫啊----唉------ 新增GUI界面,使用Qt creator编写,纯代码生成控件.写坐标. 感觉Qt cr ...

  10. 封装TeeChart控件

    public class MyChart { //字段 private TChart tChart; /// <summary> /// 构造函数,默认不是3D效果 /// </su ...