iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Android实现中轴旋转特效 Android制作别样的图片浏览器
  • 786
分享到

Android实现中轴旋转特效 Android制作别样的图片浏览器

2023-05-30 17:05:17 786人浏览 八月长安
摘要

Android api Demos中有很多非常Nice的例子,这些例子的代码都写的很出色,如果大家把API Demos中的每个例子研究透了,那么恭喜你已经成为一个真正的Android高手了。这也算是给一些比较迷茫的Android开发者一个指

Android api Demos中有很多非常Nice的例子,这些例子的代码都写的很出色,如果大家把API Demos中的每个例子研究透了,那么恭喜你已经成为一个真正的Android高手了。这也算是给一些比较迷茫的Android开发者一个指出了一个提升自我能力的方向吧。API Demos中的例子众多,今天我们就来模仿其中一个3D变换的特效,来实现一种别样的图片浏览器。

既然是做中轴旋转的特效,那么肯定就要用到3D变换的功能。在Android中如果想要实现3D效果一般有两种选择,一是使用Open GL ES,二是使用Camera。Open GL ES使用起来太过复杂,一般是用于比较高级的3D特效或游戏,像比较简单的一些3D效果,使用Camera就足够了。

Camera中提供了三种旋转方法,分别是rotateX()、rotateY()和rotateZ,调用这三个方法,并传入相应的角度,就可以让视图围绕这三个轴进行旋转,而今天我们要做的中轴旋转效果其实就是让视图围绕Y轴进行旋转。使用Camera让视图进行旋转的示意图,如下所示:

Android实现中轴旋转特效 Android制作别样的图片浏览器

那我们就开始动手吧,首先创建一个Android项目,起名叫做RotatePicBrowserDemo,然后我们准备了几张图片,用于稍后在图片浏览器中进行浏览。

而API Demos中已经给我们提供了一个非常好用的3D旋转动画的工具类Rotate3dAnimation,这个工具类就是使用Camera来实现的,我们先将这个这个类复制到项目中来,代码如下所示:

 public class Rotate3dAnimation extends Animation {  private final float mFromDegrees;  private final float mToDegrees;  private final float mCenterX;  private final float mCenterY;  private final float mDepthZ;  private final boolean mReverse;  private Camera mCamera;     public Rotate3dAnimation(float fromDegrees, float toDegrees,    float centerX, float centerY, float depthZ, boolean reverse) {   mFromDegrees = fromDegrees;   mToDegrees = toDegrees;   mCenterX = centerX;   mCenterY = centerY;   mDepthZ = depthZ;   mReverse = reverse;  }   @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 fromDegrees = mFromDegrees;   float degrees = fromDegrees + ((mToDegrees - fromDegrees) * interpolatedTime);    final float centerX = mCenterX;   final float centerY = mCenterY;   final Camera camera = mCamera;    final Matrix matrix = t.getMatrix();    camera.save();   if (mReverse) {    camera.translate(0.0f, 0.0f, mDepthZ * interpolatedTime);   } else {    camera.translate(0.0f, 0.0f, mDepthZ * (1.0f - interpolatedTime));   }   camera.rotateY(degrees);   camera.getMatrix(matrix);   camera.restore();    matrix.preTranslate(-centerX, -centerY);   matrix.postTranslate(centerX, centerY);  } } 

--结束END--

本文标题: Android实现中轴旋转特效 Android制作别样的图片浏览器

本文链接: https://www.lsjlt.com/news/219926.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Android实现中轴旋转特效 Android制作别样的图片浏览器
    Android API Demos中有很多非常Nice的例子,这些例子的代码都写的很出色,如果大家把API Demos中的每个例子研究透了,那么恭喜你已经成为一个真正的Android高手了。这也算是给一些比较迷茫的Android开发者一个指...
    99+
    2023-05-30
  • Android简易图片浏览器的实现
    闲着没事,花了半个小时用这几天发布的部分内容来做一个Android简易图片浏览器小程序,代码设main_activity.xml设计首界面,设计三个按钮并赋予id,然后在MainAc...
    99+
    2024-04-02
  • 怎么在Android中实现一个网络图片浏览器
    这篇文章给大家介绍怎么在Android中实现一个网络图片浏览器,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。一、创建一个“网络图片浏览器的应用程序”,并设计用户交互界面,“网络图片浏览器”对应的布局文件(activit...
    99+
    2023-05-31
    android roi %d
  • Android中几种图片特效的处理的实现方法
     Android中几种图片特效的处理这里有放大缩小图片,获得圆角图片,获得带倒影图片的几种方法及实现代码,package com.android.tutor; import android.graphics.Bitmap; imp...
    99+
    2023-05-31
    android 图片特效 roi
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作