FEATURE_ACTIVITY_TRANSITIONS 与 FEATURE_CONTENT_TRANSITIONS

2024-02-20

我无法理解这两者之间的区别Window http://developer.android.com/reference/android/view/Window.html标志,但我不能 100% 确定何时需要使用每一个以及为什么。

的文档Window.FEATURE_ACTIVITY_TRANSITIONS http://developer.android.com/reference/android/view/Window.html#FEATURE_ACTIVITY_TRANSITIONS say:

使活动能够运行活动转换 通过发送或接收使用以下命令创建的 ActivityOptions 捆绑包makeSceneTransitionAnimation(Activity, Pair[]) or makeSceneTransitionAnimation(Activity, View, String).

以及文档Window.FEATURE_CONTENT_TRANSITIONS http://developer.android.com/reference/android/view/Window.html#FEATURE_CONTENT_TRANSITIONS say:

请求窗口内容更改的标志 使用 a 进行动画处理TransitionManager.

The TransitionManager设置使用setTransitionManager(TransitionManager)。 如果没有设置,则默认TransitionManager将会被使用。

该文档指出以下内容Window http://developer.android.com/reference/android/view/Window.html方法需要FEATURE_ACTIVITY_TRANSITIONS标志要启用,但没有说明是否FEATURE_CONTENT_TRANSITIONS还需要启用(请注意,根据源代码 https://github.com/android/platform_frameworks_base/blob/lollipop-release/core/res/res/values/themes_material.xml#L162-L163, FEATURE_ACTIVITY_TRANSITIONS is true and FEATURE_CONTENT_TRANSITIONS is false默认情况下以材质为主题的应用程序):

  • get{Enter,Exit,Return,Reenter}Transition()
  • set{Enter,Exit,Return,Reenter}Transition()
  • getSharedElement{Enter,Exit,Return,Reenter}Transition()
  • setSharedElement{Enter,Exit,Return,Reenter}Transition()
  • getTransitionBackgroundFadeDuration()
  • setTransitionBackgroundFadeDuration()

换句话说,似乎基于此信息FEATURE_ACTIVITY_TRANSITIONS是应用程序需要启用才能使用 Lollipop 的新活动转换 API 的功能标志。然而令我困惑的是本文 https://developer.android.com/training/material/animations.html#TransitionsAndroid 开发者网站指出,启用FEATURE_CONTENT_TRANSITIONS是实现自定义活动转换所必需的。

这是我的问题:

  1. 这两个标志有什么区别?在这种情况下,“活动转换”和“内容转换”有什么区别?
  2. Why is FEATURE_ACTIVITY_TRANSITIONS启用和FEATURE_CONTENT_TRANSITIONS默认禁用?什么时候启用FEATURE_CONTENT_TRANSITIONS实际需要标志吗?
  3. 禁用它是否有意义FEATURE_ACTIVITY_TRANSITIONS并启用FEATURE_CONTENT_TRANSITIONS?或者确实FEATURE_CONTENT_TRANSITIONS要求FEATURE_ACTIVITY_TRANSITIONS也要启用吗?

Thanks!


我很高兴有机会回答这些问题,因为文档不太清楚。

早期,只有一面旗帜FEATURE_CONTENT_TRANSITIONS处理这两个功能。当 Material 应用程序在启用时出现意外行为时,我们将它们分开。所以一些旧的文档可能仍然说你必须启用FEATURE_CONTENT_TRANSITIONS当他们意味着时获得活动转换FEATURE_ACTIVITY_TRANSITIONS.

  1. 这两个标志有什么区别?是什么 “活动转换”和“内容”之间的区别 在这种情况下过渡”?

在这种情况下,活动转换意味着您调用startActivity与创建的捆绑包ActivityOptions.makeSceneTransitionAnimation或者,您的活动是从该捆绑包开始的。活动转换会修改您的布局(例如元素淡入淡出、移动共享元素),因此如果您的活动不喜欢这样,您应该禁用FEATURE_ACTIVITY_TRANSITIONS.

内容转换使用TransitionManager你打电话时setContentView(除了第一次)。通常,您会得到交叉淡入淡出效果,但如果您的 Activity 的内容有共同点,例如共享 ID 或使用transitionName, 你会得到ChangeBounds这些视图之间的行为。您可以通过自定义来更改转换的详细信息TransitionManager使用 XML 或代码与您的窗口关联。

  1. Why is FEATURE_ACTIVITY_TRANSITIONS启用和FEATURE_CONTENT_TRANSITIONS默认禁用?什么时候 启用FEATURE_CONTENT_TRANSITIONS实际需要标志吗?

FEATURE_CONTENT_TRANSITIONS当内容更改时使用 TransitionManager。默认情况下,这是交叉淡入淡出,这对于某些应用程序来说非常糟糕。另一方面,FEATURE_ACTIVITY_TRANSITIONS默认情况下不会对大多数应用程序执行任何操作。您必须选择以这种方式开始一项活动,这样才能安全地开启。

  1. 禁用它是否有意义FEATURE_ACTIVITY_TRANSITIONS并启用FEATURE_CONTENT_TRANSITIONS? 或者确实FEATURE_CONTENT_TRANSITIONS要求FEATURE_ACTIVITY_TRANSITIONS也要启用吗?

是的,但可能性不大。如果您的应用程序喜欢FEATURE_CONTENT_TRANSITIONS,它应该可以很好地与FEATURE_ACTIVITY_TRANSITIONS。如果您想明确限制人们使用共享元素调用您的 Activity,或者您不喜欢标准的 Enter 过渡效果,则可以禁用它以防止其他应用程序调用您的 Activity 时出现该效果。

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

