Dan*_*ail 4 android android-animation
我有一个观点,我想用手指移动它.我想得到xDelta和yDelta,只是翻译视图的矩阵(不是图像视图,任何视图,例如RelativeLayout).我想知道如何做到这一点:
我不能直接通过onDraw操纵任何视图的矩阵吗?我试过这样的事情:
@Override
protected void onDraw(Canvas canvas) {
if (getDx() != 0 && getDy() != 0) {
m = canvas.getMatrix();
m.postTranslate(dx, dy);
canvas.setMatrix(m);
}
super.onDraw(canvas);
}
Run Code Online (Sandbox Code Playgroud)
但似乎我做错了.
如果你想实现拖拽手势,那么你可以使用onTouchListener,并在其MotionEvent.ACTION_MOVE使用setPadding到该视图设置填充.
以下是示例代码:
case MotionEvent.ACTION_MOVE:
yourView.setPadding((int)event.getRawX(), (int)event.getRawY(), 0, 0);
Run Code Online (Sandbox Code Playgroud)
onTouchListener的示例: -
OnTouchListener drag= new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch(event.getAction() & MotionEvent.ACTION_MASK){
case MotionEvent.ACTION_DOWN:
break;
case MotionEvent.ACTION_POINTER_DOWN:
break;
case MotionEvent.ACTION_MOVE:
img.setPadding((int)event.getRawX(), (int)event.getRawY(), 0, 0);
break;
case MotionEvent.ACTION_UP:
break;
case MotionEvent.ACTION_POINTER_UP:
break;
} return true;
}
};
Run Code Online (Sandbox Code Playgroud)
您需要在运行时创建拖动图像,并且必须调整其位置.在此示例代码中,我没有调整位置,因此不会在触摸位置创建拖动的图像.您还需要考虑要拖动的图像的高度和宽度.
希望能帮助到你 !
| 归档时间: |
|
| 查看次数: |
4049 次 |
| 最近记录: |