【问题标题】:Navigating between full screen and normal activities在全屏和正常活动之间导航
【发布时间】:2014-07-30 09:01:56
【问题描述】:

有两个活动。

Activity A是全屏Activity(状态栏隐藏),使用getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);

Activity B 是普通的Activity(状态栏可见)。

我需要在活动 A 和活动 B 之间导航。

问题是当状态栏变得可见并且活动调整大小时,从 A 移动到 B 时会出现抖动。

知道如何确保从一个活动顺利过渡到另一个活动吗?

另外,我使用滑入和滑出动画在活动之间进行转换。

【问题讨论】:

    标签: android android-activity navigation android-fullscreen


    【解决方案1】:

    您可以在切换活动时简单地使用动画,

            startActivity(new Intent(FirstActivity.this, SecondActivity.class));
            overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out);
    

    编辑:

    替换下面的块

    <translate         
     android:duration="300"
     android:fromXDelta="100%"
     android:fromYDelta="0%"
     android:toXDelta="0%"
     android:toYDelta="0%">
    

    这个

    <translate         
     android:duration="300"
     android:fromXDelta="100%"
     android:fromYDelta="0%"
     android:toXDelta="0%"
     android:toYDelta="0%">
    
    <alpha android:fromAlpha="0.0" android:toAlpha="1.0" android:duration="300" />
    

    注意:

    整个代码应该是这样的,

        <?xml version="1.0" encoding="utf-8"?>
    <set xmlns:android="http://schemas.android.com/apk/res/android">
    
        <translate         
         android:duration="300"
         android:fromXDelta="100%"
         android:fromYDelta="0%"
         android:toXDelta="0%"
         android:toYDelta="0%">
    
        <alpha android:fromAlpha="0.0" android:toAlpha="1.0" android:duration="300" />
    
    </set>
    

    可选方式:(参考:article

    不要在现有动画中添加 alpha,如果有帮助,请尝试这种方式,

    替换

    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,     WindowManager.LayoutParams.FLAG_FULLSCREEN);
    

        WindowManager.LayoutParams attributes = getWindow().getAttributes();
        attributes.flags |= WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN |   WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS;
        getWindow().setAttributes(attributes);
    

    【讨论】:

    • 啊,我希望我能做到。我已经在使用我的自定义动画进行过渡,这基本上是一个滑入和滑出动画。
    • @Swayam:你可以同时使用这两种效果。你能把这些动画的代码放上去吗?
    • 哇哦。那真的很棒。我正在使用&lt;translate android:duration="300" android:fromXDelta="100%" android:fromYDelta="0%" android:toXDelta="0%" android:toYDelta="0%"&gt;
    • 非常感谢!让我检查并回复你。另外,没有褪色效果就没有办法做到这一点吗?我的意思是,我在应用程序中使用了一组标准的动画。我不确定是否需要为这种情况使用不同的动画。
    • @Swayam:AFAIK,没有办法,因为它不是由于您的应用程序而抖动,它应该由 Android 操作系统本身在显示或隐藏状态栏时顺利处理。不幸的是,Android 缺乏这样的东西,所以开发者不得不使用这样的变通方法。
    【解决方案2】:

    我在我的样式中使用Theme.AppCompat.Light.NoActionBar 来显示我想要全屏显示的活动,然后是@MehulJoisar 正确指出的以下内容

    WindowManager.LayoutParams attributes = getWindow().getAttributes();
        attributes.flags |= WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN |   WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS; 
        getWindow().setAttributes(attributes);
    

    快乐编码:)

    【讨论】:

    • 有了这个解决方案,在状态栏后面查看布局,有什么解决办法吗?
    • @FarshidABZ 添加样式即可。不要添加应该做我觉得的把戏的Java。不过不确定。
    猜你喜欢
    • 1970-01-01
    • 2017-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多