ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Java-Android应用程序SDK:从过渡动画中排除状态栏

2019-10-29 08:25:29  阅读:306  来源: 互联网

标签:statusbar sdk java android


我遵循了Google的标准Android SDK教程,并且可以更改操作栏的选项.

当打开其他活动时,它会作为动画弹出(渐入式渐入).我的问题是,此活动中的新操作栏也会与动画一起弹出(它们都作为一个容器连接在一起),我希望操作栏保留在顶部,固定不变,而只弹出应用程序的内容.动作栏的内容发生变化,它应该没有任何动画就发生变化.例如,看一下Telegram应用程序.

当我遵循标准教程时,我想这是默认行为,因此关闭它可能很常见,但是我在任何地方都没有找到可行的解决方案,因此我必须忽略一些非常基本的设置.

themes.xml:

...
<style name="BlaTheme"
       parent="@style/Theme.AppCompat">
    <item name="android:actionBarStyle">@style/MyActionBar</item>
    <item name="android:actionBarTabTextStyle">@style/MyActionBarTabText</item>
    <item name="android:actionMenuTextColor">@color/actionbar_text</item>
    <item name="android:background">@color/darkpurple</item>
    <!-- Support library compatibility -->
    <item name="actionBarStyle">@style/MyActionBar</item>
    <item name="actionBarTabTextStyle">@style/MyActionBarTabText</item>
    <item name="actionMenuTextColor">@color/actionbar_text</item>
    <item name="android:windowActionBar">true</item>  
    <item name="android:windowContentOverlay">@null</item>
</style>

<!-- ActionBar styles -->
<style name="MyActionBar"
       parent="@style/Widget.AppCompat.ActionBar">
    <item name="android:background">@android:color/transparent</item>
    <item name="android:titleTextStyle">@style/MyActionBarTitleText</item>
    <!-- Support library compatibility -->
    <item name="titleTextStyle">@style/MyActionBarTitleText</item>
</style>
...

解决方法:

您可以这样定义转换:

>在fade.xml文件中:

<?xml version="1.0" encoding="utf-8"?>
<transitionSet xmlns:android="http://schemas.android.com/apk/res/android">
    <fade android:duration="500">
        <targets>
            <!--excluding status bar--> 
            <target android:excludeId="@android:id/statusBarBackground"/>
            <!--excluding navigation bar-->
            <target android:excludeId="@android:id/navigationBarBackground"/>
            <!--excluding toolbar bar-->
            <target android:excludeId="@id/toolbar"
        </targets>
    </fade>
</transitionSet>

然后将其设置为:

    Transition mFadeTransition =
            TransitionInflater.from(this).
                    inflateTransition(R.transition.fade);

    getWindow().setEnterTransition(mFadeTransition);

>或仅使用java:

Fade fade = new Fade();
fade.setDuration(500);
//exclude toolbar
fade.excludeTarget(R.id.toolbar, true);
//exclude status bar
fade.excludeTarget(android.R.id.statusBarBackground, true);
//exclude navigation bar
fade.excludeTarget(android.R.id.navigationBarBackground, true);

getWindow().setEnterTransition(fade);

标签:statusbar,sdk,java,android
来源: https://codeday.me/bug/20191029/1958746.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有