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 用于调试,因此您也可以使用其他的 ex。Log.i ,这将被写入您的 LogCat。

有关 Logcat 的更多信息,请参阅Android 文档

于 2011-03-29T23:42:47.863 回答
0

我不相信按下孩子时会触发触摸事件。您需要将侦听器添加到我认为的 getBgImg() 视图中。

于 2011-03-30T17:03:51.660 回答
0

覆盖:onTouchEvent(...) in Activity public boolean onTouchEvent (MotionEvent event) 自:API 级别 1 当触摸屏事件未被其下的任何视图处理时调用。这对于处理在窗口边界之外发生的触摸事件最有用,因为没有视图可以接收它。

如您所见,当触摸屏事件未被其下的任何视图处理时,将调用 onTouchEvent。

所以,我建议使用 onClickListener,并在 onTouchEvent 中返回 false。

于 2011-05-03T16:49:14.027 回答
0

在 View.onTouchEvent(MotionEvent ev) 方法中使用 GestureDetector

什么,你想要示例代码???阅读文档,在您的视图中,使用 GestureDetector 来翻译 onTouchEvent 方法接收到的 MotionEvent ......嘘 :)

于 2011-03-29T23:55:51.697 回答
0

有时我会遇到 logcat 不显示任何内容的情况。但是,如果我在调试中运行该应用程序一次,它通常会解决此问题。

于 2011-03-30T00:57:05.137 回答