相关疑难解决方法(0)

Android Activity使用Support v4过渡到最新的Android L.

我正在为我的应用程序实现材料设计.我看到可以在这里进行活动之间的转换:http://android-developers.blogspot.com.es/2014/10/implementing-material-design-in-your.html

所以我试着按照"真实动作"部分说的:

ActivityMain.java

Intent intent = new Intent();
String transitionName = getString(R.string.transition_album_cover);
…
ActivityOptionsCompat options =
ActivityOptionsCompat.makeSceneTransitionAnimation(activity,
    albumCoverImageView,   // The view which starts the transition
    transitionName    // The transitionName of the view we’re transitioning to
    );
ActivityCompat.startActivity(activity, intent, options.toBundle());
Run Code Online (Sandbox Code Playgroud)

activity_main.xml中

<ImageView
    …
    android:transitionName="@string/transition_album_cover" />
Run Code Online (Sandbox Code Playgroud)

activity_details.xml

<ImageView
    …
    android:transitionName="@string/transition_album_cover" />
Run Code Online (Sandbox Code Playgroud)

但是,这似乎使默认的android活动转换,我看不到动画.

请记住,我在这里调用了requestWindowFeature(Window.FEATURE_CONTENT_TRANSITIONS)http://developer.android.com/reference/android/support/v4/app/ActivityOptionsCompat.html#makeSceneTransitionAnimation (android.app.Activity ,android). view.View,java.lang.String)

所有这些都是使用Nexus4 API Level 19测试的

问题出在哪儿?

animation android android-support-library material-design

16
推荐指数
2
解决办法
2万
查看次数

共享元素转换中的IllegalArgumentException

实现了活动共享元素转换的活动.它工作正常,但在极少数运行> = LOLLIPOP的设备上接收崩溃.

报告:

Fatal Exception: java.lang.IllegalArgumentException
       at android.os.Parcel.readException(Parcel.java:1550)
       at android.os.Parcel.readException(Parcel.java:1499)
       at android.app.ActivityManagerProxy.isTopOfTask(ActivityManagerNative.java:4654)
       at android.app.Activity.isTopOfTask(Activity.java:5557)
       at android.app.Activity.startActivityForResult(Activity.java:3903)
       at android.support.v4.app.BaseFragmentActivityApi16.startActivityForResult(BaseFragmentActivityApi16.java:54)
       at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:65)
       at android.app.Activity.startActivity(Activity.java:4146)
       at com.mypackage.Activity1.method1(Activity1.java:414). 
Run Code Online (Sandbox Code Playgroud)

试过这个:

Intent intent = new Intent(Activity1.this, Activity2.class);
     ActivityOptionsCompat options = ActivityOptionsCompat.
                    makeSceneTransitionAnimation(Activity1.this,
                            logoImageView,
                            ViewCompat.getTransitionName(logoImageView));
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
                startActivity(intent, options.toBundle());
            } else {
                startActivity(intent);
            }
            overridePendingTransition(R.anim.stay, R.anim.stay); 
Run Code Online (Sandbox Code Playgroud)

那么这个来自ActivityManagerProxy中的 sof IllegalArgumentException:

Intent intent = new Intent(Activity1.this, Activity2.class);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
    ActivityOptions options = ActivityOptions
            .makeSceneTransitionAnimation(Activity1.this,
                    logoImageView,
                    getString(R.string.splashLogoSharedTransition));
    startActivity(intent, options.toBundle());
} else …
Run Code Online (Sandbox Code Playgroud)

animation android android-activity shared-element-transition

5
推荐指数
1
解决办法
1183
查看次数