【发布时间】:2015-02-14 00:08:26
【问题描述】:
我正在使用 Master/Detail 模式,目前正在迁移到 Android Lollipop。如果我单击 ListView 中的一个项目,我想拥有其中一个 new activity transistions。动画正在运行,但我不知道如何在共享元素(在我的情况下为 ImageView)之间制作特定动画。
如果我单击自定义 ListView 中的一行(带有图像和文本),则转换应切换到 DetailActivtiy 中的图像。它应该看起来像这个视频:http://youtu.be/RhiPJByIMrM?t=2m41s 或这个视频:http://youtu.be/XkWI1FKKrs4
我已经将这段代码添加到我的两个 ImageViews 中:
<ImageView
android:transitionName="@string/transition_title_image"/>
我的列表活动:
@Override
protected void onCreate(Bundle savedInstanceState) {
if (Build.VERSION.SDK_INT >= 21) {
//To enable window content transitions in your code instead, call the Window.requestFeature() method:
getWindow().requestFeature(android.view.Window.FEATURE_CONTENT_TRANSITIONS);
Transition ts_enter = new Slide(); //Slide(); //Explode();
Transition ts_exit = new Explode();
ts_enter.setDuration(2000);
ts_exit.setDuration(2000);
/*
If you have set an enter transition for the second activity,
the transition is also activated when the activity starts.
*/
getWindow().setEnterTransition(ts_enter);
getWindow().setExitTransition(ts_exit);
}
super.onCreate(savedInstanceState);
使用这个方法调用我的DetailActivity:
if (Build.VERSION.SDK_INT >= 21) {
Intent intent = new Intent(ArticleListActivity.this, ArticleDetailActivity.class);
intent.putExtra("pos", id);
intent.putExtra("articleList", articleList);
String transitionName = getString(R.string.transition_title_image);
ImageView article_thumb = (ImageView) findViewById(R.id.article_thumb);
ActivityOptionsCompat options =
ActivityOptionsCompat.makeSceneTransitionAnimation(ArticleListActivity.this,
article_thumb, // The view which starts the transition
transitionName // The transitionName of the view we’re transitioning to
);
ActivityCompat.startActivity(ArticleListActivity.this, intent, options.toBundle());
}
我的详细活动:
@Override
protected void onCreate(Bundle savedInstanceState) {
if (Build.VERSION.SDK_INT >= 21) {
//To enable window content transitions in your code instead, call the Window.requestFeature() method:
getWindow().requestFeature(android.view.Window.FEATURE_CONTENT_TRANSITIONS);
Transition ts_enter = new Slide(); //Slide(); //Explode();
Transition ts_exit = new Explode(); //Slide(); //Explode();
ts_enter.setDuration(2000);
ts_exit.setDuration(2000);
getWindow().setEnterTransition(ts_enter);
getWindow().setExitTransition(ts_exit);
}
super.onCreate(savedInstanceState)
;
【问题讨论】:
-
好的,但你没有解释问题是什么。现在的动画是什么样子的?是否出现故障?在您的代码中,您使用
setEnterTransition()和setExitTransition()设置了内容转换,但是您在哪里设置共享元素转换? -
另外,如果您在描述您遇到的问题时遇到困难,您可能需要考虑发布您自己的应用程序的视频。 Android Studio 有一个非常有用的视频捕捉工具,可能会派上用场。
-
This blog post 可能有用。
标签: android android-listview android-5.0-lollipop material-design activity-transition