我有以下课程:
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”。
答案 0 :(得分:2)
您应该使用Log.d("TAG", "test1")
,d用于调试,因此您也可以使用其他的ex。 Log.i,这将写入您的LogCat。
有关Logcat的详细信息,请参阅the Android documentation。
答案 1 :(得分:0)
在View.onTouchEvent(MotionEvent ev)方法中使用GestureDetector
什么,你想要样本代码???阅读文档,在你的视图中,使用GestureDetector翻译onTouchEvent方法收到的MotionEvent ...... 啧 :)
答案 2 :(得分:0)
有时我会遇到logcat没有显示任何内容的情况。但是,如果我在调试中运行一次应用程序,它通常会修复此问题。
答案 3 :(得分:0)
我不相信按下孩子时会触发触摸事件。您需要将侦听器添加到我认为的getBgImg()视图中。
答案 4 :(得分:0)
覆盖:Activity中的onTouchEvent(...) public boolean onTouchEvent(MotionEvent事件) 自:API级别1 当触摸屏事件未被其下的任何视图处理时调用。这对于处理窗口边界外发生的触摸事件非常有用,因为没有视图可以接收它。
如您所见,当触摸屏事件未被其下的任何视图处理时,将调用onTouchEvent。
所以,我建议使用onClickListener,并在onTouchEvent中返回false。
答案 5 :(得分:-1)
此外,logcat还有很多东西,并且不允许非常好的过滤。我设法让log4j在android上工作,它适用于电锯。这允许您记录长日志,而不是在需要时崩溃。