1

私は次のクラスを持っています:

public class SplashActivity extends Activity implements OnKeyListener, OnTouchListener {
    private LinearLayout mLinearLayout;

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        mLinearLayout = new LinearLayout(this);
        mLinearLayout.addView(getBgImg());
        mLinearLayout.setOnKeyListener(this);
        mLinearLayout.setOnTouchListener(this);
        mLinearLayout.setFocusable(true);
        setContentView(mLinearLayout);
    }

    private ImageView getBgImg() {
        ImageView imgV = new ImageView(this);
        imgV.setImageResource(R.drawable.splash);
        imgV.setAdjustViewBounds(true);
        imgV.setLayoutParams(new Gallery.LayoutParams(
                LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
        return imgV;
    }

    @Override
    public boolean onKey(View v, int keyCode, KeyEvent event) {
        System.out.println("test2");
        return true;
    }

    @Override
    public boolean onTouch(View v, MotionEvent event) {
        System.out.println("test1");
        return true;
    }

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        switch (keyCode) {
        case KeyEvent.KEYCODE_S:
            // mDoSat = !mDoSat;
            return true;
        }
        return super.onKeyDown(keyCode, event);
    }
}

残念ながら、エミュレーターのボタンを押して画面をクリックしても、LogCat に「test1」または「test2」が出力されません。

4

5 に答える 5

2

を使用する必要がありますLog.d("TAG", "test1")。d はデバッグ用であるため、他のものを使用することもできます。Log.i 、これは LogCat に書き込まれます。

Logcat の詳細については、Android のドキュメントを参照してください。

于 2011-03-29T23:42:47.863 に答える
0

ときどき、logcat で何も表示されない場合があります。ただし、アプリケーションをデバッグで 1 回実行すると、通常、この問題は修正されます。

于 2011-03-30T00:57:05.137 に答える
0

View.onTouchEvent(MotionEvent ev) メソッド内で GestureDetector を利用する

何、あなたはサンプルコードが欲しいですか?ビューでドキュメントを読み、GestureDetector を使用して、onTouchEvent メソッドによって受信された MotionEvent を変換します... おい :)

于 2011-03-29T23:55:51.697 に答える
0

オーバーライド: アクティビティ内の onTouchEvent(...) public boolean onTouchEvent (MotionEvent イベント) 導入されたバージョン: API レベル 1 タッチ スクリーン イベントがその下のどのビューでも処理されなかった場合に呼び出されます。これは、ウィンドウの境界の外で発生したタッチ イベントを処理する場合に最も便利です。この場合、それを受け取るビューはありません。

ご覧のとおり、onTouchEvent は、タッチ スクリーン イベントがその下のどのビューでも処理されなかったときに呼び出されます。

したがって、onClickListener を使用し、onTouchEvent で false を返すことをお勧めします。

于 2011-05-03T16:49:14.027 に答える
0

子供が押されたときにタッチイベントがトリガーされるとは思いません。getBgImg() ビューにリスナーを追加する必要があると思います。

于 2011-03-30T17:03:51.660 に答える