热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Android按钮的各个样式设置

安卓开发学习之014Button应用详解(样式、背景、按钮单击、长按、双击、多击事件)一、Button简介按钮也是继承自TextView二、XML定义方

安卓开发学习之014 Button应用详解(样式、背景、按钮单击、长按、双击、多击事件)

一、Button简介

按钮也是继承自TextView
这里写图片描述

二、XML定义方法

id="@+id/button01"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Button_Click"/>

id设置按钮唯一编号
text设置按钮上显示的文本

三、设置按钮背景图片

使用background属性设置背景图片

<Buttonandroid:layout_width&#61;"wrap_content" android:layout_height&#61;"wrap_content" android:background&#61;"&#64;mipmap/yxs" android:text&#61;"Background"/>

四、设置样式

主要是定义按钮三种状态下分别对应的背景样式
默认状态、获得焦点&#xff08;android:state_focused&#61;“true”&#xff09;、
按下时&#xff08;android:state_pressed&#61;“true”&#xff09;

<Buttonandroid:layout_width&#61;"wrap_content" android:layout_height&#61;"wrap_content" android:background&#61;"&#64;drawable/bg_border" android:text&#61;"Button_Shape"/> <Button android:layout_width&#61;"wrap_content" android:layout_height&#61;"wrap_content" android:background&#61;"&#64;drawable/button_selector" android:text&#61;"Button_Selector1"/> <Button android:layout_width&#61;"wrap_content" android:layout_height&#61;"wrap_content" android:background&#61;"&#64;drawable/selector_button_start" android:text&#61;"Button_Selector2"/>

三个文件drawable文件代码如下&#xff1a;

1.res/drawable/bg_border.xml


<shape xmlns:android&#61;"http://schemas.android.com/apk/res/android" android:shape&#61;"rectangle"> <corners android:radius&#61;"10dp"/> <gradient android:centerColor&#61;"#00ff00" android:endColor&#61;"#0000ff" android:startColor&#61;"#ff0000" android:type&#61;"linear" /> <padding android:bottom&#61;"2dp" android:left&#61;"2dp" android:right&#61;"2dp" android:top&#61;"2dp"/> <size android:width&#61;"50dp" android:height&#61;"50dp"/> <stroke android:width&#61;"2dp" android:color&#61;"#f0f" /> shape>

2.res/drawable/button_selector.xml


<selectorxmlns:android&#61;"http://schemas.android.com/apk/res/android"> <item android:state_pressed&#61;"true"> <shape> <stroke android:width&#61;"2dp" android:color&#61;"#fad3cf"/> <solid android:color&#61;"#87CEFF"/> <padding android:bottom&#61;"10dp" android:left&#61;"10dp" android:right&#61;"10dp" android:top&#61;"10dp"/> <corners android:bottomLeftRadius&#61;"10dp" android:bottomRightRadius&#61;"10dp" android:topLeftRadius&#61;"10dp" android:topRightRadius&#61;"10dp"/> shape> item> <item android:state_focused&#61;"true"> <shape> <gradient android:angle&#61;"270" android:centerColor&#61;"#00ff00" android:endColor&#61;"#ffc2b7" android:startColor&#61;"#f0f" android:type&#61;"sweep"/> <stroke android:width&#61;"2dp" android:color&#61;"#dcdcdc"/> <corners android:bottomLeftRadius&#61;"10dp" android:bottomRightRadius&#61;"10dp" android:topLeftRadius&#61;"10dp" android:topRightRadius&#61;"10dp"/> <padding android:bottom&#61;"10dp" android:left&#61;"10dp" android:right&#61;"10dp" android:top&#61;"10dp"/> shape> item> <item> <shape> <gradient android:centerColor&#61;"#00ff00" android:endColor&#61;"#FFFFFF" android:startColor&#61;"#ff8c00" android:type&#61;"linear"/> <stroke android:width&#61;"2dp" android:color&#61;"#dcdcdc" android:dashGap&#61;"3dp" android:dashWidth&#61;"5dp"/> <corners android:bottomLeftRadius&#61;"10dp" android:bottomRightRadius&#61;"10dp" android:topLeftRadius&#61;"10dp" android:topRightRadius&#61;"10dp"/> <padding android:bottom&#61;"10dp" android:left&#61;"10dp" android:right&#61;"10dp" android:top&#61;"10dp"/> shape> item> selector>

效果如下&#xff1a;
这里写图片描述
这里写图片描述
这里写图片描述

3.res/drawable/selector_button_start.xml


<selector xmlns:android&#61;"http://schemas.android.com/apk/res/android" > <item android:drawable&#61;"&#64;mipmap/search_bar_edit_pressed" android:state_pressed&#61;"true"/> <item android:drawable&#61;"&#64;mipmap/button_start_click" android:state_focused&#61;"true"/> <item android:drawable&#61;"&#64;mipmap/search_bar_edit_normal">item> selector>

四、按钮点击事件的处理方式

