我使用了这段代码,但是当我在运行时点击活动时,它永远不会在OnTouch()方法中出现。有人可以指导我做错了吗?我是否需要设置此活动的内容?实际上我想要用户在执行期间触摸的活动坐标。
public class TouchTestAppActivity extends Activity implements OnTouchListener
{
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
//setContentView(R.layout.touch);
}
@Override
public boolean onTouch(View arg0, MotionEvent arg1)
{
// TODO Auto-generated method stub
String test = "hello";
}
}
答案 0 :(得分:12)
更新:
你需要这样做:
android:id="@+id/myView"
在你的onCreate()方法中,写下:
LinearView v= (LinearView) findViewById(R.id.myView);
v.setOnTouchListener(this);
假设您的根视图是LinearView
答案 1 :(得分:2)
你应该将onTouchListener发送到相关的GUI组件。
例如:
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.touch);
TextView someView = (TextView)findViewById(R.id.some_view_from_layout_xml);
someView.setOnTouchListener(this); // "this" is the activity which is also OnTouchListener
}
答案 2 :(得分:2)
您必须使用setOnTouchListener()
添加侦听器,否则将调用您的onTouch方法。任何监听器都适用于任何视图。所以你必须将监听器添加到视图中,例如button.setOnTouchListener(this);
LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View vi = inflater.inflate(R.layout.yourxml, null);
setCOntentView(vi);
vi.setOnTouchListener(this);
答案 3 :(得分:1)
在onCreate中,您需要设置内容视图(只是取消注释第二行应该可以工作),然后您需要将OnTouchListener(您的活动)设置为应用程序中视图的onTouchListener。
假设您的布局中有一个名为“MainView”的视图;它看起来像这样:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
View view = findViewById(R.id.MainView);
view.setOnTouchListener(this);
}
这篇文章有一个很好的例子: http://www.zdnet.com/blog/burnette/how-to-use-multi-touch-in-android-2-part-2-building-the-touch-example/1763