37

When I call new activity by animation the background gets black.
How can I remove remove the black background?

For the animation I'm using:

getWindow().setBackgroundDrawableResource(R.drawable.mainbg_); 
overridePendingTransition (R.anim.push_up_in,0);
Ola Ström
  • 4,136
  • 5
  • 22
  • 41
Hardik Gajjar
  • 5,038
  • 8
  • 33
  • 51

6 Answers6

78

Setting the Theme didn't work for me, but adding an exit animation did.

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

For the exit animation, I just used an animation that does nothing.

<?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>
Luke Wallace
  • 1,244
  • 1
  • 10
  • 5
  • This works. Note: `android:duration` should be equal to or greater than the duration of your animation of the entering activity. – Alaa M. Oct 08 '16 at 05:16
  • Try `android:duration="@android:integer/config_longAnimTime"` to use the default animation duration for activities – kds23 Jan 11 '17 at 11:50
42

All you really need, especially if you already got a theme set to the activity and don't want to use the Theme.Translucent suggested is add the following to your activity/app's theme:

<item name="android:windowIsTranslucent">true</item>
Roberto Andrade
  • 1,793
  • 1
  • 21
  • 27
22

set the theme of that activity as transluscent in manifest file

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

so your code will be something like this

<activity android:name=".AdActivity"
        android:theme="@android:style/Theme.Translucent" />
Sunil Kumar Sahoo
  • 53,011
  • 55
  • 178
  • 243
11

If you are using the AppCompat ActionBarActivity you will need to use a theme that extends Theme.AppCompat

To give me the option to add background transparency to just the activities that needed it (ones launched using the intent flag_activity_new_task) but keep the background for the rest of the app.. I extended my main theme and set the transparent background options in that style.

<!-- 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>
speedynomads
  • 2,632
  • 1
  • 26
  • 24
1

What cleared my problem was understanding following method :

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

First Argument A in this is applied to Incoming Activity. For Example If we Are going from X Activity to Y and we Apply above animation than A is applied to Y and B is Applied to X.

Similarly when we are coming back from Y to X on Back Press. if we apply SAME: than A is applied to Y and B is applied to X.

So it means while coming back from Y to X..Apply Hold Animation to X and Left to right to Y.

Hope it is of some use..

Tarun Deep Attri
  • 8,174
  • 8
  • 41
  • 56
1

Add below attribute in your app then replace your own color :

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

Below code effects to Activity Components if you use any overridePendingTransition(),it creates issue in transition while Activity changing it seems misbehaviour.So, don't use this code for prevent black background.

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

                   OR

 <!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.NoActionBar">
       <item name="android:windowIsTranslucent">true</item>
</style>
Sathish Gadde
  • 1,453
  • 16
  • 28