我想根据用户的触摸在中心轴上循环旋转画布。
像旧电话拨号器一样。
我想根据中心
进行轮播但是
现在它的旋转基于左上角。所以我只能看到旋转图像的1/4。
我试过如下
onDraw(Canvas canvas){
canvas.save();
// do my rotation
canvas.rotate(rotation,0,0);
canvas.drawBitmap( ((BitmapDrawable)d).getBitmap(),0,0,p );
canvas.restore();
}
@Override
public boolean onTouchEvent(MotionEvent e) {
float x = e.getX();
float y = e.getY();
updateRotation(x,y);
mPreviousX = x;
mPreviousY = y;
invalidate();
}
private void updateRotation(float x, float y) {
double r = Math.atan2(x - centerX, centerY - y);
rotation = (int) Math.toDegrees(r);
}
答案 0 :(得分:2)
您需要将其添加到自定义视图方法
@Override
public void onSizeChanged (int w, int h, int oldw, int oldh){
super.onSizeChanged(w, h, oldw, oldh);
screenW = w;
screenH = h;
}
此方法将为您提供画布大小,然后使用
canvas.rotate(rotation,screenW / 2,screenH / 2);
答案 1 :(得分:2)
通过旋转点旋转api:
canvas.rotate(rotation, 0, centerY);
答案 2 :(得分:2)
您可以使用,而不是旋转画布 X = 0;
x=x+50;
yourview.setRotation(x);
在触摸事件中使用此功能 x = x-50用于旋转后缀
我认为这会有所帮助