0

私は自分のサービスクラスに実装ontouchlistenerし、うまく機能しているタッチイベントを取得しようとしていますがgingerbread、それ以上では機能していませんicreamsandwich。私はこれを解決するために多くのことを試みていますが、stackoverflowで多くのドキュメントを読んだ後でも解決策が得られません、

ここにコードがあります..この問題を解決するのを手伝ってください。onCreate私が定義した方法でImageButton

ImageButton imageButton=new ImageButton(this);
imageButton.setBackgroundColor(Color.TRANSPARENT);
imageButton.setOnTouchListener(this);
WindowManager.LayoutParams layoutParams=new WindowManager.LayoutParams(
            WindowManager.LayoutParams.WRAP_CONTENT,
            WindowManager.LayoutParams.WRAP_CONTENT,
            WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY, 
            WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH, 
            PixelFormat.TRANSLUCENT);
WindowManager windowManager=(WindowManager)getSystemService(WINDOW_SERVICE);
windowManager.addView(imageButton, layoutParams);`

@Override 
public boolean onTouch(View arg0, MotionEvent arg1) {
     Toast.makeText(getApplicationContext(), "Double touched "+DoubleTouch, 1000).show();
     return true;
}
4

3 に答える 3

0

なぜfalseを返すのですか?タッチリスナーでtrueを返す必要があります!! 申し訳ありませんが、タッチリスナーで何をしたいのか教えていただけますか?私があなたのコードで見ることができるように、あなたはトーストだけを示しています。クリックで実行したい場合。タッチリスナーの代わりにOnClickListenerを使用してください!

于 2013-02-07T09:03:58.437 に答える
0

タッチ イベントが発生し、結果を返したいことを示すには、onTouch で true を返す必要があります。

これを参照してください: Android: ダブルタップを検出するには? およびAndroid のマルチタッチとダブルタップが連携してイメージビューに対応

于 2013-02-07T08:48:05.623 に答える
0

あなたのコメントへの応答。ダブルクリック以上の代わりに OnClickListener を使用できます。

ここに例があります: 最初にBoolean変数を作成し、それをに割り当てますtrue

boolean lightit = true;

次に、ボタン クリックのメソッドを作成します。私の例では、初めてボタンの画像をクリックすると、別の画像に変わります。ボタンをもう一度クリックすると、元の画像に戻ります。ここで私の例に従ってください。

        private void showHide1() {
    if (lightit) {
        if (null != bmp) {
            rotator = null;
            styleId = StyleKosh.bright;
            change = StyleKosh.changeStyle(bmp, styleId);
            view.setImageBitmap(change);
            fix.setImageResource(R.drawable.lighton);
        } else if (null == bmp) {
            final Toast tst = Toast.makeText(getApplication(),
                    "Please Select An Image First", Toast.LENGTH_SHORT);
            tst.setGravity(Gravity.CENTER, 0, 0);
            tst.show();
        }
    } else {
        rotator = null;
        change = null;
        fix.setImageResource(R.drawable.light);
        view.setImageBitmap(bmp);
    }
    lightit = !lightit;
}

次に、ボタンクリックリスナーにこれを追加します。showHide(); これは、ボタンまたはイメージビューのクリックを処理する方法です。複数回クリックする場合は、 if else を追加するだけです。同じ方法を使用して statusBar をフルスクリーンで表示および非表示にしていますが、 OnTouchListener の代わりに Gesture を使用していることを確認してください。ジェスチャの使い方を知りたい場合は教えてください。

于 2013-02-07T10:42:06.317 に答える