【问题标题】:How to remove Black background between start new activity during slide_left animation?如何在 slide_left 动画期间开始新活动之间删除黑色背景?
【发布时间】:2011-06-24 13:18:12
【问题描述】:

当我通过动画调用新活动时,背景变黑。
如何去除黑色背景?

对于我正在使用的动画:

getWindow().setBackgroundDrawableResource(R.drawable.mainbg_); 
overridePendingTransition (R.anim.push_up_in,0);

【问题讨论】:

    标签: android android-activity android-animation android-drawable android-transitions


    【解决方案1】:

    设置主题对我不起作用,但添加退出动画可以。

    overridePendingTransition (R.anim.push_up_in,R.anim.hold);
    

    对于退出动画,我只是使用了一个什么都不做的动画。

    <?xml version="1.0" encoding="utf-8"?>
    <set xmlns:android="http://schemas.android.com/apk/res/android">
        <translate android:fromYDelta="0%p" android:toYDelta="0%p" android:duration="2000"/>
    </set>
    

    【讨论】:

    • 好办法,谢谢你在startActivityForResult后把我从黑屏中救了出来
    • 帮了我!这种方法的美妙之处在于 true 有问题,有一些活动的退出动画。
    • 这行得通。注意:android:duration 应等于或大于进入活动的动画持续时间。
    • 尝试android:duration="@android:integer/config_longAnimTime"为活动使用默认动画持续时间
    • 是的,我接受你的回答,但是当我用户出现动画时,hold.xml 文件的代码是什么?请回答。
    【解决方案2】:

    您真正需要的一切,特别是如果您已经为活动设置了主题并且不想使用主题。半透明建议是将以下内容添加到您的活动/应用程序的主题中:

    <item name="android:windowIsTranslucent">true</item>
    

    【讨论】:

    • 非常感谢,你拯救了我的一天
    • 这是更好的解决方案,因为如果我们使用app compat,我们不能使用@android:style/Theme.Translucent
    • 这个是完美的解决方案
    • 这在华为手机中不起作用,因为半透明活动不会在全屏模式下打开。
    【解决方案3】:

    在清单文件中将该活动的主题设置为半透明

    android:theme="@android:style/Theme.Translucent"
    

    所以你的代码会是这样的

    <activity android:name=".AdActivity"
            android:theme="@android:style/Theme.Translucent" />
    

    【讨论】:

      【解决方案4】:

      如果您使用 AppCompat ActionBarActivity,您将需要使用扩展 Theme.AppCompat 的主题

      让我可以选择为需要它的活动(使用意图 flag_activity_new_task 启动的活动)添加背景透明度,但为应用程序的其余部分保留背景。我扩展了我的主题并设置了透明背景选项那种风​​格。

      <!-- The main theme applied to the application or activity -->
      <style name="Theme.app" parent="Theme.AppCompat.NoActionBar">
          <!-- Your main app theme items go here-->
          <item name="android:windowBackground">@drawable/some_drawable</item>
      </style>
      
      <!-- Transparent background for app / activity -->
      <style name="Theme.app.Translucent" parent="Theme.app">
          <item name="android:windowIsTranslucent">true</item>
          <item name="android:windowBackground">@android:color/transparent</item>
          <item name="android:colorBackgroundCacheHint">@null</item>
      </style>
      

      【讨论】:

        【解决方案5】:

        解决我的问题的是理解以下方法:

        overridePendingTransition (R.anim.A,R.anim.B);

        这里的第一个参数 A 应用于传入活动。例如,如果我们从 X Activity 转到 Y 并且我们应用上述动画,则 A 应用于 Y 而 B 应用于 X。

        类似地,当我们在 Back Press 上从 Y 回到 X 时。如果我们应用 SAME: 比 A 应用于 Y 而 B 应用于 X。

        所以这意味着当从 Y 回到 X..Apply Hold Animation to X and Left to right to Y.

        希望对你有用..

        【讨论】:

          【解决方案6】:

          在您的应用中添加以下属性,然后替换您自己的颜色:

          <!-- Base application theme. -->
          <style name="AppTheme" parent="Theme.AppCompat.NoActionBar">
               <item name="android:windowBackground">@color/colorBackground</item>
          </style>
          

          如果您使用任何 overridePendingTransition(),以下代码对 Activity 组件的影响,它会在转换过程中产生问题,而 Activity 更改它似乎行为不端。所以,不要使用此代码来防止黑色背景。

           android:theme="@android:style/Theme.Translucent"
          
                             OR
          
           <!-- Base application theme. -->
          <style name="AppTheme" parent="Theme.AppCompat.NoActionBar">
                 <item name="android:windowIsTranslucent">true</item>
          </style>
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2016-11-29
            • 2019-08-08
            • 1970-01-01
            • 2011-08-22
            相关资源
            最近更新 更多