对片段之间的过渡进行动画处理

2024-03-26

我正在尝试为片段之间的过渡设置动画。我从以下得到了答案
Android 片段和动画 https://stackoverflow.com/questions/4817900/android-fragments-and-animation

FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.setCustomAnimations(R.anim.slide_in_left, R.anim.slide_out_right);

DetailsFragment newFragment = DetailsFragment.newInstance();

ft.replace(R.id.details_fragment_container, newFragment, "detailFragment");

// Start the animated transition.
ft.commit();

还有我的 R.anim.slide_in_left

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
        <translate android:fromXDelta="50%p" android:toXDelta="0"
            android:duration="@android:integer/config_mediumAnimTime"/>
       <alpha android:fromAlpha="0.0" android:toAlpha="1.0"
            android:duration="@android:integer/config_mediumAnimTime" />
</set>

但是当我尝试这个时它显示

02-08 16:27:37.961: ERROR/AndroidRuntime(1717): FATAL EXCEPTION: main
02-08 16:27:37.961: ERROR/AndroidRuntime(1717): java.lang.RuntimeException: Unknown animator name: translate
02-08 16:27:37.961: ERROR/AndroidRuntime(1717):     at android.animation.AnimatorInflater.createAnimatorFromXml(AnimatorInflater.java:129)
02-08 16:27:37.961: ERROR/AndroidRuntime(1717):     at android.animation.AnimatorInflater.createAnimatorFromXml(AnimatorInflater.java:126)
02-08 16:27:37.961: ERROR/AndroidRuntime(1717):     at android.animation.AnimatorInflater.createAnimatorFromXml(AnimatorInflater.java:93)
02-08 16:27:37.961: ERROR/AndroidRuntime(1717):     at android.animation.AnimatorInflater.loadAnimator(AnimatorInflater.java:72)
02-08 16:27:37.961: ERROR/AndroidRuntime(1717):     at android.app.FragmentManagerImpl.loadAnimator(FragmentManager.java:621)
02-08 16:27:37.961: ERROR/AndroidRuntime(1717):     at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:733)
02-08 16:27:37.961: ERROR/AndroidRuntime(1717):     at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:919)
02-08 16:27:37.961: ERROR/AndroidRuntime(1717):     at android.app.BackStackRecord.run(BackStackRecord.java:578)
02-08 16:27:37.961: ERROR/AndroidRuntime(1717):     at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1217)

有任何想法吗?当我检查 Honeycomb API 参考时translate有没有。我错过了什么?
还有其他方法可以为片段之间的过渡设置动画吗? 谢谢


你需要使用新的android.animation框架(对象动画师)FragmentTransaction.setCustomAnimationsFragmentTransaction.setTransition.

这是一个使用示例setCustomAnimations来自 ApiDemos 的FragmentHideShow.java:

ft.setCustomAnimations(android.R.animator.fade_in, android.R.animator.fade_out);

这是相关的动画 XMLres/animator/fade_in.xml:

<objectAnimator xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@android:interpolator/accelerate_quad"
    android:valueFrom="0"
    android:valueTo="1"
    android:propertyName="alpha"
    android:duration="@android:integer/config_mediumAnimTime" />

请注意,您可以使用组合多个动画师<set>,就像使用旧的动画框架一样。


EDIT:既然人们询问滑入/滑出的问题,我将在这里对此进行评论。

滑入和滑出

您当然可以将translationX, translationY, x, and y属性,但通常幻灯片涉及在屏幕外进出的动画内容。据我所知,没有任何使用相对值的转换属性。但是,这并不妨碍您自己编写它们。请记住,属性动画只需要您正在设置动画的对象(在本例中为视图)上的 getter 和 setter 方法,因此您可以创建你自己的 getXFraction and setXFraction视图子类上的方法,如下所示:

public class MyFrameLayout extends FrameLayout {
    ...
    public float getXFraction() {
        return getX() / getWidth(); // TODO: guard divide-by-zero
    }

    public void setXFraction(float xFraction) {
        // TODO: cache width
        final int width = getWidth();
        setX((width > 0) ? (xFraction * width) : -9999);
    }
    ...
}

现在您可以为“xFraction”属性设置动画,如下所示:

res/animator/slide_in.xml:

<objectAnimator xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@android:anim/linear_interpolator"
    android:valueFrom="-1.0"
    android:valueTo="0"
    android:propertyName="xFraction"
    android:duration="@android:integer/config_mediumAnimTime" />

请注意,如果您要设置动画的对象与其父对象的宽度不同,则情况看起来不太正确,因此您可能需要调整属性实现以适合您的用例。

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

