Android 上片段的立方体翻转动画

2024-03-21

我想实现一个基本的 3d 立方体,并在 Touch 上水平或垂直旋转 90 度。我想要实现的是类似于下图所示的内容。

我已经实现了这个使用ViewPager's ViewTransformer但我对结果并不满意。动画不是很流畅,而且我无法翻转它,我必须在屏幕的整个宽度上拖动手指来旋转立方体。 我想翻转它,但无法实现。

我用过BTGridPager-Android https://github.com/btate/BTGridPager-Android达到上述目的。但正如前面提到的,这并不是很有说服力。

这是我的 ViewTransformer 代码:

    public abstract class ABaseTransformer implements PageTransformer {
 @Override
 public void transformPage(View page, float position) {
  onPreTransform(page, position);
  onTransform(page, position);
  onPostTransform(page, position);
 }
protected void onPreTransform(View page, float position) {
  final float width = page.getWidth();

  page.setRotationX(0);
  page.setRotationY(0);
  page.setRotation(0);
  page.setScaleX(1);
  page.setScaleY(1);
  page.setPivotX(0);
  page.setPivotY(0);
  page.setTranslationY(0);
  page.setTranslationX(isPagingEnabled() ? 0f : -width * position);

  if (hideOffscreenPages()) {
   page.setAlpha(position <= -1f || position >= 1f ? 0f : 1f);
  } else {
   page.setAlpha(1f);
  }
 }


public class HorizontalCubeOutTransformer extends ABaseTransformer {

 @Override
 protected void onTransform(View view, float position) {

  final float normalizedposition = Math.abs(1 - Math.abs(position));

  view.setPivotX(position < 0f ? view.getWidth() : 0f);
  view.setPivotY(view.getHeight() * 0.5f);
  view.setRotationY(90f * position);
  view.setAlpha(normalizedposition);
 }

 @Override
 public boolean isPagingEnabled() {
  return true;
 }

}



public class VerticalCubeOutTransformer extends ABaseTransformer {


 @Override
 protected void onTransform(View view, float position) {

  final float normalizedposition = Math.abs(Math.abs(position) - 1);
  view.setAlpha(normalizedposition);
  view.setTranslationX(view.getWidth() * -position);
  view.setTranslationY(position * view.getHeight());

  view.setPivotX(view.getWidth() * 0.5f);
  view.setPivotY(position < 0f ? view.getHeight() : 0f);
  view.setRotationX(90f * -position);

 }

 @Override
 public boolean isPagingEnabled() {
  return false;
 }
}

我想知道的是如何在翻转手势上旋转立方体。 注意:我想在没有 OpenGL 或 SurfaceView 的情况下实现这一点。

UPDATE:到目前为止,我已经使用fragmenttransaction Extended实现了立方体翻转,但现在我遇到了一些其他问题,因为一旦翻转开始,当前片段就会消失


您可以使用 FragmentTransaction 扩展

FragmentTransaction 扩展 https://github.com/DesarrolloAntonio/FragmentTransactionExtended

它提供片段之间所有类型的动画

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android 上片段的立方体翻转动画 的相关文章

  • 在自定义对象中创建时粘性服务不会重新启动

    我有一个具有绑定服务的单例对象 我希望它重新启动 当我从启动器启动应用程序时 单例对象将初始化并绑定到这个现有的服务实例 以下是在单例中创建和绑定服务的代码 public class MyState private static MySta
  • Phonegap - 如何将.txt文件保存在Android手机的根目录中

    我正在尝试使用phonegap 将 txt 文件保存在Android 手机的根目录中 我已经安装了这些插件 cordova plugin file 和 cordova plugin file transfer 在 config xml 文件
  • 共同的偏好不断消失

    我正在使用共享首选项来存储我的应用程序的登录凭据 除了一个用户之外 一切正常 一段时间后 共享偏好似乎会以某种方式重置或清除 我已针对该用户调整了我的应用程序 使其不再清除他的共享偏好设置 这样我就可以确定这不是我的应用程序的错 但即使在这
  • KitKat(及更低版本)设备上的 Android Material Design

    我将在我们学校开发一个 Android 应用程序作为一个项目 我想使用 Google 的新 Material Design 但我知道它仅适用于 Android L 设备 Jack Underwood 最近发布了名为 Today Calend
  • 无法在自定义 AOSP 上安装 Google Play 中的某些应用程序:项目不可用。理由:9

    我在尝试从 Google Play 安装某些应用程序时收到以下错误 LibraryUtils isAvailable not available restriction 9 DocUtils getAvailabilityRestricti
  • 更新到材质 1.2.0 后,材质按钮上缺少圆角半径属性

    这是我的材质按钮代码
  • 从 Firebase 数据库填充微调器

    public class MainActivity extends AppCompatActivity DatabaseReference reference Spinner areaSpinner ArrayList
  • 应用程序未安装在 Android 模拟器上

    我正在 android Geocoder 中开发一个应用程序 当我运行该应用程序时 它会显示 2011 01 11 11 08 13 GeoTourProject 自动目标模式 使用现有模拟器 emulator 5554 运行兼容的 AVD
  • MediaCodec 创建输入表面

    我想使用 MediaCodec 将 Surface 编码为 H 264 使用 API 18 有一种方法可以通过调用 createInputSurface 然后在该表面上绘图来对表面中的内容进行编码 我在 createInputSurface
  • 从 android 简单上传到 S3

    我在网上搜索了从 android 上传简单文件到 s3 的方法 但找不到任何有效的方法 我认为这是因为缺乏具体步骤 1 https mobile awsblog com post Tx1V588RKX5XPQB TransferManage
  • 使用 Matrix.setPolyToPoly 选择位图上具有 4 个点的区域

    我正在 Android 上使用位图 在使用 4 个点选择位图上的区域时遇到问题 并非所有 4 点组都适合我 在某些情况下 结果只是一个空白位图 而不是裁剪后的位图 如图所示 并且 logcat 中没有任何错误 甚至是内存错误 这是我用来进行
  • 如何创建像谷歌位置历史记录一样的Android时间轴视图?

    我想设计像谷歌位置历史这样的用户界面 我必须为我正在使用的应用程序复制此 UIRecyclerView 每行都是水平的LinearLayout其中包含右侧的图标 线条和视图 该线是一个FrameLayout具有圆形背景和半透明圆圈Views
  • 下载后从谷歌照片库检索图像

    我正在发起从图库中获取照片的意图 当我在图库中使用 Nexus 谷歌照片应用程序时 一切正常 但如果图像不在手机上 在 Google Photos 在线服务上 它会为我下载 选择图像后 我将图像发送到另一个活动进行裁剪 但在下载的情况下 发
  • 将 JSON 参数从 java 发布到 sinatra 服务

    我有一个 Android 应用程序发布到我的 sinatra 服务 早些时候 我无法读取 sinatra 服务上的参数 但是 在我将内容类型设置为 x www form urlencoded 之后 我能够看到参数 但不完全是我想要的 我在
  • 当手机旋转(方向改变)时如何最好地重新创建标记/折线

    背景 开发一个使用 Android Google Map v2 的本机 Android 应用程序 使用android support v4 app FragmentActivity 在 Android v2 2 上运行 客观的 在更改手机方
  • 用于推送通知的设备令牌

    我正在实施推送通知服务 我需要创建一个数据库来存储 4 个移动平台的所有设备令牌 我想根据他们的平台 iOS Android BlackBerry WP7 来组织它们 但是有什么方法可以区分平台 这样如果我只想向 Android 用户发送消
  • 在 Android 中,如何将字符串从 Activity 传递到 Service?

    任何人都可以告诉如何将字符串或整数从活动传递到服务 我试图传递一个整数 setpossition 4 但它不需要 启动时总是需要 0 Service 我不知道为什么我不能通过使用 Service 实例从 Activity 进行操作 publ
  • 无法运行我的应用程序,要求选择 Android SDK

    今天我已经安装了Android Studio 金丝雀 1 现在我无法运行我的应用程序 将出现以下对话框 我已经通过 文件 gt 项目结构 gt Android SDK 位置 设置了正确的 SDK 位置 期待您的帮助来解决这个问题 警告对话框
  • 如何删除因 Google Fitness API 7.5.0 添加的权限

    将我的 play services fitness api 从 7 0 0 更新到 7 5 0 后 我注意到当我将新版本上传到 PlayStore 时 它 告诉我正在添加一个新权限和 2 个新功能 我没有这样做 有没有搞错 在做了一些研究来
  • 在 Google 地图上绘制线条/路径

    我很长一段时间都在忙于寻找如何在 HelloMapView 中的地图上的两个 GPS 点之间画一条线 但没有运气 谁能告诉我该怎么做 假设我使用扩展 MapView 的 HelloMapView 我需要使用叠加层吗 如果是这样 我是否必须重

随机推荐

  • 如何从 VSTS 下载所有附件?

    我正在尝试根据 ID 号将所有工作项附件从 VSTS 下载到它们自己的文件夹中 如果这是可能的 人们将如何继续实现这一目标 我研究过 REST API 但很困惑 而且我找到的所有文档似乎都是关于 Azure DevOps 的 我目前使用的版
  • 如何从 WMI 获取方法

    tl dr我应该怎么SELECT代替 为了获得方法 更多信息 这是一个例子 using var s new ManagementObjectSearcher root CIMV2 SELECT FROM someClass foreach
  • 如何在Python中使用open函数创建文件?

    在Linux环境中 我想创建一个文件并向其中写入文本 HTMLFILE MYUSER OUTPUT myfolder mytext html f open HTMLFILE w IOError Errno 2 No such file or
  • 如何求矩阵的对角线元素?

    我编写了一个函数来将矩阵的对角线元素存储到向量中 但输出并不如我预期 代码是 diagonal lt function x for i in nrow x for j in ncol x if i j a lt x i j print a
  • pandas 枢轴更改 dtype

    使用 pandas hub table 创建新数据框后 数据类型从 int32 更改为 float 原始数据框 df pd DataFrame from dict my dict orient columns dtype i4 print
  • 当 WooCommerce 中所选变体缺货时显示表单

    在 WooCommerce 中联系表格 7 插件 https wordpress org plugins contact form 7 我使用以下代码在单个产品页面上向我的缺货简单产品添加了一个表单 add action woocommer
  • Java多重继承

    为了完全理解如何解决 Java 的多重继承问题 我有一个需要澄清的经典问题 假设我有课Animal这有子类Bird and Horse我需要上课Pegasus延伸自Bird and Horse since Pegasus既是鸟又是马 我认为
  • 将应用程序从 iPhone 5 设备转换为 iPhone 4 设备

    如何使ios应用程序与iphone4设备 即3 5英寸 兼容 它已经内置在iphone 5 4 0英寸屏幕 中 而无需创建不同的xib 使用自动布局允许您的应用程序正确调整大小到正确的屏幕尺寸 Raywenderlich com 有一个很好
  • 使用 xml 和可重用的 xslt 动态生成 HTML 表单

    我有大量的 xml 文件 First
  • 支持哪些 git url 格式?

    Git 接受许多不同的 url 格式 例如 ssh http https 等 是否有任何规范 官方文档可以在其中找到受支持的 git url 格式 我写了一个git url 解析器 https github com IonicaBizau
  • 在 R 和 RStudio 中读取 URL

    当我在 RStudio 中输入以下内容时 它工作正常 nyt1 lt read csv url http stat columbia edu rachel datasets nyt1 csv 但是当我在 R 控制台中输入相同的内容时 我收到
  • 如何在 C 中使用和不使用 sprintf 将十六进制转换为 Ascii?

    I used strtol要将字符串转换为十六进制 现在我需要将其打印到屏幕上 我不确定是否可以使用sprintf因为我在这块板上只有 20k 内存可以使用 欢迎替代方案 要手动执行此操作 最简单的方法是使用一个将 nybbles 映射到
  • 如何在 Python 中连接两个列表而不修改其中任何一个? [复制]

    这个问题在这里已经有答案了 在Python中 我能找到连接两个列表的唯一方法是list extend 这会修改第一个列表 是否有任何串联函数可以返回其结果而不修改其参数 Yes list1 list2 这给出了一个新列表 它是以下内容的串联
  • Apache Flink、JDBC 和 fat jar 是否存在类加载问题?

    使用 Apache Flink 1 8 并尝试运行RichAsyncFunction 我得到No Suitable Driver Found初始化 Hikari 池时出错RichAsyncFunction open 在 IDE 中它运行得很
  • 具有 的组件

    我见过工作示例
  • 指定网格中的默认排序

    使用knockout kendo绑定绑定Telerik Kendo网格时是否可以指定默认排序 我像这样绑定网格 kendoGrid data grid Rows sortable allowUnsort false mode single
  • 删除观察者不工作

    我有下一个代码 implementation SplashViewVC void viewDidLoad super viewDidLoad self splashView backgroundColor UIColor colorWith
  • HTTPS + gzip:如果我只 gzip 非敏感文件,是否存在安全漏洞?

    据我了解 如果我将 gzipping 与 SSL HTTPS 一起使用 它会带来安全漏洞 违规 犯罪 如果我只在 CSS 和 JS 文件上使用它 如果这些文件通过 HTTPS 从我的服务器上提供 这仍然是一个安全漏洞吗 据我了解 答案是否定
  • 将字节数组转换为字符串

    我的Scala代码从字节流接收到一个二进制文件 它看起来像 61 62 63 64 内容是 abcd 我使用toString将其转换为p 但失败了 如何将其打印为字符串 如果您知道字节数组的字符集 则始终可以将其转换为字符串 val str
  • Android 上片段的立方体翻转动画

    我想实现一个基本的 3d 立方体 并在 Touch 上水平或垂直旋转 90 度 我想要实现的是类似于下图所示的内容 我已经实现了这个使用ViewPager s ViewTransformer但我对结果并不满意 动画不是很流畅 而且我无法翻转