tin*_*yao 8 android android-actionbar android-5.0-lollipop activity-transition shared-element-transition
在Android 5.0 Lollipop上,
我有两个活动A和B.活动B有一个slie从底部进入过渡带有Overlay ActionBar,但是当B显示时,ActionBar也从下到上滑动.
如何阻止动作栏进行幻灯片切换.系统操作栏有一个我可以添加到排除目标的ID吗?
谢谢!
Ale*_*ood 10
如果您使用的是AppCompat v7库,则很容易:
View decor = getWindow().getDecorView();
int actionBarId = R.id.action_bar_container;
enterTransition.excludeTarget(decor.findViewById(actionBarId), true);
Run Code Online (Sandbox Code Playgroud)
不幸的是,操作栏容器视图ID不是公共API的一部分,因此如果您不使用AppCompat v7库(即您使用的是官方框架库),则需要使用以下代码来检索它ID代替:
int actionBarId = getResources().getIdentifier("action_bar_container", "id", "android");
Run Code Online (Sandbox Code Playgroud)
请注意,如果操作栏容器的ID名称在未来的Android版本中发生更改,则此代码将中断.我怀疑它会改变......
有关其他相关信息,请参阅此帖子.
我的解决方案是使用这个args扩展样式:
<item name="android:windowActivityTransitions">true</item>
<item name="android:windowContentTransitions">true</item>
<item name="android:windowEnterTransition">@transition/slide</item>
<item name="android:windowExitTransition">@transition/slide</item>
<item name="android:windowAllowEnterTransitionOverlap">true</item>
<item name="android:windowAllowReturnTransitionOverlap">true</item>
<item name="android:windowSharedElementEnterTransition">@transition/enter</item>
<item name="android:windowSharedElementExitTransition">@transition/enter</item>
Run Code Online (Sandbox Code Playgroud)
这是我的res/transition/slide.xml:
<?xml version="1.0" encoding="utf-8"?>
<slide xmlns:android="http://schemas.android.com/apk/res/android" android:slideEdge="bottom">
<targets>
<target android:excludeId="@android:id/statusBarBackground"/>
<target android:excludeId="@android:id/navigationBarBackground"/>
</targets>
</slide>
Run Code Online (Sandbox Code Playgroud)
这是我的res/transition/enter.xml:
<?xml version="1.0" encoding="utf-8"?>
<transitionSet
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
tools:targetSdkVersion="19"
android:transitionOrdering="sequential">
<targets>
<target android:excludeId="@id/action_bar_container"/>
<target android:excludeId="@android:id/statusBarBackground"/>
</targets>
<changeBounds/>
<changeTransform/>
<changeClipBounds/>
<changeImageTransform/>
</transitionSet>
Run Code Online (Sandbox Code Playgroud)
您可以根据需要随意使用这些过渡,重要的是那些被排除的目标.
| 归档时间: |
|
| 查看次数: |
6967 次 |
| 最近记录: |