对片段之间的过渡进行动画处理 的相关文章

  • 使用 xamarin 和 c# 更改 android 上的cultureinfo

    我调用自定义方法来动态地将当前文化信息切换为法语 fr 像这样 但在调用该方法后 我的 Android 应用程序仍然使用默认区域性 en 但在调试模式下 区域性似乎没问题 我的文件夹没问题 我两者都有 并且字符串值已配置 文件夹 resou
  • 如果我无限期地在后台运行 Android 线程会发生什么

    Android 文档表明 Oreo 对后台执行有新的限制 https developer android com about versions oreo background https developer android com abou
  • 现实世界中的 JavaCard 3?

    我目前正在从事我的文凭工作 部分工作包括开发JavaCard常规小程序SIM牌 第一个选项是使用JavaCard2 X API并使用APDU与小程序通信的命令 这可能非常棘手 因为我需要为 android 开发客户端应用程序 它将与这个小程
  • ListView 和 CursorAdapter 对于大量数据的性能问题

    我在 sqlite 表中有大约 4k 行 表有 7 列 我用自己的 CursorAdapter 创建了工作 ListView 查询是这样的SELECT FROM table ORDER BY column DESC 表有第一列 id INT
  • OpenGL ES 2.0 中的透明对象

    所以我一直在 Android 上使用 OpenGL ES 2 0 但现在遇到了一个我无法解决的问题 提前道歉 看来我还不能发布两个以上的链接 所以我把我的三张图片放在 Photobucket 相册中 我正在尝试创建一个由透明区域 彩色玻璃
  • 浮动操作按钮动画

    当 fab 出现时 它使用动画中的比例进行动画处理 当它隐藏时 它使用向外扩展动画 因此 它是一个缩小和缩小的动画 这个动画要怎么制作呢 从 Zielony 的回答来看 我完全按照我想要的方式制作了它 下面是正确应用效果的代码 scale
  • Kotlin 协程 - 优雅地处理挂起函数中的错误

    尝试使用从异步方法调用的挂起函数来实现对错误的优雅处理 如何捕获挂起方法引发的错误 suspend fun findById id Long User throw Exception my exception intentionally t
  • 5.1 崩溃 - 任务描述的主要颜色应该是不透明的

    我已经在我的应用程序中实现了材料设计 它在 FATAL EXCEPTION main Process com test test PID 3195 java lang RuntimeException Unable to start act
  • 未找到 Gradle DSL 方法:“exclude()”

    我正在 Android Studio 中工作 当我在 build gradle 文件中添加该行时 dependencies compile files libs poi ooxml schemas 3 12 20150511 a jar e
  • 如何将 Material 按钮与其他 UI 元素对齐

    我无法将默认材质按钮与 UI 的其他元素对齐 事实上 我已经查看了 Android 源代码 按钮的背景包含插图 以便能够绘制阴影并处理单击时按钮的高度
  • Picasso onBitmapLoaded 从未调用过

    我遇到了同样的问题 我想使用毕加索生成的可绘制对象进行图像缓存 但我无法得到相同的结果 这是我用来访问位图可绘制对象的代码 Target targetBitmap new Target Override public void onPrep
  • 丢弃对 OpenGL 中的程序性能有影响吗?

    我正在读书this http code google com p gdc2011 android opengl wiki TalkTranscript文章 作者写道 以下是如何通过两个简单的步骤在每个平台上编写高性能应用程序 遵循最佳实践
  • 具有线程安全性的 eventbus 最佳实践

    我的应用程序具有用户交互活动和后台服务 这是修改数据模型的唯一地方 后台服务监听用户所做的操作以及来自网络的传入消息 因此 可能会出现并发问题 我尝试使用处理程序来防止这些问题 对于事件层 我使用 greenrobots Eventbus
  • 谷歌分析崩溃报告仅显示堆栈跟踪的第一行

    我的应用程序使用 Google Analytics 来跟踪异常和崩溃 除其他外 我使用这个函数来获取堆栈跟踪 public static void sendErrorReportViaGoogleAnalytics Exception e
  • 更新到Android 5.0后出现java.lang.UnsatisfiedLinkError

    我正在开发一个 Android 应用程序 它使用一个名为 liballjoyn java so 的本机库 可用here https allseenalliance org developers download在 Android 核心 SD
  • 当 SystemUI 在 Android Boot 中加载时

    如何知道系统 UI 何时加载Android启动过程 状态栏和导航栏视图到底绘制在哪里 作为SystemUI是一个特权应用程序 那么它是否在启动器应用程序 主屏幕 启动之前加载 我不知道 欢迎任何建议 下面是一系列简要解释的步骤 希望能够阐明
  • 获取 Blob 图像并将该图像转换为 Bitmap 图像

    我正在从数据库中获取 blob 格式的图像 我想将其转换为位图图像 我用来将位图转换为 Blob 的代码放在下面 但是请告诉我如何反转它 ByteArrayOutputStream boas new ByteArrayOutputStrea
  • 从 SD 卡读取 pdf 文件

    我想阅读存储在 SD 卡中的 pdf 文件 我尝试使用此代码片段 File file new File Environment getExternalStorageDirectory vvveksperten ypc pdf Package
  • onActivityResult() Intent 数据始终为 null

    有人可以告诉我为什么Intent data总是为空 Override protected void onActivityResult int requestCode int resultCode Intent data super onAc
  • Android ACTION_MOVE阈值

    我正在编写一个应用程序 需要使用手指或最终使用手写笔在屏幕上书写 我有那部分工作 在 ACTION DOWN 时 开始绘制 在 ACTION MOVE 上 添加线段 在 ACTION UP 上 完成该行 问题是 在 ACTION DOWN

