文档章节

安卓3d动画的简单实现1

w
 wglla
发布于 2016/04/20 23:05
字数 302
阅读 39
收藏 0

Android中并没有提供直接做3D翻转的动画,所以关于3D翻转的动画效果需要我们自己实现。这里我列举一个最简单翻转动画的例子。

创建一个activity,布局就用最简单的,里面放一个textView,如下

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="match_parent"
   android:layout_height="match_parent">

   <TextView
       android:id="@+id/text"
       android:textSize="35dp"
       android:layout_centerInParent="true"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:text="@string/hello_world" />

</RelativeLayout>

 

在activity中定义一个叫Rotate3d的自定义动画继承animation。这样点击这个textview后,就会产生动画了。

代码非常简单,其中,自定义动画主要是实现applyTransformation方法,在动画时,每一次重绘图形的时候都要调用这个方法去计算这个视图的矩阵,也就是Matrix类。而Camera类负责的是计算视图在平面上的投影。

Mapublic class MainActivity extends Activity {
    private TextView text;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        text = (TextView ) findViewById(R.id.text);
        text.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                init();
            }
        });

    }

    private void init() {
        Rotate3d rotate = new Rotate3d();
        rotate.setDuration(1000);
        text.startAnimation(rotate);
    }

    class Rotate3d extends Animation {
        @Override
        protected void applyTransformation(float interpolatedTime, Transformation t) {
            Matrix matrix = t.getMatrix();
            Camera camera = new Camera();


            camera.rotateY(180 * interpolatedTime);
            camera.getMatrix(matrix);

        }
    }
}

 

© 著作权归作者所有

共有 人打赏支持
w
粉丝 2
博文 1
码字总数 302
作品 0
温州
程序员
私信 提问
Android Graphic : apk and Skia/OpenGL|ES

Android apk里面的画图分为2D和3D两种:2D是由 Skia 来实现的,也就是我们在框架图上看到的SGL,SGL也会调用部分opengl的内容来实现简单的3D效果;3D部分是由OpenGL|ES实现的,OpenGL|ES是O...

Jerikc
2014/05/27
0
0
Android 滑动效果进阶篇(五)—— 3D旋转

前面介绍了利用Android自带的控件,进行滑动翻页制作效果,现在我们通过代码实现一些滑动翻页的动画效果。 Animation实现动画有两个方式:帧动画(frame-by-frame animation)和补间动画(t...

长平狐
2013/01/06
924
0
Android Launcher开发之动态壁纸(LiveWallPaper)气泡流动效果

最近在研究Laucher应用,今天写了一下四组件中的壁纸(WallPaper),关于静态壁纸的实现,比较简单,在此就不再描述. 参考了系统源代码之后,我自己做了一个简单的动态壁纸:气泡流动效果. 图案...

长平狐
2012/09/03
960
1
Android游戏开发之Tween动画的实现(三十二)

Android游戏开发之Tween动画的实现 雨松MOMO原创文章如转载,请注明:转载自雨松MOMO的博客原文地址:http://blog.csdn.net/xys289187120/article/details/6747877 今天和大伙讨论一下Android...

彭博
2012/03/09
395
0
Android游戏开发之Tween动画的实现(三十二)

Android游戏开发之Tween动画的实现 雨松MOMO原创文章如转载,请注明:转载自雨松MOMO的博客原文地址:http://blog.csdn.net/xys289187120/article/details/6747877 今天和大伙讨论一下Android...

晨曦之光
2012/03/07
549
0

没有更多内容

加载失败,请刷新页面

加载更多

SpringBoot引入第三方jar包或本地jar包的处理方式

在开发过程中有时会用到maven仓库里没有的jar包或者本地的jar包,这时没办法通过pom直接引入,那么该怎么解决呢 一般有两种方法 - 第一种是将本地jar包安装在本地maven库 - 第二种是将本地j...

独钓渔
今天
2
0
五、MyBatis缓存

一、MyBatis缓存介绍 缓存的使用可以明显的加快访问数据速度,提升程序处理性能,生活和工作中,使用缓存的地方很多。在开发过程中,从前端-->后端-->数据库等都涉及到缓存。MyBatis作为数据...

yangjianzhou
今天
2
0
最近研究如何加速UI界面开发,有点感觉了

最近在开发JFinal学院的JBolt开发平台,后端没啥说的,做各种极简使用的封装,开发者上手直接使用。 JBolt开发平台包含常用的用户、角色、权限、字典、全局配置、缓存、增删改查完整模块、电...

山东-小木
今天
3
0
《月亮与六便士》的读后感作文3000字

《月亮与六便士》的读后感作文3000字: 看完英国作家威廉.萨默塞特.毛姆所著《月亮与六便士》(李继宏译),第一疑问就是全书即没提到“月亮”,也没提到“六便士”。那这书名又与内容有什么...

原创小博客
昨天
2
0
微信网页授权获取用户信息(ThinkPHP5)+ 微信发送客服消息(一)

以thinkphp5为实例,创建控制器 class Kf extends Controller { /** * [protected description]微信公众号appid * @var [type] */ protected $appid = "xxxxxxxxxxxxxxx"; /** * [protected......

半缘修道半缘君丶
昨天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部