You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:点击RecyclerView条目切换Activity时实现指定转场动画

实现RecyclerView条目跳转Activity的滑动转场效果

核心关键词(方便你后续搜索拓展)

Android Shared Element Transition RecyclerView、Activity Slide Transition、RecyclerView Item Activity Transition

这个转场效果是共享元素转场(Shared Element Transition)+ 滑动式Activity进出转场的组合实现,具体步骤如下:

1. 开启Activity转场支持

在你的App主题(styles.xml)中启用转场配置,确保两个Activity都使用该主题:

<style name="AppTheme" parent="Theme.MaterialComponents.Light.NoActionBar">
    <!-- 全局启用Activity转场 -->
    <item name="android:windowContentTransitions">true</item>
    <!-- 配置主Activity退出时的右滑转场 -->
    <item name="android:windowExitTransition">@android:transition/slide_right</item>
    <!-- 配置目标Activity进入时的右滑转场 -->
    <item name="android:windowEnterTransition">@android:transition/slide_right</item>
    <!-- 配置共享元素的移动转场 -->
    <item name="android:windowSharedElementExitTransition">@android:transition/move</item>
    <item name="android:windowSharedElementEnterTransition">@android:transition/move</item>
</style>

2. 设置共享元素的统一标识

给RecyclerView条目中需要跟随转场的元素(比如图片、标题)设置transitionName,同时在目标Activity的对应元素上设置完全相同的transitionName:

<!-- RecyclerView条目布局中的元素 -->
<ImageView
    android:id="@+id/item_image"
    android:transitionName="shared_item_image"
    ... />

<!-- 目标Activity布局中的对应元素 -->
<ImageView
    android:id="@+id/detail_image"
    android:transitionName="shared_item_image"
    ... />

3. 实现RecyclerView条目点击跳转逻辑

在RecyclerView的Adapter中,通过ActivityOptions绑定共享元素并启动Activity:

// Adapter的onBindViewHolder方法内
holder.itemView.setOnClickListener {
    val targetIntent = Intent(holder.itemView.context, TargetDetailActivity::class.java)
    // 传递条目数据(如ID、内容)
    targetIntent.putExtra("ITEM_DATA", item)
    
    // 创建转场动画选项
    val transitionOptions = ActivityOptions.makeSceneTransitionAnimation(
        holder.itemView.context as Activity,
        Pair(holder.itemImageView, "shared_item_image")
        // 如果有多个共享元素,可以继续添加Pair,比如标题:Pair(holder.itemTitle, "shared_item_title")
    )
    
    // 启动Activity并传入转场配置
    holder.itemView.context.startActivity(targetIntent, transitionOptions.toBundle())
}

4. 自定义转场细节(可选)

如果想要更贴合示例的动画节奏,可以自定义滑动转场:
在res/transition目录下创建custom_slide_right.xml:

<slide xmlns:android="http://schemas.android.com/apk/res/android"
    android:slideEdge="right"
    android:duration="350"
    android:interpolator="@android:interpolator/decelerate_cubic"/>

然后替换主题中的转场引用为这个自定义文件即可。

注意事项

  • 仅支持Android 5.0(API Level 21)及以上版本,低版本会自动降级为普通跳转
  • 共享元素的transitionName必须完全一致,不能动态生成(如需支持多条目,固定名称即可)
  • 确保Activity的主题是Material或AppCompat系列,否则转场可能不生效

内容的提问来源于stack exchange,提问作者Duy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 20:33:18