FEATURE_ACTIVITY_TRANSITIONS 与 FEATURE_CONTENT_TRANSITIONS 的相关文章

  • 有关 paddingStart 使用的冲突 lint 消息

    API 17 RTL 支持发布后 我将以下内容添加到我的清单中 android supportsRtl true 这导致 Lint 在我的视图中有 paddingLeft Right 的地方正确地向我发出这些警告 考虑添加 android
  • 在Android中将半径边框绘制到imageview或textview的一个角落

    我需要在我的应用程序中为图像视图或文本视图绘制边框 但我只需要在一个角落绘制它 就像图像一样 我做了一个形状 但我在所有 4 个边上都有边框
  • 删除视图并重新创建它

    有没有办法删除设置的视图 setContentView R layout set map center mapView MapView findViewById R id mapview 如果我再次调用此视图 则会收到一条错误消息 java
  • Android平台源码中哪里可以找到版本信息

    Android 平台源文件中的版本信息在哪里找到 我尝试查找 设置 gt gt 中列出的有关手机的一些信息 显示的一些信息包括固件版本 模块编号 基带版本 内核版本 你可以给它办理登机手续platform build core versio
  • 删除 json 对象字符串中的“\”

    如何删除下面字符串中的特殊字符 String x message content toom recipients id 1000001865 room subject room 我使用了 x replaceAll 但它不起作用 您必须转义正
  • 在Android内存中存储gif图像

    我对安卓还很陌生 我想将图像保存到内存中 然后从内存中检索图像并将其加载到图像视图中 我已使用以下代码成功将图像存储在内存中 void saveImage String fileName img cnt jpg File file new
  • Android 从键盘读取

    我的登录屏幕根本没有文本字段 当用户使用 RFID 扫描仪扫描他的 id 令牌时 我会得到一个 8 个字符长的字符串 其原理与使用键盘相同 只是更快 我希望我的登录活动在用户扫描其令牌时而不是之前执行 有一个聪明的方法来实现这个吗 我不能有
  • 如何找到特定路线上两点之间的距离?

    我正在为我的大学开发一个 Android 应用程序 可以帮助学生跟踪大学巴士的当前位置 并为他们提供巴士到达他们的预计时间 截至目前 我获取了公交车的当前位置 通过公交车上的设备 和学生的位置 我陷入了必须找到两个 GPS 坐标之间的距离的
  • 当编辑文本获得焦点时更改边框颜色

    我想知道当编辑文本聚焦时如何更改它的边框颜色 目前它看起来像这样 我尝试过在SDK中检查源图片 但我无法理解它 我也尝试过使用xml 但无法仅更改边框颜色 如果我找到源图片 我可以在 Photoshop 中编辑以更改颜色 有什么关于如何执行
  • Kotlin 和惯用的书写方式,基于可变值“如果不为空,则...”

    假设我们有这样的代码 class QuickExample fun function argument SomeOtherClass if argument mutableProperty null doSomething argument
  • 从 Handler.obtainMessage() 获取什么参数

    我正在使用线程来执行一些 BT 任务 我正在尝试向 UI 线程发送消息 以便我可以基于我的 BT 线程执行 UI 工作 为此 我使用处理程序 但我不知道如何检索发送到处理程序的数据 要发送数据 我使用 handler obtainMessa
  • 使用 DiffUtil 在 RecyclerView 上添加拖放

    我有一个从房间数据库更新的列表 我从 Room 收到更新的数据作为新列表 然后将其传递给列表适配器 https developer android com reference androidx recyclerview widget Lis
  • 无法在 Java 中输出正确的哈希值。怎么了?

    在我的 Android 应用程序中 我有一个 SHA256 哈希值 我必须使用 RIPEMD160 消息摘要算法进一步对其进行哈希值 我可以输出任何字符串的正确 sha256 和ripemd160 哈希值 但是当我尝试使用ripemd160
  • 使用 AndroidX ExifInterface 从图像中检索 GPS EXIF 数据?

    我的目标是 Android 13 并使用新的照片选择器 https developer android com training data storage shared photopicker检索图像 例如 val photoPicker
  • 在 Android ADT Eclipse 插件中滚动布局编辑器

    有谁知道当布局编辑器的内容溢出一个 屏幕 时如何滚动这些内容 我说的是在设计时使用 ADT 布局编辑器 而不是在物理设备上运行时滚动 效果很好 关闭 Android 布局编辑器中的剪辑 切换剪辑 按钮位于 Android 布局编辑器的右上角
  • 获取当前图片在图库中显示的位置

    在我的应用程序中 我有一个图片库 但我想检测当前显示图像的位置 例如 当我启动我的活动时 位置是 0 但是当我在图库中滚动时 我想获取当前显示图像的位置 我尝试过 OnFocusChanged OnItemClicked 但只有当我单击图库
  • 如何以编程方式创建 CardView

    我正在开发一个 Android 应用程序Java Android Studio 我想在活动中创建CardView以编程方式 我想将以下属性设置为CardView layout width wrap content layout row 0
  • firebase中按范围查询

    我有一个食品价格范围滑块 根据滑块的最小值和最大值 我想显示此范围内的食品 滑块代码 multiSlider setOnThumbValueChangeListener new MultiSlider SimpleChangeListene
  • 画布:尝试使用回收的位图错误

    我是一个相当新的程序员 所以任何建议将不胜感激 我有一个类 每次调用它时都会在循环中运行 AsyncTask AsyncTask 看起来像这样 public class LoadImageTask extends AsyncTask
  • 进程被杀死后不会调用 onActivityResult

    我有一个主要活动 Main 和另一个活动 Sub 由 Main 调用 startActivityForResult new Intent this SubActivity class 25 当我在 Sub 时 我终止该进程 使用任务管理器或

随机推荐