ユーザーが長押し以外の通常のタッチを妨げない、常に画面上の長押しを検出するための新しい透過的なアクティビティ/サービスを作成しようとしています。これまでのところ、私はこれを行うことができました:
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
this.getWindow().setFlags(
WindowManager.LayoutParams.TYPE_INPUT_METHOD
| WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL
| WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH,PixelFormat.TRANSPARENT);
//this.getWindow().setFormat(PixelFormat.TRANSLUCENT);
View myview = GestureOverlayView.inflate(getApplicationContext(),
R.layout.traslucent, null);
setContentView(myview);
myview.setOnTouchListener(this);
}
これはテスト用であり、実際の長押しではありません。
@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
Toast.makeText(this, "Click", Toast.LENGTH_LONG).show();
finish();
return true;
}
アクティビティの背後にあるタッチを検出することができましたが (希望どおり)、トーストが表示されませんでした。しかし、そこに置いた雲を除いて、画面は黒です。透明にしたいのですが、どうすればいいですか?