请问 android下的硬键盘 ,现在要实现1键多值。比如在1秒钟内,按1下输出A,连按两下输出B,连按3下输出C。 现在是通过 onKeyDown,能够实现按1个键输入A
------解决方案--------------------
- Java code
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); }
------解决方案--------------------
给你说原理把 就是点击一下获取当前时间,再下一次点击的时候判断一下和前一次点击的时间相差多少秒,相差不足1s就变换。。。。如果相差大于1s就从第一个字母开始
------解决方案--------------------
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;
}
}
}