我已经自定义了imageview,但它只是旋转位图,而不是整个视图。我不想使用动画,因为我也在拖动imageview,所以移动动画imageivew的结果很奇怪,所以坚持onDraw/draw
,再加上覆盖draw并没有什么特别的。
@Override
protected void onDraw(Canvas canvas) {
// TODO Auto-generated method stub
canvas.save();
canvas.rotate(rotationAngle, rotationW, rotationH);
super.onDraw(canvas);
canvas.restore();
}
如何旋转整个视图而不仅仅是位图??
我没有得到这里提供的答案,但使用
android:clipChildren="false"
对于父ViewGroup
并且重写draw
而不是onDraw
对我起到了作用
有关更多信息,请参阅:旋转图像视图及其背景,无cropp
-
必须检查图像视图的宽度和高度,如果高度>宽度,则在旋转时宽度必须等于高度并与高度相同。
-
使宽度和高度等于fill_path,然后通过矩阵旋转/平移/缩放。
从API 11开始,每个视图都有以下方法可用:
.setRotation(float angle);
http://developer.android.com/reference/android/view/View.html#attr_android:rotation
在API 11之前,您可以在视图的主元素中添加一个旋转:
@Override
protected void onDraw(Canvas c) {
c.save();
c.rotate(...);
super.onDraw(c);
c.restore();
}