是的,Android的KeyEvent可以檢測長按事件。在Android中,長按事件通常是通過觸摸事件(TouchEvent)來實現的,而不是通過KeyEvent。你可以重寫onTouchEvent()
方法來處理長按事件。
以下是一個簡單的示例,展示了如何檢測長按事件:
public class MainActivity extends AppCompatActivity {
private static final int LONG_PRESS_TIME = 500; // 長按時間,單位毫秒
private View longPressView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
longPressView = findViewById(R.id.long_press_view);
longPressView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
// 開始計時
v.setTag(true);
v.postDelayed(new Runnable() {
@Override
public void run() {
// 長按結束,執行相應操作
if (v.getTag() != null) {
onLongPress(v);
v.setTag(false);
}
}
}, LONG_PRESS_TIME);
break;
case MotionEvent.ACTION_UP:
case MotionEvent.ACTION_CANCEL:
// 長按結束,取消計時
if (v.getTag() != null) {
v.setTag(false);
}
break;
}
return true;
}
});
}
private void onLongPress(View view) {
Toast.makeText(this, "長按事件觸發", Toast.LENGTH_SHORT).show();
}
}
在這個示例中,我們為longPressView
設置了一個OnTouchListener
,當用戶按下并持續一段時間(例如500毫秒)時,會觸發長按事件。