围绕其中心旋转imageview,而不切断其边缘



我已经自定义了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

  1. 必须检查图像视图的宽度和高度,如果高度>宽度,则在旋转时宽度必须等于高度并与高度相同。

  2. 使宽度和高度等于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();
}

最新更新