广告
返回顶部
首页 > 资讯 > 移动开发 >android自定义加减按钮
  • 185
分享到

android自定义加减按钮

按钮Android 2022-06-06 14:06:11 185人浏览 薄情痞子
摘要

本文实例为大家分享了Android自定义加减按钮的具体代码,供大家参考,具体内容如下 1、定义两个shape: my_button_shape_nORMal.xml: <

本文实例为大家分享了Android自定义加减按钮的具体代码,供大家参考,具体内容如下

1、定义两个shape:

my_button_shape_nORMal.xml:


<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="Http://schemas.android.com/apk/res/android"
 android:shape="rectangle" >
 <stroke
 android:width="1dp"
 android:color="#007FFF" />
 <corners android:radius="5dip" />
 <padding
 android:bottom="1dp"
 android:left="10dp"
 android:right="10dp"
 android:top="1dp" />
</shape>

my_button_shape_pressed.xml:


<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
 android:shape="rectangle" >
 <stroke
 android:width="1dp"
 android:color="#007FFF" />
 <corners android:radius="5dip" />
 <padding
 android:bottom="1dp"
 android:left="10dp"
 android:right="10dp"
 android:top="1dp" />
</shape>

2、定义一个drawable:my_button_style.xml


<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
 <item android:drawable="@drawable/my_button_shape_normal" android:state_focused="false" android:state_pressed="false"></item>
 <item android:drawable="@drawable/my_button_shape_pressed" android:state_focused="false" android:state_pressed="true"></item>
</selector>

3、定义button布局(mybutton.xml):


<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:orientation="horizontal" >
 <Button
 android:id="@+id/reduce"
 android:layout_width="50dp"
 android:layout_height="30dp"
 android:background="@drawable/my_button_style"
 android:gravity="center"
 android:paddingBottom="10dp"
 android:text="-"
 android:textColor="#007FFF" />
 <Button
 android:id="@+id/add"
 android:layout_width="50dp"
 android:layout_height="30dp"
 android:layout_toRightOf="@+id/reduce"
 android:background="@drawable/my_button_style"
 android:gravity="center"
 android:paddingBottom="10dp"
 android:text="+"
 android:textColor="#007FFF" />
</RelativeLayout>

4、定义MyButton类:


public class MyButton extends RelativeLayout {
 private View view;
 private Button add, reduce;
 private OnAddReduceChangeStatusListener mAddReduceChangeStatusListener;
 public MyButton(Context context, AttributeSet attrs, int defStyle) {
 super(context, attrs, defStyle);
 // TODO Auto-generated constructor stub
 }
 public MyButton(Context context, AttributeSet attrs) {
 super(context, attrs);
 // TODO Auto-generated constructor stub
 view = LayoutInflater.from(context).inflate(R.layout.mybutton, this, true);
 init();
 }
 public MyButton(Context context) {
 super(context);
 // TODO Auto-generated constructor stub
 }
 private void init() {
 add = (Button) view.findViewById(R.id.add);
 reduce = (Button) view.findViewById(R.id.reduce);
 add.setOnTouchListener(new ComponentOnTouch());
 reduce.setOnTouchListener(new ComponentOnTouch());
 }
 class ComponentOnTouch implements OnTouchListener {
 @Override
 public boolean onTouch(View v, MotionEvent event) {
 // TODO Auto-generated method stub
 switch (v.getId()) {
 case R.id.add:
 if (mAddReduceChangeStatusListener != null) {
 mAddReduceChangeStatusListener.add(MyButton.this.getId(),event.getAction());
 }
 break;
 case R.id.reduce:
 if (mAddReduceChangeStatusListener != null) {
 mAddReduceChangeStatusListener.reduce(MyButton.this.getId(),event.getAction());
 }
 break;
 }
 return true;
 }
 }
 public void setOnAddReduceChangeStatusListener(OnAddReduceChangeStatusListener listener) {
 this.mAddReduceChangeStatusListener = listener;
 }
 public abstract interface OnAddReduceChangeStatusListener {
 public abstract boolean add(int viewId,int eventAction);
 public abstract boolean reduce(int viewId,int eventAction);
 }
}

5、布局中使用:


<package.MyButton
  android:id="@+id/mybutton_id"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content" >
 </package.MyButton>

6.代码中使用:

a.初始化:


mybutton = (MyButton) findViewById(R.id.mybutton_id);
 mybutton.setOnAddReduceChangeStatusListener(new OnAddReduceListener());

