当前位置: 首页 > 知识库问答 >
问题:

在Android 5.0上进行活动转换时,如何排除ActionBar

刘和正
2023-03-14

在Android 5.0Lollipop,

我有两个活动A和B。活动B有一个带有覆盖操作栏的滑动输入从下到上的转换,但是当B显示时,操作栏也从下到上滑动。

如何防止actionbar发生幻灯片转换。系统actionbar是否有可以添加到排除目标的id?

谢谢!

共有2个答案

吴宏扬
2023-03-14

我的解决方案是使用以下参数扩展样式:

<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>

这是我的res/转换/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>

这是我的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>

你可以随心所欲地玩转换,重要的是那些被排除的目标。

白才捷
2023-03-14

如果你正在使用AppCompat v7库,很容易:

View decor = getWindow().getDecorView();
int actionBarId = R.id.action_bar_container;
enterTransition.excludeTarget(decor.findViewById(actionBarId), true);

不幸的是,操作栏容器视图ID不是公共API的一部分,所以如果您没有使用AppCompat v7库(即您正在使用官方框架库),您将需要使用以下代码来检索ID取而代之的是:

int actionBarId = getResources().getIdentifier("action_bar_container", "id", "android");

请注意,如果操作栏容器的ID名称在未来版本的Android中发生更改,则此代码将中断。但我怀疑它是否会改变。。。

有关其他相关信息,请参阅本文。

 类似资料:
  • 问题内容: 在写这个问题之前,我已经 有使用Affine转换的经验 阅读Quartz 2D编程指南中的Transforms文档 看过这个详细的CALayer教程 从Github 下载并运行LayerPlayer项目 但是,我仍然难以理解如何在 图层 上进行基本转换。寻找用于平移,旋转和缩放的解释和简单示例非常困难。 今天,我终于决定坐下来,进行测试项目,然后找出答案。我的答案如下。 笔记: 我只做

  • 我有一个关于Android动画的问题。我做了一个应用程序,其中有很多产品,你可以切换产品现在通过滑动屏幕左右(到下一个产品在列表),但它只是加载像任何其他活动现在。 我的产品就是活动,现在是这样切换的:

  • 问题内容: 我知道JVM参数。我也知道,这将要求堆转储。 问题: 如何确保我首先进行完整的堆转储, 然后 在转储完成后强制重新启动(或终止)?是我最好的选择吗? 问题答案: JVM将首先转储堆,然后执行OnOutOfMemoryError命令(证明)。

  • 我想在从后台转到前台时检测并计数(当活动可见时,增加计数)。我尝试在和

  • 我正在尝试使用Jackson Library1.5创建一个Json对象,但是也会得到具有空值的对象。 如何消除空值? 我试图找到替代办法,但没有找到。大多数可用的解决方案都与Jackson2.2一起使用。有人能帮我解决这个1.5吗? 我看过这里和这里。