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. VC++6.0 MFC播放视频

    注:需要在windows xp下才可以使用Windows Media Player插件,在windows 7下面会找不到该插件. 1.Windows Media Player控件的主要方法: 1)Ge ...

  2. 关于duilib中的list的扩展探索

    原文地址:http://blog.csdn.net/tragicguy/article/details/21893065 今天在做一个程序的界面时,需要在一个列表中显示除文字以外的其他控件,如:Edi ...

  3. java 复习002

    java东西太多了,我都有点小凌乱了,记得太没结构了 java内存回收机制:垃圾收集GC(Garbage Collection) 两种常用方法: 引用计数(早期使用) 简介:堆中对象每次被栈中引用指向 ...

  4. mysql 错误解决

    1. Error Code: 1175. You are using safe update mode and you tried to update a table without a WHERE ...

  5. 最大连续子数和问题-homework-03

    一.说明 这次的作业做的不好,一小点怨念ing····· 首先向TA说明下,我的小伙伴“丢下”我后我不知道,以至于发现剩下我一个的时间有点晚,我机智地找到了一个3个人的小组,又叫到了一个小伙伴,但是悲 ...

  6. maven 控制台乱码

    在pom.xml加一条配置 <project> …… <properties> <argLine>-Dfile.encoding=UTF-8</argLine ...

  7. UIImageView旋转任意角度

    -(UIImageView *) makeRotation:(UIImageView *)image speedX:(float)X speedY:(float)Y { //    头文件中需要定义  ...

  8. Boost::Asio入门剖析

    Boost::Asio可以在socket等I/O对象上执行同步或异步操作,使用Boost::Asio前很有必要了解Boost::Asio.你的程序以及它们交互的过程. 作为一个引导的例子,我们思考一个 ...

  9. secureCRT使用VIM时对语法高亮

    国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html 内部邀请码:C8E245J (不写邀请码,没有现金送) 国 ...

  10. Swift学习笔记六

    集合类型(Collection Type) Swift提供三种主要的集合类型:数组(array).集合(set).字典(dictionary).数组是有序的值序列,集合是无序的值序列,字典是无序的键值 ...