b.listener监听:


class OnAddReduceListener implements OnAddReduceChangeStatusListener {
 @Override
 public boolean add(int viewId, int eventAction) {
 // TODO Auto-generated method stub
 if (eventAction == MotionEvent.ACTION_DOWN) {
 onTouchChange("add");
 } else if (eventAction == MotionEvent.ACTION_UP) {
 if (plusThread != null) {
 isOnLonGClick = false;
 }
 } else if (eventAction == MotionEvent.ACTION_MOVE) {
 if (plusThread != null) {
 isOnLongClick = true;
 }
 } else if (eventAction == MotionEvent.ACTION_CANCEL) {
 if (plusThread != null) {
 isOnLongClick = false;
 }
 }
 return true;
 }
 @Override
 public boolean reduce(int viewId, int eventAction) {
 // TODO Auto-generated method stub
 if (eventAction == MotionEvent.ACTION_DOWN) {
 onTouchChange("reduce");
 } else if (eventAction == MotionEvent.ACTION_UP) {
 if (miusThread != null) {
 isOnLongClick = false;
 }
 } else if (eventAction == MotionEvent.ACTION_MOVE) {
 if (miusThread != null) {
 isOnLongClick = true;
 }
 } else if (eventAction == MotionEvent.ACTION_CANCEL) {
 if (miusThread != null) {
 isOnLongClick = false;
 }
 }
 return true;
 }
 }
 private void onTouchChange(String method) {
 if (method.equals("add")) {
 plusThread = new PlusThread();
 isOnLongClick = true;
 plusThread.start();
 } else if (method.equals("reduce")) {
 miusThread = new MiusThread();
 isOnLongClick = true;
 miusThread.start();
 }
 }

c,定义两个线程用来加减:


// 减操作
 class MiusThread extends Thread {
 @Override
 public void run() {
 while (isOnLongClick) {
 try {
 Thread.sleep(200);
 myHandler.sendEmptyMessage(1);
 } catch (InterruptedException e) {
 e.printStackTrace();
 }
 super.run();
 }
 }
 }
 // 加操作
 class PlusThread extends Thread {
 @Override
 public void run() {
 while (isOnLongClick) {
 try {
 Thread.sleep(200);
 myHandler.sendEmptyMessage(2);
 } catch (InterruptedException e) {
 e.printStackTrace();
 }
 super.run();
 }
 }
 }

使用Handler进行处理:


Handler myHandler = new Handler() {
 @Override
 public void handleMessage(Message msg) {
 // TODO Auto-generated method stub
 if (msg.what == 1) {
 //加操作
 } else if (msg.what == 2) {
 //减操作
 }
 }
 };
您可能感兴趣的文章:android计算器实现两位数的加减乘除Android基于反射技术实现的加减乘除运算示例Android实现简单加法计算器Android实现加法计算器Android studio实现简单计算器android实现简单计算器功能Android实现简易计算器小程序Android studio设计简易计算器Android实战教程第一篇之最简单的计算器Android计算器编写代码


--结束END--

本文标题: android自定义加减按钮