按钮点击有四种处理方法。
第一种是通过onClick属性&#xff0c;通过这个属性设置处理点击事件的方法名&#xff0c;在Activity中实现这个方法。
第二种是典型的事件监听机制setOnClickListener的应用形式&#xff0c;下面详细说明这四种方法。

1.通过onClick属性设置处理方法

  在XML布局文件中设置Button的属性&#xff1a;
  android:onClick&#61;”yourMethodName”
  然后在该布局文件对应的Acitivity中实现该方法&#xff1a;
需要注意的是这个方法必须符合三个条件&#xff1a;
1.public
2.返回void
3.只有一个参数View&#xff0c;这个View就是被点击的这个控件。
也可为多个Button设置同一个方法名&#xff0c;然后在方法内使用switch方法判断点击的是哪个按钮

如下&#xff1a;

"wrap_content"android:layout_height&#61;"wrap_content"android:background&#61;"&#64;drawable/button_selector"android:onClick&#61;"MyClick"android:text&#61;"Button_onClick"/> java代码中 /** * 在XML中配置置android:onClick&#61;"MyClick" * 必须设置为public void */ public void MyClick(View view) { // switch (view.getId()) // { // //TODO // } Toast.makeText(ButtonActivity.this, "android:onClick&#61;\"MyClick\"", Toast.LENGTH_SHORT) .show(); }

2.使用setOnClickListener添加监听器对象

Button button01 &#61; (Button) findViewById(R.id.button01);//短按点击事件监听button01.setOnClickListener(new View.OnClickListener() {&#64;Overridepublic void onClick(View v) { Toast.makeText(ButtonActivity.this, "OnClickListener", Toast.LENGTH_SHORT).show(); } });

此种方法还有几个变种:
1.自定义类实现OnClickListener接口

//自定义类实现OnClickListener接口private MyOnClickListener mOnClickListener &#61; new MyOnClickListener();private class MyOnClickListener implements View.OnClickListener { &#64;Override public void onClick(View v) { switch (v.getId()) { //TODO } } } 然后调用 button01.setOnClickListener(mOnClickListener); button02.setOnClickListener(mOnClickListener);

此种方法的好处是当多个按钮要处理的事件逻辑是一样的话&#xff0c;不用每个按钮都写一个setOnClickListener监听事件&#xff0c;并实现Onclick方法

2.使Activity实现OnClickListener接口,并在Activity中实现Onclick方法

