【问题标题】:How to change the axis of rotation如何改变旋转轴
【发布时间】:2013-06-27 11:37:00
【问题描述】:

我想在 Y 轴左右 45 度的轴上翻转图像视图。如何获得这个新的旋转轴以及如何将其应用于图像视图。链接在这里 我想要达到的目标。

https://www.youtube.com/watch?v=hDlp-aWq-uM&feature=youtu.be

谢谢!

【问题讨论】:

    标签: android android-animation android-canvas android-ui android-custom-view


    【解决方案1】:

    使用Camera 实现类似View.setRotationY 的3D 旋转。

    camera.save();
    camera.rotateY(rotate);
    camera.getMatrix(matrix);
    matrix.preTranslate(-left, 0);
    matrix.postTranslate(left, 0);
    camera.restore();
    
    canvas.save();
    canvas.concat(matrix);
    
    canvas.drawBitmap(...);
    
    canvas.restore();
    

    我的个人项目的结果可以在下面查看。

    【讨论】:

      【解决方案2】:

      您可以使用 Matrix 类来实现这一点

      Matrix mtrx=new Matrix();
      imageView.setScaleType(ScaleType.MATRIX);  
      mtrx.postRotate((float) angle, pivX, pivY);
      imageView.setImageMatrix(mtrx);
      

      【讨论】:

      • 我试过这个但不能用这个改变轴,你能帮我看看角度,pivX,pivY吗?
      【解决方案3】:

      你应该重写draw方法或通过扩展ImageView创建你自己的图像视图类,然后旋转轴在draw()中旋转画布,对于翻转你可以使用可用于API 11+的objectanimator,以及pre-11 你可以使用位于以下 url 的 Nineoldandroids.com 库

      http://nineoldandroids.com/

      【讨论】:

      • 感谢 Onur 的回复,但旋转画布不会改变旋转轴,只会旋转视图。
      • 旋转画布,绘制动画然后恢复画布,这样就可以了:)
      猜你喜欢
      • 2018-03-28
      • 2019-01-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-09
      • 2015-05-11
      相关资源
      最近更新 更多