本文链接: https://www.lsjlt.com/news/29855.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • android自定义加减按钮
    本文实例为大家分享了android自定义加减按钮的具体代码,供大家参考,具体内容如下 1、定义两个shape: my_button_shape_normal.xml: <...
    99+
    2022-06-06
    按钮 Android
  • android UI绘制加减号按钮
    本文实例为大家分享了android UI绘制加减号按钮的具体代码,供大家参考,具体内容如下 在项目中我们常常会用到这么一个view。 这时候我们会选择使用两个图片来相互切换。其实,...
    99+
    2022-11-12
  • Android如何自定义按钮效果
    安卓原生的按钮是多么丑,效果是多么单调,大家也是有目共睹的。 要做一个APP少不了使用按钮,一个好看的按钮少不了好看的效果和外表,这次主要跟大家讲讲如何用drawable的x...
    99+
    2022-06-06
    自定义 按钮 Android
  • Android自定义悬浮按钮效果
    本文实例为大家分享了Android自定义悬浮按钮效果的具体代码,供大家参考,具体内容如下 以下:内容没有参考,写的也是一个比较简单的例子,主要就是应用切换前后台时会显示/隐藏悬浮窗。...
    99+
    2022-11-12
  • Android自定义View实现开关按钮
     前言:Android自定义View对于刚入门乃至工作几年的程序员来说都是非常恐惧的,但也是Android进阶学习的必经之路,平时项目中经常会有一些苛刻的需求,我们可...
    99+
    2022-06-06
    view 开关 按钮 Android
  • android UI如何绘制加减号按钮
    小编给大家分享一下android UI如何绘制加减号按钮,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!具体内容如下在项目中我们常常会用到这么一个view。这时候我...
    99+
    2023-06-20
  • Android自定义TimeButton实现倒计时按钮
    项目需要要实现一个带有倒计时功能的按钮,其效果类似发送验证码之后在按钮上显示倒计时并且将按钮设置为不可用的功能。 为了项目中其他地方能够调用到,便重写了一个继承于Button的...
    99+
    2022-06-06
    倒计时 按钮 Android
  • Android自定义实现开关按钮代码
    我们在应用中经常看到一些选择开关状态的配置文件,做项目的时候用的是android的Switch控件,但是感觉好丑的样子子 个人认为还是自定义的比较好,先上个效果图: 实...
    99+
    2022-06-06
    开关 按钮 Android
  • Android自定义开关按钮源码解析
    本文实例为大家分享了Android自定义开关的具体代码,供大家参考,具体内容如下 以 ToggleColorY 为例分析, ToggleImageY逻辑代码差不多 初始化参数 获取背...
    99+
    2022-11-12
  • Android怎么实现自定义开关按钮
    这篇文章主要讲解了“Android怎么实现自定义开关按钮”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Android怎么实现自定义开关按钮”吧!一、原理我们在界面的某一个区域里放置一个背景图...
    99+
    2023-06-30
  • android自定义按钮示例(重写imagebutton控件实现图片按钮)
    由于项目这种类型的图片按钮比较多,所以重写了ImageButton类。 代码如下:package me.henji.widget; import android.conten...
    99+
    2022-06-06
    示例 图片 按钮 Android
  • Fastadmin列表自定义按钮
    Fastadmin 列表自定义按钮 FastAdmin是一款基于ThinkPHP+Bootstrap的极速后台开发框架。 文章目录 前言一、单纯的调用接口按钮二、打开新的弹窗页面总结 前...
    99+
    2023-08-31
    php
  • Android 自定义EditText输入框带清空按钮
    Android 自定义EditText输入框带清空按钮当用户输入字符后 EditText会自动在输入框的内部右侧出现删除按钮重写EditText达到简化布局的效果效果图:继承EditTextpackage com.example.myedi...
    99+
    2023-05-31
    android edittext 清空按钮
  • Android自定义View实现拖动选择按钮
    本文为大家分享了Android实现拖动选择按钮的具体代码,供大家参考,具体内容如下 效果图 View代码 第一步:自定义属性 <declare-styleable ...
    99+
    2022-06-06
    view 选择 按钮 Android
  • Android 自定义返回按钮的实例详解
    Android 自定义返回按钮的实例详解程序中我们有时候想让放回按钮按照自己的需求调整页面而不是单纯的按照系统返回上一级,这个问题很简单,重写 onKeyDown 方法即可。下面方法,包含了 webview 中的返回上一页和普通 activ...
    99+
    2023-05-30
    android 自定义 返回按钮
  • Android如何自定义Switch开关按钮控件
    这篇“Android如何自定义Switch开关按钮控件”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Android如何自定义...
    99+
    2023-07-02
  • iOS自定义UITabBar中间按钮
    iOS自定义UITabBar中间按钮的具体代码,供大家参考,具体内容如下 自定义YLTbaBar继承自UITabBar git地址 YLTbaBar.h // // YLTab...
    99+
    2022-05-25
    iOS UITabBar 按钮
  • 自定义滑动按钮为例图文剖析Android自定义View绘制
    自定义View一直是横在Android开发者面前的一道坎。 一、View和ViewGroup的关系 从View和ViewGroup的关系来看,ViewGroup继承View。 ...
    99+
    2022-06-06
    自定义 view 按钮 Android
  • Android自定义View之圆形进度条式按钮
    介绍 今天上班的时候有个哥们问我怎么去实现一个按钮式的进度条,先来看看他需要实现的效果图。 和普通的圆形进度条类似,只是中间的地方有两个状态表示,未开始,暂停状态。而且他说圆...
    99+
    2022-06-06
    view 进度条 按钮 Android
  • vue自定义封装按钮组件
    vue按钮组件的自定义封装代码,供大家参考,具体内容如下 封装按钮组件 button.vue <template> <button class="butto...
    99+
    2022-11-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作