Я должен быть в состоянии обнаружить нажатие и отпускание кнопки, но у меня также должна быть позиция элемента в виде сетки, к которой происходит прикосновение.У меня в основном есть gridview, который является элементом управления d-pad.Поэтому, когда пользователь нажал на него, мне нужно, чтобы он отправил «go», а когда он отпустит, мне нужно, чтобы он послал «stop»
с этим ниже, нет никакого способа узнать, когда он отрывает кнопкучто я знаю!).
Grid.setAdapter(new ImageAdapter(c, mThumbIds));
Grid.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
Message msg = new Message();
msg.what = what;
msg.arg1 = position;
cHandler.sendMessage(msg);
}
});
но если я использую список касаний, я не могу сказать, какой элемент в сетке они выбрали
Grid.setOnTouchListener(new OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_UP) {
Message msg = new Message();
msg.what = 255;
msg.arg1 = 255;
cHandler.sendMessage(msg);
}
if (event.getAction() == MotionEvent.ACTION_DOWN) {
Message msg = new Message();
msg.what = what;
msg.arg1 = 55;
cHandler.sendMessage(msg);
}
return false;
}
});
ваше время очень ценится !!
/// ну, это то, что я пытался сделать, я никогда не смогу получить границы различных частей вида сетки.R.getX и т. Д. Всегда возвращает 0. Если у меня есть идентификатор ресурса, как я могу вытянуть его прямоугольник?
Grid.setOnTouchListener(new OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_UP) {
Rect r = new Rect();
ImageView imageView = new ImageView(c);
for(int n: mThumbIds){
imageView.setImageResource(n);
r = imageView.getDrawable().getBounds();
if(r.contains((int)event.getX(),(int)event.getY()))
{
Message msg = new Message();
msg.what = what;
msg.arg1 = n;
msg.arg2 = (int)event.getRawY();
cHandler.sendMessage(msg);
break;
}else{
Message msg = new Message();
msg.what = what;
msg.arg1 = r.centerX();
msg.arg2 = n;
cHandler.sendMessage(msg);
}
}// end for
}// end if action up