android快速点击分析

android快速点击分析

在这里插入图片描述

要点思路:

1 一般我们会这样考虑,当两次按按钮的时间小于1s为快速点击,那么需要记住两次点击的时间间隔

2 为了方便记住点击按钮的时间,我们需要记住每次按钮点击的时间 。
核心

  正确写法
  long currentTime = System.currentTimeMillis();
  lastClickTime2 = currentTime;
  
  错误写法
  lastClickTime2 =System.currentTimeMillis();

错误写法的原因是: 最后点击的时间不是按钮刚开始按下去的时间,而是代码执行完之后的时间,保存的时间不准确。

代码分析
测试快速点击button分析了快速点击的形成过程,当两次点击时间间隔小于1会出现快速点击

不允许快速点击button:通过对if条件不允许出现快速点击

不允许快速点击测试button : 对快速点击做了一个封装

package com.example.zz.myapplication;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

import java.text.DecimalFormat;

public class MainActivity extends AppCompatActivity {

    private TextView tvResult;
    private TextView tvResult2;
    private TextView tvResult3;
    private TextView tvClickNum;
    private Button btnFastClick;
    private Button fastClickUtils;
    private long lastClickTime;
    private int clickNums;


    private long lastClickTime2;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        btnFastClick = findViewById(R.id.btnFastClick);
        fastClickUtils = findViewById(R.id.fastClickUtils);
        tvResult = findViewById(R.id.tvResult);
        tvResult2 = findViewById(R.id.tvResult2);
        tvResult3 = findViewById(R.id.tvResult3);
        tvClickNum = findViewById(R.id.tvClickNum);
        btnFastClick.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                long currentTime = System.currentTimeMillis();
                if(System.currentTimeMillis() - lastClickTime<1000){
                    clickNums ++;
                 float time =(float) (System.currentTimeMillis() - lastClickTime)/1000;
                    DecimalFormat df = new DecimalFormat("0.00");//格式化小数
                    String s = df.format(time);
                    tvResult.setText("快速点击了,时间间隔:"+s);
                    tvClickNum.setText("快速点击次数:"+clickNums);
                }else {
                    tvResult.setText("非快速点击");
                    tvClickNum.setText("");
                    clickNums =0;
                }

                lastClickTime = currentTime;

            }

        });



        fastClickUtils.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
               if(FastClickUtils.isAllowClick()){
                   tvResult3.setText("允许被点击");
               }else {
                   tvResult3.setText("快速点击,不被允许被点击");
               }
            }
        });
    }



    public void btnNoFastClickTest(View view){
        long currentTime = System.currentTimeMillis();
        if(System.currentTimeMillis()-lastClickTime2>1000){
            //正常速度点击
            tvResult2.setText("正常速度点击");
        }else {
            //快速点击
            tvResult2.setText("快速点击");
        }
        lastClickTime2 = currentTime;
    }


}

对快速点击封装

package com.example.zz.myapplication;

import android.view.View;

public class FastClickUtils {

    private static  long lastClickTime2;
    private  static int spaceTime = 1000;//时间间隔
    public static Boolean isFastClick(){
        long currentTime = System.currentTimeMillis();
        boolean isFastClick;//是否允许点击
        if(currentTime-lastClickTime2>spaceTime){
            isFastClick= false;
            //正常速度点击
        }else {
            isFastClick= true;
            //快速点击
        }
        lastClickTime2 = currentTime;
        return isFastClick;
    }


    public static Boolean isAllowClick(){
        long currentTime = System.currentTimeMillis();
        boolean allowClick;//是否允许点击
        if(currentTime-lastClickTime2>spaceTime){
            allowClick= true;
            //正常速度点击
        }else {
            allowClick= false;
            //快速点击
        }
        lastClickTime2 = currentTime;
        return allowClick;
    }

}

demo下载
https://download.csdn.net/download/qq_26296197/10838697

发布了277 篇原创文章 · 获赞 84 · 访问量 38万+

猜你喜欢

转载自blog.csdn.net/qq_26296197/article/details/84930360