我正在测试多点触控
我希望在拖动视图时使用RotationY旋转视图。 一触即发,我用getRawX解决了它。 但是,当视图旋转时,我无法在多点触控中获得getRawX(其他pinters)值。 所以我使用了“MotionEvent.transForm(view.getMatrix())”。 这似乎有效。 但是,在RotationY(90)中存在坐标问题。
View single_touch, multi_touch;
float single_preX;
boolean isSingleStating = false;
float multi_preX1,multi_preX2;
boolean isMultiStating = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
single_touch = findViewById(R.id.single_touch);
single_touch.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch(event.getAction() & MotionEvent.ACTION_MASK) {
case MotionEvent.ACTION_MOVE:
if(isSingleStating){
float deltaX = event.getRawX() - single_preX;
single_touch.setRotationY(single_touch.getRotationY()+(int)(deltaX/3));
}
single_preX = event.getRawX();
isSingleStating = true;
break;
case MotionEvent.ACTION_UP:
single_preX = 0f;
isSingleStating = false;
}
return true;
}
});
multi_touch = findViewById(R.id.multi_touch);
multi_touch.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch(event.getAction() & MotionEvent.ACTION_MASK) {
case MotionEvent.ACTION_MOVE:
if(event.getPointerCount()!=2){
return false;
}
event.transform(multi_touch.getMatrix());
if(isMultiStating){
float deltaX = ((event.getX(0) - multi_preX1) + (event.getX(1) - multi_preX2))/2f;
multi_touch.setRotationY(multi_touch.getRotationY()+(int)(deltaX/3));
}
multi_preX1 = event.getX(0);
multi_preX2 = event.getX(1);
isMultiStating = true;
break;
case MotionEvent.ACTION_UP:
multi_preX1 = 0f;
multi_preX2 = 0f;
isMultiStating = false;
}
return true;
}
});
}
谁能解决这个问题?
如果您解决了这个问题,请与我联系
电子邮件:markjmind@gmail.com