public class ButtonActivity extends AppCompatActivity implements View.OnClickListener{ &#64;Override public void onClick(View v) { switch (v.getId()) { //TODO } } }

3.长按事件监听

//长按(长按2秒以上)点击事件监听button01.setOnLongClickListener(new View.OnLongClickListener() {&#64;Overridepublic boolean onLongClick(View v) { Toast.makeText(ButtonActivity.this, "OnLongClickListener", Toast.LENGTH_SHORT) .show(); return true; } });

五、双击事件判定

主要代码如下

private static int DOUBLE_CLICK_TIME &#61; 1000;private List times &#61; new ArrayList<>(); private Handler mHandler &#61; new Handler(); private Runnable r; /**双击事件判断*/ private boolean isDoubleClick() { if (times.size() &#61;&#61; 2) { //已经完成了一次双击&#xff0c;list可以清空了 if (times.get(times.size() - 1) - times.get(0) this, "双击", Toast.LENGTH_SHORT).show(); if (mHandler !&#61; null) { if (r !&#61; null) { //移除回调 mHandler.removeCallbacks(r); r &#61; null; } } return true; } else { //这种情况下&#xff0c;第一次点击的时间已经没有用处了&#xff0c;第二次就是“第一次” times.remove(0); } } //此处可以添加提示 //showTips(); r &#61; new Runnable() { &#64;Override public void run() { Toast.makeText(ButtonActivity.this, "单击", Toast.LENGTH_SHORT).show(); } }; //DOUBLE_CLICK_TIME时间后提示单击事件 mHandler.postDelayed(r, DOUBLE_CLICK_TIME); return false; }

使用方法&#xff1a;在onClick&#xff08;View v&#xff09;方法中调用

Button button02 &#61; (Button) findViewById(R.id.button02);button02.setOnClickListener(new View.OnClickListener() {&#64;Overridepublic void onClick(View v) { times.add(SystemClock.uptimeMillis()); isDoubleClick(); } });

六、多击事件

/**多击事件判断*/private boolean isMultiClick() {int size &#61; times.size(); //处理多击事件 if (size > 1) { if (times.get(size - 1) - times.get(size - 2) this, size &#43; "连击", Toast.LENGTH_SHORT).show(); if (mHandler !&#61; null) { if (r !&#61; null) { //移除回调 mHandler.removeCallbacks(r); } } return true; } else { //这种情况下&#xff0c;以前存储的点击的时间已经没有用处了&#xff0c;最后一次就是“第一次” long oldtime &#61; times.get(size - 1); times.clear(); times.add(oldtime); } } //此处可以添加提示 //showTips(); r &#61; new Runnable() { &#64;Override public void run() { Toast.makeText(ButtonActivity.this,"单击", Toast.LENGTH_SHORT).show(); } }; //DOUBLE_CLICK_TIME时间后提示单击事件 mHandler.postDelayed(r, DOUBLE_CLICK_TIME); return false; }

效果如下&#xff1a;
这里写图片描述

开发工具&#xff1a;Android Studio1.4
SDK: Android 6.0
API 23

代码下载&#xff1a;Button.zip

版权声明&#xff1a;本文为博主原创文章&#xff0c;如需转载请注明来源。


转:https://www.cnblogs.com/feilin/p/5220229.html



推荐阅读
  • 本文介绍了使用kotlin实现动画效果的方法,包括上下移动、放大缩小、旋转等功能。通过代码示例演示了如何使用ObjectAnimator和AnimatorSet来实现动画效果,并提供了实现抖动效果的代码。同时还介绍了如何使用translationY和translationX来实现上下和左右移动的效果。最后还提供了一个anim_small.xml文件的代码示例,可以用来实现放大缩小的效果。 ... [详细]
  • 在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板
    本文介绍了在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板的方法和步骤,包括将ResourceDictionary添加到页面中以及在ResourceDictionary中实现模板的构建。通过本文的阅读,读者可以了解到在Xamarin XAML语言中构建控件模板的具体操作步骤和语法形式。 ... [详细]
  • 本文讨论了Alink回归预测的不完善问题,指出目前主要针对Python做案例,对其他语言支持不足。同时介绍了pom.xml文件的基本结构和使用方法,以及Maven的相关知识。最后,对Alink回归预测的未来发展提出了期待。 ... [详细]
  • Android系统移植与调试之如何修改Android设备状态条上音量加减键在横竖屏切换的时候的显示于隐藏
    本文介绍了如何修改Android设备状态条上音量加减键在横竖屏切换时的显示与隐藏。通过修改系统文件system_bar.xml实现了该功能,并分享了解决思路和经验。 ... [详细]
  • 本文介绍了Android 7的学习笔记总结,包括最新的移动架构视频、大厂安卓面试真题和项目实战源码讲义。同时还分享了开源的完整内容,并提醒读者在使用FileProvider适配时要注意不同模块的AndroidManfiest.xml中配置的xml文件名必须不同,否则会出现问题。 ... [详细]
  • Android开发实现的计时器功能示例
    本文分享了Android开发实现的计时器功能示例,包括效果图、布局和按钮的使用。通过使用Chronometer控件,可以实现计时器功能。该示例适用于Android平台,供开发者参考。 ... [详细]
  • MyBatis多表查询与动态SQL使用
    本文介绍了MyBatis多表查询与动态SQL的使用方法,包括一对一查询和一对多查询。同时还介绍了动态SQL的使用,包括if标签、trim标签、where标签、set标签和foreach标签的用法。文章还提供了相关的配置信息和示例代码。 ... [详细]
  • Activiti7流程定义开发笔记
    本文介绍了Activiti7流程定义的开发笔记,包括流程定义的概念、使用activiti-explorer和activiti-eclipse-designer进行建模的方式,以及生成流程图的方法。还介绍了流程定义部署的概念和步骤,包括将bpmn和png文件添加部署到activiti数据库中的方法,以及使用ZIP包进行部署的方式。同时还提到了activiti.cfg.xml文件的作用。 ... [详细]
  • 本文介绍了一个Magento模块,其主要功能是实现前台用户利用表单给管理员发送邮件。通过阅读该模块的代码,可以了解到一些有关Magento的细节,例如如何获取系统标签id、如何使用Magento默认的提示信息以及如何使用smtp服务等。文章还提到了安装SMTP Pro插件的方法,并给出了前台页面的代码示例。 ... [详细]
  • SmartRefreshLayout自定义头部刷新和底部加载
    1.添加依赖implementation‘com.scwang.smartrefresh:SmartRefreshLayout:1.0.3’implementation‘com.s ... [详细]
  • 开发笔记:(002)spring容器中bean初始化销毁时执行的方法及其3种实现方式
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了(002)spring容器中bean初始化销毁时执行的方法及其3种实现方式相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • iOS超签签名服务器搭建及其优劣势
    本文介绍了搭建iOS超签签名服务器的原因和优势,包括不掉签、用户可以直接安装不需要信任、体验好等。同时也提到了超签的劣势,即一个证书只能安装100个,成本较高。文章还详细介绍了超签的实现原理,包括用户请求服务器安装mobileconfig文件、服务器调用苹果接口添加udid等步骤。最后,还提到了生成mobileconfig文件和导出AppleWorldwideDeveloperRelationsCertificationAuthority证书的方法。 ... [详细]
  • http头_http头部注入
    1、http头部注入分析1、原理 ... [详细]
author-avatar
莫一鸣2012
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有