请问 android下的硬键盘 ,现在要实现1键多值。比如在1秒钟内,按1下输出A,连按两下输出B,连按3下输出C。 现在是通过 onKeyDown,能够实现按1个键输入A

解决方案 »

  1.   


    long clickTime;
    Calendar cal; @Override
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    cal = Calendar.getInstance();
    clickTime = cal.getTimeInMillis();

    Button button = new Button(this);
    button.setOnClickListener(new OnClickListener() { @Override
    public void onClick(View v) {
    long now =  Calendar.getInstance().getTimeInMillis();
    System.out.println(now+","+clickTime);
    if (now - clickTime <= 1000) {
    //自行处理
    System.out.println("1秒内");
    }
    clickTime=now;
    }
    });
    setContentView(button);
    }
      

  2.   

    android对点击事件的处理思路是用时间长短做上报的,LZ可以下点源码看看!
      

  3.   

    package com.aAAaa;import java.util.Timer;
    import java.util.TimerTask;import android.app.Activity;
    import android.content.Context;
    import android.graphics.Color;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.GestureDetector;
    import android.view.GestureDetector.OnGestureListener;
    import android.view.MotionEvent;
    import android.view.View;
    import android.view.View.OnTouchListener;
    import android.widget.Button;
    import android.widget.LinearLayout;
    import android.widget.TextView;
    import android.widget.Toast;public class AAaa extends Activity{
    private Button leftUp;
    private ButtonOnTouchListener listener = new ButtonOnTouchListener();
    // 计算点击的次数
    private int count = 0;
    // 第一次点击的时间 long型
    private long firstClick;
    // 最后一次点击的时间
    private long lastClick =0;
    // 第一次点击的button的id
    // 调试环境是否开启
    private Timer timer ;
    private TimerTask task;
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    leftUp = (Button) findViewById(R.id.leftUp);
    leftUp.setOnTouchListener(listener); }
    private class ButtonOnTouchListener implements OnTouchListener {
    public boolean onTouch(View v, MotionEvent event) {
    if (event.getAction() == MotionEvent.ACTION_DOWN) {
    count++;
    Log.v("count", count+"");
    if (count == 1) {
    firstClick = System.currentTimeMillis();
    timer = new Timer();
    task = new TimerTask() {
    public void run() {
    if(lastClick==0){
    Log.v("danji", "danji");
    clear();
    }
    }
    };
    timer.schedule(task,300);
    } else if (count == 2) {
    timer.cancel();
    lastClick = System.currentTimeMillis();
    if (lastClick - firstClick < 300) {
    Log.v("shuangji", "shuangji");
    }
    clear();
    }
    }
    return false;
    }
    // 清空状态
    private void clear() {
    count = 0;
    firstClick = 0;
    lastClick = 0;
    }
    }
    }