Wiki_Android_双击或多次点击事件

来源:互联网 发布:sql语句单引号转义 编辑:程序博客网 时间:2024/04/30 03:06

布局文件:

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical">    <Button        android:id="@+id/bt_double"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:text="响应双击事件" />    <Button        android:id="@+id/bt_mult"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:layout_gravity="center_vertical"        android:text="响应多次点击事件" /></LinearLayout>

Java代码:

package com.liangdianshui.test;import android.app.Activity;import android.os.Bundle;import android.os.SystemClock;import android.view.View;import android.widget.Button;import android.widget.Toast;/** * Created by 两点水 on 2015/8/23. */public class TestDoubleClickAndMultipleClick extends Activity {    private Button bt_double;    private Button bt_mult;    private long fist_click_time;   //记录第一次点击时的时间    long[] mHits = new long[3];    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_testdoubleclickandmultipleclick);        bt_double = (Button) findViewById(R.id.bt_double);        bt_mult = (Button) findViewById(R.id.bt_mult);        //响应双击的点击事件        bt_double.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                if (fist_click_time > 0) {                    long sencond_click_time = SystemClock.uptimeMillis();  //获取第二次点击的时间                    long dt = sencond_click_time - fist_click_time;                    if (dt < 500) {   //两次点击的按钮的时间间隔不超过500毫秒                        Toast.makeText(TestDoubleClickAndMultipleClick.this, "这是双击事件", Toast.LENGTH_LONG).show();                    } else {                        fist_click_time = 0;                    }                    return;                }                fist_click_time = SystemClock.uptimeMillis();//获取开机时CPU记录的时间                new Thread() {                    public void run() {                        try {                            Thread.sleep(500);                        } catch (InterruptedException e) {                            e.printStackTrace();                        }                        fist_click_time = 0;                    }                }.start();            }        });        //long[] mHits = new long[3]; 只要修改数组中的值就能实现多次点击事件,3就是三次点击,2就是两次点击        bt_mult.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                /**                 arraycopy(Object src,  拷贝的源数组                 int srcPos,            从源数组的那个位置开始拷贝                 Object dst,           目标数组                 int dstPos,           从目标数组的那个位子开始写数据                 int length);          拷贝的元素的个数                 */                System.arraycopy(mHits, 1, mHits, 0, mHits.length - 1);                mHits[mHits.length - 1] = SystemClock.uptimeMillis();                if (mHits[0] >= (SystemClock.uptimeMillis() - 500)) {                    Toast.makeText(TestDoubleClickAndMultipleClick.this, "3次点击事件", Toast.LENGTH_LONG).show();                }            }        });    }}

运行结果:

多次点击事件代码解释图片:



0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 空调余额下水管检查口按不上怎么办 风机盘管噪音大怎么办 混凝土水泥放少了怎么办 门式钢梁端板连接下料短啦怎么办? 灌桩导管堵了怎么办 公路车尾钩歪了怎么办 铃木羚羊车大灯不亮怎么办 玻璃瓶打碎了里面食物怎么办 玻璃门上轴坏了怎么办 配筋面积小了怎么办 ps大文件存不了怎么办 挑架钢丝绳拉环未预埋怎么办 出现偏拉的梁怎么办 尾插不好上锡怎么办 汽车玻璃上的焊点很难去除怎么办 拆苹果硬盘焊点掉了怎么办 玻璃被电焊滴到怎么办 gta5特质卡宾装了消音器怎么办 联想V形底座不好用怎么办 华为手环不计步怎么办 小米手环不计步怎么办 小米手环骑自行车不计步数怎么办 放逐之城着火了怎么办 城市天际线地价过低怎么办 放逐之城铁采完怎么办 车钥匙反锁车内怎么办 眼镜用热水洗了怎么办 眼镜放平后眼镜腿不平怎么办 瞄准镜十字歪了怎么办 瞄准镜调到底了怎么办 墨镜镜片刮花了怎么办 usb小风扇不转怎么办 金属眼镜压歪了怎么办 眼镜被电焊打了怎么办 电焊闪的眼睛疼怎么办 烧了电焊眼睛疼怎么办 用了电焊眼睛痛怎么办 烧电焊脸上红痛怎么办 眼睛让电焊晃了怎么办 眼被电焊打了怎么办 眼镜弹簧腿坏了怎么办