随机推荐

  • 制作 CSS 精灵的工具? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 在android项目中添加“jfeinstein10 / SlidingMenu”的确切过程

    我对android完全陌生 我正在尝试实现Sliding Menu having ListView with Swipe Gesture 通过一些搜索我发现https github com jfeinstein10 SlidingMenu
  • 图像增强使性能变得更差[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正在研究一个图像分割项目 并一直在尝试采用图像增强技术来增加训练集的大小 起初 我只是尝试使用水平翻转将图像尺寸放大一倍 但我发现性
  • 在php中的共享主机上创建并导入mysql数据库

    我正在尝试编写 php 脚本 连接到 mysql 创建数据库 创建用户和密码 将用户添加到数据库 将准备好的sql文件导入数据库 问题是它将位于共享主机上 我正在努力使其通用并与不同的主机一起使用 我猜数据库和 db 用户将在共享主机上以我
  • Apache 2.4 需要 ip 不起作用

    尝试从旧的允许 拒绝 顺序语法转换为新语法以保护 WordPress 管理部分 但我无法让它识别我的 IP 这就是我的 htaccess文件包含在 wp admin folder ErrorDocument 401 default Erro
  • Java变量声明在性能方面的差异[重复]

    这个问题在这里已经有答案了 这两种声明的区别在哪里String s 1 public static void main String args String s for int i 0 i lt 1000000 i s String i S
  • 请批评我的 PHP 身份验证工作

    发帖后this https stackoverflow com questions 443988 simple authorisation login capability in php不久前 我决定用 PHP 创建自己的注册 身份验证功能
  • 使用 Ubuntu,如何从 CPAN 安装 DBD::Sybase?

    每当我尝试构建DBD Sybase连接到 MSSQL 时出现错误 sudo cpanp install DBD Sybase Installing DBD Sybase 1 15 Running usr bin perl usr bin c
  • 在 Go 中将事物通道作为接口通道传递

    我的程序有一个管道结构 我刚刚实现了一个缓存过滤器 如果已处理的数据版本在缓存中 则该过滤器将直接将内容发送到输出 func Run in chan downloader ReadyDownload chan CCFile out make
  • 绘制曲线连接网页上的元素

    I have been tasked with turning this rough idea into a live page 虽然我已经建立了基本结构 但我想知道创建连接月份的曲线的最佳方法 我应该只创建图像并覆盖它们吗 有没有办法用某
  • PHP gnupg'导入失败'

    我一直在尝试在 PHP 中使用 gnupg 来加密将上传到 ftp 文件夹的文件 我目前正在使用 MAMP 在 mac 上运行 并且我相信 gnupg 已正确安装 我有来自文件接收者的公钥 当我尝试导入该密钥 无论是作为字符串文字还是从文本
  • 如何在 Rails 内的 AREL 子查询上进行连接

    我有一个简单的模型 class User has many logs class Logs 通过外键logs user id以通常的方式关联 我正在尝试使用 Arel 执行以下操作 根据 Arel 文档 它应该可以工作 u t Arel T
  • Pyspark 命令无法识别

    我安装了 anaconda 还下载了 Spark 1 6 2 我使用此答案中的以下说明为 Jupyter 配置 Spark在此输入链接描述 https stackoverflow com questions 33064031 link sp
  • JPA,外部化列、表或模式名称?

    我将 Spring Hibernate Tomcat Oracle 应用程序改编为分布式形式 并且需要在 JPA 注释中自定义模式名称 类似于 Spring EL Entity Table name LOSS schema app data
  • 重写java中的方法,然后将对象转换为父类行为

    我有一个父类 A 和一个子类 B B 重写了 A 中的方法 f public class A public String f return A public class B extends A public String f return
  • Monotouch/WCF:为什么无法覆盖wcf绑定超时设置

    Monotouch WCF 为什么无法覆盖 wcf 绑定默认超时设置 public class MyServiceClient ClientBase
  • Jade/Pug if else 条件用法

    我正在使用 js 文件将日期发送到 jade 文件Node js 当 的时候 date 场是false 它执行 else 并打印man因为它的答案 可能出了什么问题 if date false date else man 如果 date 为
  • ActiveRecord什么时候保存关联?

    我知道它会保存关联autosave true as per https api rubyonrails org classes ActiveRecord AutosaveAssociation html https api rubyonra
  • 按照这些规范用Python制作一个空心盒子?

    我要 编写一个 python 程序 提示用户输入一个正整数 n 然后该程序打印一个包含 n 行和 2 n 列的空心矩形 例如 输入 3 将输出 我的代码是 n int input Please enter a positive intege
  • 对片段之间的过渡进行动画处理

    我正在尝试为片段之间的过渡设置动画 我从以下得到了答案 Android 片段和动画 https stackoverflow com questions 4817900 android fragments and animation Frag