java - Android 围绕其中心旋转位图

标签 java android 3d android-canvas

我正在尝试使用 Canvas 和矩阵围绕 X、Y 和 Z 轴旋转常规位图。我可以使用 OpenGL,但我认为实现如此简单的效果未免有些矫枉过正,因为我很确定仅使用 Canvas 、位图和矩阵就可以做到这一点。

我尝试使用相机及其 rotateX、rotateY 和 rotateZ 方法,然后将该矩阵应用于 Canvas ,但出于某种原因,我可以让它围绕它的中心旋转位图!

我找不到改变旋转原点的方法,所以我决定平移相机,使其位于位图的中心,然后再将其平移回去,但无论我尝试什么,位图都不会被其中心平移... image

            camera.save();

            camera.translate(-(team.getWidth() / 2), (team.getHeight() / 2), 0f);

            rotateY += 1f;

            camera.rotateY(rotateY);

            camera.translate((team.getWidth() / 2), -(team.getHeight() / 2), 0f);

            camera.applyToCanvas(canvas);

            camera.restore();

            /* code that has nothing to do with this..(fading) */

            canvas.drawBitmap(team, null, rect, paint);

最佳答案

Rotate3DAnimation 就是您的答案。这是 class

还有教程: Tutorial 3D翻转

关于java - Android 围绕其中心旋转位图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12132762/

相关文章:

java - 当应用程序在后台时停止服务

安卓工作室 : how add tabs with ViewPager

java - 我可以在 Android 上使用 jmonkeyengine 吗?

math - 带四元数的非线性 slerp 动画

javascript - 如何检测被其他面孔隐藏的 3D 形状的面孔(从 Angular 看不到)?

java - 如何在 Tab 布局中设置 Tab 宽度?

java - 在 Java 中,如何将十进制数转换为基数 36?

java - 如何通过连接和基于行的限制(分页)在 hibernate 中获得不同的结果?

android - 移动网站在横向模式下的 Safari 上无法缩放

java - 无法启动 Activity : Attempt to invoke virtual method (NullPointerException)