我使用原生 Android Transition API 来制作 Activity 之间的过渡动画。这是我用来启动活动的来源:
Intent intent = new Intent(MainActivity.this, DetailActivity.class);
Bundle bundle = ActivityOptionsCompat.makeSceneTransitionAnimation(MainActivity.this, imageView, imageView.getTransitionName()).toBundle();
MainActivity.this.startActivity(intent, bundle);
Run Code Online (Sandbox Code Playgroud)
当我点击硬件后退按钮时,它会以预期的反向过渡动画返回到上一个活动,但是当我点击工具栏中的“向上”按钮时,它会以默认动画返回到上一个活动:

animation android android-animation android-transitions shared-element-transition
我有以下活动和布局:
import android.os.Bundle
import android.view.Gravity
import android.view.View
import androidx.appcompat.app.AppCompatActivity
import androidx.constraintlayout.widget.ConstraintLayout
import androidx.constraintlayout.widget.ConstraintSet
import androidx.transition.Slide
import androidx.transition.TransitionManager
import com.tests.playground.R
class ConstraintLayoutTransitionActivity : AppCompatActivity() {
private val rootView: ConstraintLayout by lazy { findViewById(R.id.root) }
private val bottomBlueView: View by lazy { findViewById(R.id.bottomBlue) }
private val switchButton: View by lazy { findViewById(R.id.switchButton) }
private var isBottomBlueViewShowing = true
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_constraint_layout_transition)
switchButton.setOnClickListener(::onSwitchButtonClicked)
}
@Synchronized
private fun onSwitchButtonClicked(view: View) {
isBottomBlueViewShowing = !isBottomBlueViewShowing
val constraintSet = ConstraintSet()
constraintSet.clone(rootView)
val …Run Code Online (Sandbox Code Playgroud) android android-transitions android-constraintlayout constraintset
当我在列表中滚动时,我希望可组合的粘性标题缩小。在缩小期间,布局应通过滚动状态进行动画处理,以从列布局切换到行布局。
Jetpack Compose 有什么办法可以实现这一点吗?
animation android kotlin android-transitions android-jetpack-compose
我正在使用新的Android L转换,特别是共享元素转换以及Slide().当我按下后退按钮时,转换工作完美,它会将共享的ImageView滑动并转换到正确的位置,但是当我按下ActionBar中的home-up按钮时,它会忽略新的转换.
我在接收活动中设置了这段代码:
getWindow().requestFeature(Window.FEATURE_CONTENT_TRANSITIONS);
getWindow().setExitTransition(new Slide());
getWindow().setEnterTransition(new Slide());
Run Code Online (Sandbox Code Playgroud)
我的"主要"活动中的这段代码:
getWindow().requestFeature(Window.FEATURE_CONTENT_TRANSITIONS);
Transition transition = new Slide();
getWindow().setSharedElementEnterTransition(transition);
getWindow().setSharedElementExitTransition(transition);
Run Code Online (Sandbox Code Playgroud) 我知道可以通过活动转换来在活动A和活动B之间对共享元素进行转换,如下所示:
ActivityOptions options = ActivityOptions.makeSceneTransitionAnimation(this,
Pair.create(view1, "agreedName1"),
Pair.create(view2, "agreedName2"));
Run Code Online (Sandbox Code Playgroud)
同一活动中的片段也有片段转换。但是,是否有一种方法可以在活动A的“片段”视图和活动B之间转换共享元素?
我的活动A有一个带有片段的ViewPager,这些片段具有要转换为活动B的视图的视图。因此,我要转换为活动B的视图实际上是在活动A的“片段”布局中,而不是直接在活动A的布局中。
有什么办法可以使这项工作吗?
android android-layout android-transitions activity-transition