Android_UI_点击按钮切换背景效果实现

摘要:
--按下时的背景图片--˃˂!

实现按钮按下和释放,按钮背景图片相应切换效果的方法这里介绍两种,一种是在代码里实现,另一种是在xml文件里实现

一、在xml文件里

首先现在layout的一个xml文件下定义Button如下所示:

  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_selected/>
注意代码里的android:background="@drawable/btn_selected",这里btn_selecteddrawable文件下定义button按下释放效果的xml文件
接下来看btn_selected.xml文件的定义:

  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <selectorxmlns:android="http://schemas.android.com/apk/res/android">
  3. <!--获得焦点但未按下时的背景图片-->
  4. <itemandroid:state_focused="true"android:state_enabled="true"android:state_pressed="false"android:drawable="@drawable/user_selecte_n"/>
  5. <!--按下时的背景图片-->
  6. <itemandroid:state_enabled="true"android:state_pressed="true"android:drawable="@drawable/user_selecte_p"/>
  7. <!--按下时的背景图片-->
  8. <itemandroid:state_enabled="true"android:state_checked="true"android:drawable="@drawable/user_selecte_p"/>
  9. <!--默认时的背景图片-->
  10. <itemandroid:drawable="@drawable/user_selecte_n"/>
  11. </selector>

创建xml:点击drawable文件夹右键-->new-->Android XML File-->在File栏里填写xml名称-->Root Element下选择xml的背景选择器selector-->点击finish-->创建成功

相关属性:

android:state_selected:选中
android:state_focused
:获得焦点
android:state_pressed
:点击
android:state_enabled
:设置是否响应事件,指所有事件

selector背景选择器用法大全请跳转到:点击打开链接

二、在java代码里

  1. bottomReturnBtn.setOnTouchListener(newOnTouchListener(){
  2. publicbooleanonTouch(Viewv,MotionEventevent){
  3. ButtonupStepBtn=(Button)v;
  4. if(event.getAction()==MotionEvent.ACTION_DOWN){
  5. upStepBtn.setBackgroundResource(R.drawable.bottom_sub_order_btn);
  6. }elseif(event.getAction()==MotionEvent.ACTION_UP){
  7. upStepBtn.setBackgroundResource(R.drawable.bottom_return_check);
  8. finish();
  9. }
  10. returnfalse;
  11. }
  12. });

通过监听按钮的不同状态来更改按钮的背景图片

public boolean onTouch(View v,MotionEvent event){

}

参数v:事件源对象

参数event:事件封装类的对象,其中封装了触发事件的详细信息,同样包括事件的类型、触发时间等信息。


event.getAction() == MotionEvent.ACTION_DOWN ======>按钮被按下

event.getAction() == MotionEvent.ACTION_UP======>按钮被释放


免责声明:文章转载自《Android_UI_点击按钮切换背景效果实现》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇PLY文件SCTP客户端与服务器下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

python笔记1——xml文件的创建,读写,与增删改查

一、生成xml文件 Element类型是一种灵活的容器对象,用于在内存中存储结构化数据。创建元素的方法有Element或者SubElement(),前者称作元素的构建函数(constructor),用以构建任一独存的元素;后者称作元素的制造函数(factory function),用以制造某一元素的子元素。 Python中使用ElementTree可以很...

004 DOM01

一:说明 1.Js的三个部分   ECMAScripts标准:JS的基本语法   DOM:文档对象模型,操作页面的元素的   BOM:浏览器对象模型,操作浏览器 2.术语   文档:一个页面就是一个文档   元素:页面中的所有标签都是元素,元素可以看成对象   节点:页面中的所有内容都是节点   属性:标签的属性 二:初次体验DOM 1.程序 1 <...

从零开始配置TypeScript + React + React-Router + Redux + Webpack开发环境

转载请注明出处! 说在前面的话: 1、为什么不使用现成的脚手架?脚手架配置的东西太多太重了,一股脑全塞给你,我只想先用一些我能懂的库和插件,然后慢慢的添加其他的。而且自己从零开始配置也能学到更多的东西不是么。 2、教程只配置了开发环境,并没有配置生产环境。 3、教程针对人群是有过React + Redux经验,并且想在新项目中使用TypeScript的人(...

任务备忘(已经完成):用python写一个格式化xml字符串的程序

功能: 1.将xml中多余的空格,换行符去掉,让xml字符串变成一行。 2.将xml中添加缩进,使用print能正确打印添加缩进后的字符串。 思路: 采用正则表达式来判断xml中字符串的类型: 1.文件头 2.判断元素的种类:带有属性的标签,没有属性的标签,标签内结束的标签,只含有文本的标签,不含有文本的标签。 3.根据标签的级别添加换行符后面的空格 '...

QDialog之屏蔽Esc键(简单深刻,要么重写keyPressEvent然后break忽略此事件,要么重写eventFilter然后return,都是为了忽略此事件)

简述 Qt中Esc键会在一些控件中默认的进行一些事件的触发,比如:QDialog,按下Esc键窗口消失。大多数情况下,我们不需要这么做,那么就需要对默认事件进行屏蔽。 简述 源码分析 事件过滤器 事件重写 重写reject 源码分析 通过查看QDialog的源码,我们很容易会发现keyPressEvent事件中,当按下Esc键时,会默认执行reject...

JSP不支持EL表达式的解决方案

EL的全称是Expression Language。 1.在默认情况下,Servlet 2.3 / JSP 1.2是不支持EL表达式的,而Servlet 2.4 / JSP 2.0支持。 servlets 2.4这个版本的isELIgnored默认设置为false。所以使用web.xml里用web-app_2_4.xsd声明的时候在JSP页面不用特意声明...