2018年11月5日 星期一

在Android實現多個按鍵同時按壓

在Android實現多個按鍵同時按壓

前言

  由於繪圖引擎跨到Android時是全螢幕狀態,加上考慮接合Android的事件如Click、Touch...等,這時多了個麻煩,要如何輸入Debug的命令?在PC不論是Window或Linux都有Console視窗,但Android卻沒有,所以目前想到的是在螢幕的左上與右下新增隱形的按鈕,當同時壓下時會出現UI可以輸入命令。這次只記錄同時按壓的部分,在此做個紀錄。

內容

  先在Android studio裡開一個"Empty activity"的專案,開完後到Layout裡新增2個TextView,如下圖
在Layout新增按鍵
按鍵是用TextView,而不是Button,因為TextView當裡面的text是空值時就可以變成隱形的按鈕,範例為了演示而未清空。要注意圖中右邊的ID與對其都要調整,ID的部分為textView1與textView2,而對齊分別為左上與右下。

  調整為Layout後,接著就來偵測同按壓時,範例如下
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
import android.util.Log;
import java.util.Date;
public class MainActivity extends AppCompatActivity {
    private long time1=0;
    private long time2=0;
    private void CheckMultiClick(){
        long delTime=time1-time2;
        if(delTime < 0)
            delTime*=-1;
        //
        if(delTime<1000){
            Log.i("MultiClick","Double click!");
        }
    }
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        TextView tv1=(TextView)findViewById(R.id.textView1);
        TextView tv2=(TextView)findViewById(R.id.textView2);
        //
        tv1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                time1=(new Date() ).getTime();
                CheckMultiClick();
            }
        });
        //
        tv2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                time2=(new Date() ).getTime();
                CheckMultiClick();
            }
        });
    }
}

範例中,先分別為TextView上OnClick事件,可以看到當Clcik發生時會記錄"time",而這個"time"的意義可以參考Java日期時間(Date/Time),紀錄完後喚起"CheckMultiClick()",裡面很簡單,將兩個"time"的差做檢查是否小於1000,這裡的時間差代表兩個"time"差幾毫秒(milliSecs),所以1000代表差1秒就發生同時按壓。

參考資料

Java日期時間(Date/Time)

沒有留言:

張貼留言