На экране элементы ImageView и SeekBar. одновременно нужно двигать оба элемента: менять значение seekbar и перемещать imageView.
на этом коде не срабатывает case MotionEvent.ACTION_MOVE:
(если код переместить на case MotionEvent.ACTION_DOWN, тогда работает только одно касание.)
OnTouchListener onTch = new OnTouchListener()
{
@Override
public boolean onTouch(View v, MotionEvent event)
{ // индекс касания
int pointerIndex = event.getActionIndex();
ClipData clipData = ClipData.newPlainText("", "");
View.DragShadowBuilder dsb = new View.DragShadowBuilder(imV);
// событие
int actionMask = event.getActionMasked();
switch (actionMask) {
case MotionEvent.ACTION_DOWN: // первое касание
//inTouch = true;
break;
case MotionEvent.ACTION_POINTER_DOWN: // последующие касания
break;
case MotionEvent.ACTION_UP: // прерывание последнего касания
//inTouch = false;
break;
case MotionEvent.ACTION_POINTER_UP: // прерывания касаний
// upPI = pointerIndex;
break;
case MotionEvent.ACTION_MOVE: // движение
Log.d(TAG, "intouch1="+inTouch);
if(v.getId()==R.id.imageView);
{
Log.d(TAG, "v.getId="+v.getId());
Log.d(TAG, "R.id.imageView="+R.id.imageView);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
Log.d(LOG_TAG, "startDragAndDrop1");
v.startDragAndDrop(clipData, dsb, v, 0);
Log.d(LOG_TAG, "startDragAndDrop2");
} else {
Log.d(LOG_TAG, "startDragAndDrop3");
v.startDrag(clipData, dsb, v, 0);
Log.d(LOG_TAG, "startDragAndDrop4");
}
v.setVisibility(View.INVISIBLE);
Log.d(LOG_TAG, "1234");
}
break;
}
return false;
}
};
seekbar:
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser)
{
String val_seekBar=String.valueOf(100+seekBar.getProgress());
mTextView.setText(val_seekBar);
}
Если поменять элементы imageView и seekBar на Button, тогда все работает прекрасно-можно одновременно нажать на оба кнопки:
@Override
public boolean onTouch(View v, MotionEvent event) {
// событие
int actionMask = event.getActionMasked();
// индекс касания
int pointerIndex = event.getActionIndex();
// число касаний
int pointerCount = event.getPointerCount();
switch (actionMask) {
case MotionEvent.ACTION_DOWN: // первое касание
inTouch = true;
case MotionEvent.ACTION_POINTER_DOWN: // последующие касания
downPI = pointerIndex;
break;
case MotionEvent.ACTION_UP: // прерывание последнего касания
inTouch = false;
tx1.setText("0");
tx2.setText("0");
tx3.setText("0");
case MotionEvent.ACTION_POINTER_UP: // прерывания касаний
upPI = pointerIndex;
break;
case MotionEvent.ACTION_MOVE: // движение
switch (v.getId()) {
case R.id.button:
tx1.setText("Нажата кнопка Button1");
break;
case R.id.button2:
tx2.setText("Нажата кнопка Button2");
break;
}
break;
}
return true;
}