我想编写一个程序,在单个活动中按特定顺序处理触摸事件。
例如: 显示了一些视图。 如果用户没有点击第一个视图,我将显示另一个活动。 但是,如果用户点击它,我想检测第二个,然后是第三个,等等。
如何处理多个触控事件?
我想我需要一个onTouchEvent
方法,在第一次点击时我需要一个if-else语句,但我不知道如何监控后续的触摸事件。
答案 0 :(得分:4)
它可能对你有帮助。我总是这样做
public void onClick(View v){
if(v==imageView1){
//do ssomething
}
if(v== imageView2){
//do something
}
if(v==imageView3){
//do something
}
像这样你可以根据不同的按钮或图像查看
答案 1 :(得分:0)
我假设图片是主视图中的ImageView。为什么不在每个视图中添加touchlisteners?
答案 2 :(得分:0)
仅在单击第n个视图时为n + 1视图设置onClickListener
。
喜欢这个
view1.setOnClickListener(new OnClickListener() {
void onClick(View v) {
view2.setOnclickListner(new Onclicklistener() {
void onClick(View v) {
// add further view's click listeners else do what ever if this
// is the last view.
}
});
}
});
不是一个优雅的解决方案,但应该工作恕我直言。
答案 3 :(得分:0)
从您的问题陈述中,您似乎有一个有序的视图列表,每个视图都应该有一个触摸侦听器,但第二个视图的侦听器不应该触发,除非第一个视图的侦听器先触发。
这可以通过在您的活动中保留一个计数器来轻松完成:
private int highestIndexTapped
。点击视图时,请检查其索引是否为index == highestIndexTapped + 1
。
如果是,请将highestIndexTapped
增加1并触发侦听器。否则要么吃掉触摸事件,要么将其传递给管道的下一部分。