2
私はTYPE_SYSTEM_OVERLAY
を作成しました。このオーバレイでservice
を使用して指/タッチイベントをキャプチャしたいと考えています。TYPE_SYSTEM_OVERLAY内のGestureDetector
オーバーレイは正常に動作しますが、問題は、GestureDetector
を組み込むときにタッチイベントをキャプチャできないことです。私は、画面をタップすると、誰もがどこ私に語った場合、トーストMSG「onDown」didntのショー..
は感謝します私はOverlayView
クラスのGestureDetector
外にもありません結果を実装しようとしている:(間違っていたしました。
public class NUSLogService extends IntentService {
OverlayView mView;
@Override
public void onCreate() {
super.onCreate();
final WindowManager.LayoutParams params = new WindowManager.LayoutParams(
WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY,
WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH,
PixelFormat.TRANSLUCENT);
params.gravity = Gravity.RIGHT | Gravity.BOTTOM;
params.setTitle("TouchLayer");
mView = new OverlayView(getApplicationContext());
final WindowManager wm = (WindowManager) getSystemService(WINDOW_SERVICE);
wm.addView(mView, params);
}
@Override
public void onDestroy() {
super.onDestroy();
if(mView != null)
{
((WindowManager) getSystemService(WINDOW_SERVICE)).removeView(mView);
mView = null;
}
}
//self-created overlay class
class OverlayView extends ViewGroup implements OnGestureListener{
private GestureDetector gestureScanner = new GestureDetector(this);
public OverlayView(Context context) {
super(context);
Toast.makeText(getContext(),"OverlayView", Toast.LENGTH_SHORT).show();
}
@Override
public boolean onTouchEvent(MotionEvent event) {
// return super.onTouchEvent(event);
return gestureScanner.onTouchEvent(event);
}
@Override
protected void onLayout(boolean arg0, int arg1, int arg2, int arg3, int arg4) {
// TODO Auto-generated method stub
}
@Override
public boolean onDown(MotionEvent e) {
Toast.makeText(getContext(),"onDown", Toast.LENGTH_SHORT).show();
return false;
}
}
お返事ありがとうございます。しかし、もし私がonTouchEvent'にトーストメッセージを入れたら、それは動作します。もし 'IntentService'を使うとそれは問題ですか? 私はアンドロイド2.2で実装していますので、今は大丈夫でしょうか? – star
@star: "IntentServiceを使用するとどうですか?"もちろんそれは重要です。追加した直後にビューを削除しています。 – CommonsWare
私はGestureDetectorを 'Service'を使って実装していますが、動作できません@ onTouchEvent()をオーバーライドしていますか?同じコードは 'Activity'を使って動作します..どのように私はサービスを使ってGestureDetectorを使うことができますか? – star