У меня есть gridview, мне нужно что-то делать на motioneven.action_down и что-то делать для motioneven.action_up ... использование onclicklistener - это здорово, но не дает мне этой необходимой функциональности.
Есть ли способ легко вызвать вид сетки и получить выбранный элемент в сенсорном слое?У меня был ограниченный успех в создании собственной реализации.Трудно получить правильные значения x, y, потому что, если я назову ребенка, он даст мне x и y относительно ребенка, поэтому кнопка будет от 0,0 до 48,48, но она не скажет вам фактическое местоположение на экране.относительно вида сетки или самого экрана.
это то, что я делал, это частично работает до сих пор.
Grid.setOnTouchListener(new OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
int x = (int)event.getX();
int y = (int)event.getY();
int position = 0;
int childCount = Grid.getChildCount();
Message msg = new Message();
Rect ButtonRect = new Rect();
Grid.getChildAt(0).getDrawingRect(ButtonRect);
int InitialLeft = ButtonRect.left + 10;
ButtonRect.offsetTo(InitialLeft, ButtonRect.top);
//
while(position < childCount){
if(ButtonRect.contains(x,y)){break;}
if(ButtonRect.right + ButtonRect.width() > Grid.getWidth())
{ ButtonRect.offsetTo(InitialLeft, ButtonRect.bottom);}
position++;
ButtonRect.offsetTo(ButtonRect.right, ButtonRect.top);
}
msg.what = position;
msg.arg1 = ButtonRect.bottom;
msg.arg2 = y;
cHandler.sendMessage(msg);
}// end if action up
if (event.getAction() == MotionEvent.ACTION_UP) {
}
return false;
}
});