[英]Android layout touch issue
我正在構建測試鎖定屏幕應用程序。 我已經完成了設計工作,並且可以工作,但是無論您按什么位置,它都會按數字1的位置注冊,然后進行相對於此的設計。 這是主要設計:
現在,如果我單擊第一個位置,它會注冊一個,如果我拖動到2或3,依此類推。它會按照拖動的順序注冊這些數字。 但是,如果我要從位置2開始,它仍然會注冊為位置1,因此所有內容都會“正向移動”(不是設計,而是矩形的點)。
我怎樣才能解決這個問題? 無論點擊何處,我都會得到這個信息(例如我點擊了位置2):
但是我需要這個:
這是我的Java代碼,可以繪制矩形以及在觸摸矩形時:
public void onWindowFocusChanged (boolean hasFocus){
super.onWindowFocusChanged(hasFocus);
b1R = new Rect(b1.getLeft(), b1.getTop(), b1.getRight(), b1.getBottom());
b2R = new Rect(b2.getLeft(), b2.getTop(), b2.getRight(), b2.getBottom());
b3R = new Rect(b3.getLeft(), b3.getTop(), b3.getRight(), b3.getBottom());
b4R = new Rect(b4.getLeft(), b4.getTop()+120, b4.getRight(), b4.getBottom()+120);
b5R = new Rect(b5.getLeft(), b5.getTop()+120, b5.getRight(), b5.getBottom()+120);
b6R = new Rect(b6.getLeft(), b6.getTop()+120, b6.getRight(), b6.getBottom()+120);
b7R = new Rect(b7.getLeft(), b7.getTop()+240, b7.getRight(), b7.getBottom()+240);
b8R = new Rect(b8.getLeft(), b8.getTop()+240, b8.getRight(), b8.getBottom()+240);
b9R = new Rect(b9.getLeft(), b9.getTop()+240, b9.getRight(), b9.getBottom()+240);
}
public boolean onTouch(View arg0, MotionEvent arg1) {
// TODO Auto-generated method stub
try {
Thread.sleep(50);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
x = (int) arg1.getX();
y = (int) arg1.getY();
if(b1R.contains(x, y)){
arr.add("1");
Log.d("block", "1");
}
if(b4R.contains(x,y)){
arr.add("4");
Log.d("block", "4");
}
if(b7R.contains(x,y)){
arr.add("7");
Log.d("block", "7");
}
if(b2R.contains(x,y)){
arr.add("2");
Log.d("block", "2");
}
if(b8R.contains(x,y)){
arr.add("8");
Log.d("block", "8");
}
if(b5R.contains(x,y)){
arr.add("5");
Log.d("block", "5");
}
if(b3R.contains(x,y)){
arr.add("3");
Log.d("block", "3");
}
if(b6R.contains(x,y)){
arr.add("6");
Log.d("block", "6");
}
if(b9R.contains(x,y)){
arr.add("9");
Log.d("block", "9");
}
return false;
}
bXr.contains
處於該順序的原因是因為如果它是0-9
順序,它將無法正確注冊,因此會抓狂並注冊1、2和3(然后是4、5和6,然后是7、8 9)由於某種原因,它們都在同一塊中。
有任何想法嗎?
我不知道您使用什么技巧,但我敢打賭,您在Layout中有九個(Image)Views,並將它們的所有touchevent注冊到一個偵聽器中。 如果這樣做,則會發生您描述的效果,因為觸摸事件在觸摸視圖的子坐標系中。
您可以在所有內容上方放置一個透明視圖,並使用到達此處的觸摸事件。 然后它將起作用。 或者您將所有內容繪制在一個視圖中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.