Android滑动效果进阶篇(五) 3D旋转

前面介绍了利用Android自带的控件,进行滑动翻页制作效果,现在我们通过代码实现一些滑动翻页的动画效果。

Animation实现动画有两个方式:帧动画(frame-by-frame animation)和补间动画(tweened animation)

本示 例通过继承Animation自定义Rotate3D,实现3D翻页效果。效果图如下:

1、Rotate3D(Animation)

首先,自定义Animation的3D动画类Rotate3D

public class Rotate3D extends 

Animation {
    private float fromDegree;   // 旋转起始角度
    private float toDegree;     // 旋转终止角度
    private float mCenterX;     // 旋转中心x
    private float mCenterY;     // 旋转中心y
    private Camera mCamera;     

    public Rotate3D(float fromDegree, float toDegree, float centerX, float centerY) {
        this.fromDegree = fromDegree;
        this.toDegree = toDegree;
        this.mCenterX = centerX;
        this.mCenterY = centerY;     

    }     

    @Override
    public void initialize(int width, int height, int parentWidth, int parentHeight) {
        super.initialize(width, height, parentWidth, parentHeight);
        mCamera = new Camera();
    }     

    @Override
    protected void applyTransformation(float interpolatedTime, Transformation t) {
        final float FromDegree = fromDegree;
        float degrees = FromDegree + (toDegree - fromDegree) * interpolatedTime;    // 旋转角度(angle)
        final float centerX = mCenterX;
        final float centerY = mCenterY;
        final Matrix matrix = t.getMatrix();     

        if (degrees <= -76.0f) {
            degrees = -90.0f;
            mCamera.save();
            mCamera.rotateY(degrees);       // 旋转
            mCamera.getMatrix(matrix);
            mCamera.restore();
        } else if (degrees >= 76.0f) {
            degrees = 90.0f;
            mCamera.save();
            mCamera.rotateY(degrees);
            mCamera.getMatrix(matrix);
            mCamera.restore();
        } else {
            mCamera.save();
            mCamera.translate(0, 0, centerX);       // 位移x
            mCamera.rotateY(degrees);
            mCamera.translate(0, 0, -centerX);
            mCamera.getMatrix(matrix);
            mCamera.restore();
        }     

        matrix.preTranslate(-centerX, -centerY);
        matrix.postTranslate(centerX, centerY);
    }
}

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索private
, float
, animation
, 想进阶的android渣
, 滑动翻页
, applytransformation
, 自定义控件旋转android
, android matrix
, 3D旋转动画
, Camera旋转
, Android翻页效果
Android答题器翻页
android 旋转滑动、android 滑动旋转卡片、3d滑动旋转切换图片、unity 滑动旋转模型、unity 3d滑动手指旋转,以便于您获取更多的相关知识。

时间: 2024-10-28 05:13:36

Android滑动效果进阶篇(五) 3D旋转的相关文章

Android滑动效果进阶篇(六) 倒影效果

上篇介绍了使用Animation实现3D动画旋转翻页效果,现在介绍图片倒影实现,先看效果图 本示例主要通过自定义Gallery和ImageAdapter(继承自BaseAdapter)实现 1.倒影绘制 ImageAdapter继承自 BaseAdapter,详细实现可见 Android 滑动效果入门篇(二)-- Gallery 这里重点介绍倒影原理及实现 倒影原理: 倒影效果是主要由原图+间距+倒影三部分组成,高度大约为原图的3/2(原图为1.倒影为1/2) 原图,就是我们 看到了最开始的图片

Android 滑动效果进阶篇(六)—— 倒影效果

http://blog.csdn.net/sunboy_2050/article/details/7483169 上篇介绍了使用Animation实现3D动画旋转翻页效果,现在介绍图片倒影实现,先看效果图 本示例主要通过自定义Gallery和ImageAdapter(继承自BaseAdapter)实现 1.倒影绘制 ImageAdapter继承自BaseAdapter,详细实现可见 Android 滑动效果入门篇(二)-- Gallery 这里重点介绍倒影原理及实现 倒影原理: 倒影效果是主要由

Android 滑动效果进阶篇(五)—— 3D旋转

http://blog.csdn.net/sunboy_2050/article/details/7483166 前面介绍了利用Android自带的控件,进行滑动翻页制作效果,现在我们通过代码实现一些滑动翻页的动画效果. Animation实现动画有两个方式:帧动画(frame-by-frame animation)和补间动画(tweened animation) 本示例通过继承Animation自定义Rotate3D,实现3D翻页效果.效果图如下: 1.Rotate3D(Animation)

Android 滑动效果基础篇(三)—— Gallery仿图像集浏览

Android系统自带一个Gallery浏览图片的应用,通过手指拖动时能够非常流畅的显示图片,用户交互和体验都很好. 本示例就是通过Gallery和自定义的View,模仿实现一个仿Gallery图像集的图片浏览效果.效果图如下: 1.基本原理 在 Activity 中实现 OnGestureListener 的接口 onFling() 手势事件,通过自定义的 View 绘制draw() 图片 2.Activity Activity中,通过onTouchEvent() 注册 myGesture.o

Android滑动效果入门篇(二) Gallery

Gallery 是Android官方提供的一个View容器类,继承于AbsSpinner类,用于实现页面滑动效果. 从上面的继承关系可 以看出,AbsSpinner类继承自AdapterView,因此我们可以自定义实现Adapter,来填充Gallery容器的数据. 本示 例通过自己实现一个Adapter,来填充Gallery容器的图片数据,首先看效果: Activity import android.app.Activity; import android.os.Bundle; import

Android滑动效果基础篇(三) Gallery仿图像集浏览

Android系统自带一个Gallery浏览图片的应用,通过手指拖动时能够非常流畅的显示图片,用户交互和体验都很好. 本示例就是通过Gallery和自定义的View,模仿实现一个仿Gallery图像集的图片浏览效果.效果图如下: 1.基本原理 在 Activity 中实现 OnGestureListener 的接口 onFling() 手势事件,通过自定义的 View 绘制draw() 图片 2. Activity Activity中,通过onTouchEvent() 注册 myGesture.

Android 滑动效果入门篇(二)—— Gallery

http://blog.csdn.net/sunboy_2050/article/details/7442556 Gallery 是Android官方提供的一个View容器类,继承于AbsSpinner类,用于实现页面滑动效果. 从上面的继承关系可以看出,AbsSpinner类继承自AdapterView,因此我们可以自定义实现Adapter,来填充Gallery容器的数据. 本示例通过自己实现一个Adapter,来填充Gallery容器的图片数据,首先看效果: Activity [java] 

Android滑动效果入门篇(一) ViewFlipper

ViewFilpper 是Android官方提供的一个View容器类,继承于ViewAnimator类,用于实现页面切换,也可以设定时间间隔,让 它自动播放. 又ViewAnimator继承至于FrameLayout的,所以ViewFilpper的Layout里面可以放置多个View,继承关系如下: 本示例 通过ViewFlipper和GestureDetector.OnGestureListener实现自动播放和手势滑屏事件,先看效果: Activity import android.app.

Android 滑动效果基础篇(四)—— Gallery + GridView

http://blog.csdn.net/sunboy_2050/article/details/7467739 Android系统自带一个GridView和Gallery两个控件,GridView网格显示,Gallery单个浏览,两者结合起来可以真正实现Gallery浏览图片效果. 本示例通过GridView和Gallery两个控件,模仿实现一个完整的仿Gallery图像集的图片浏览效果.效果图如下: 1.GridView 首先,自定义一个GridImageAdapter图片适配器,用于填充G