`
汪洋00700
  • 浏览: 23609 次
  • 性别: Icon_minigender_1
  • 来自: 常德
社区版块
存档分类

android:windowIsTranslucent 引起activity切换动画无效解决方案

 
阅读更多

在做项目的当中,就碰到了这个问题:启动app的时候,会出现一秒左右的白屏或者黑屏;当然,我们肯定会到网上搜索如何解决这个问题,我在这里写一下,我搜到的方法,好处及缺点。

一、设置windowBackground,给启动页设置这个theme

 

AndroidManifest.xml

<activity
            android:name=".activity.FirstActivity"
            android:label="@string/app_name"
            android:theme="@style/Theme.Start" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
</activity>

 

styles.xml

    <style name="Theme.Start" parent="android:Theme">
        <item name="android:windowBackground">@drawable/splash_bg</item>
        <item name="android:windowNoTitle">true</item>
    </style>

这个方法的可行之处,当你的app启动页常年不需要更换的时候,推荐使用这种方法, 简单,快捷,而且activity的切换动画也是有效的,但是如果当你的app启动页会不定时更换的时候,这个方法就不行了。

 

二、设置 android:windowIsTranslucent

   <style name="Theme.Start" parent="android:Theme">
        <item name="android:windowNoTitle">true</item>
        <item name="android:windowIsTranslucent">true</item>
        <item name="android:windowBackground">@android:color/transparent</item>
    </style>

 当设置这个方法之后,app第一个启动页,会按系统默认的动画,打开、退出页面

 

 <style name="Theme.Start" parent="android:Theme">
        <item name="android:windowNoTitle">true</item>
        <item name="android:windowIsTranslucent">true</item>
        <item name="android:windowBackground">@android:color/transparent</item>
        <item name="android:windowAnimationStyle">@style/AnimationActivity</item>
    </style>

 不管是否设置android:windowAnimationStyle,他不会按着这个方法来,所以我们可以去掉这一行,那么问题来了,当设置android:windowIsTranslucent后,动画就会失效,怎么办呢,我在网上找了下,也就那么一两种方法,还不是我想要的效果,于是,再思考之后,发现,我直接用代码设置切换也是可行的呀,说做就做,既然失效的是app的启动页,那么我就给启动页设置切换动画。

 

核心代码:

Intent intent = new Intent(FirstActivity.this, LoginActivity.class);
startActivity(intent);
this.finish();
overridePendingTransition(R.anim.anim_right_in,R.anim.anim_left_out);

 给启动页加入overridePendingTransition之后,切换到另一页的动画就出来了。

目前,就已经达到我想要的效果了,点开app,调用系统默认打开动画,进去启动页,延迟两秒,通过overridePendingTransition,自定义动画来切换到下一页。

 

那么,有的人可能就有疑惑,如果我非要自定义启动页进入的动画呢?

 <style name="Theme.Start" parent="android:Theme">
        <item name="android:windowNoTitle">true</item>
        <item name="android:windowIsTranslucent">true</item>
        <item name="android:windowBackground">@android:color/transparent</item>
        <item name="android:windowAnimationStyle">@style/animation_translucent_translate</item>
    </style>

    <style name="animation_translucent_translate" parent="@android:style/Animation.Translucent">
        <item name="android:windowEnterAnimation">@anim/anim_right_in</item>
        <item name="android:windowExitAnimation">@anim/anim_left_out</item>
    </style>

 这样就可以达到我们想要的效果,调用自定义开始动画,overridePendingTransition自定义切换动画,android:windowExitAnimation在我的小米3手机上会失效,可以无视他,并不起什么作用。

 

贴出我自己想要的效果的代码:

 

AndroidManifest.xml 里面一个设置

<activity
            android:name=".activity.FirstActivity"
            android:label="@string/app_name"
            android:theme="@style/Theme.Start" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
</activity>

 

styles.xml里面有一个主题

  <style name="Theme.Start" parent="android:Theme">
        <item name="android:windowNoTitle">true</item>
        <item name="android:windowIsTranslucent">true</item>
        <item name="android:windowBackground">@android:color/transparent</item>
    </style>

 

FirstActivity.java 里面一个方法

Intent intent = new Intent(FirstActivity.this, LoginActivity.class);
startActivity(intent);
this.finish();
overridePendingTransition(R.anim.anim_right_in,R.anim.anim_left_out);

 

 

 

1
0
分享到:
评论
1 楼 汪洋00700 2016-09-01  
 

相关推荐

    Dragger-用ViewDragHelper实现的activity切换动画。.zip

    介绍:用ViewDragHelper实现的activity切换动画。运行效果:使用说明: 你可以将这个库当成view来用:将DraggerView添加到root layout,并且在里面加入两个layout。  android:layout_width="match_parent"  ...

    Android高级应用源码-Activity实现透明的最简洁Demo.zip

    4. **动画效果**:为了增强用户体验,你还可以添加过渡动画,如淡入淡出,当Activity切换时,透明度变化可以增加视觉吸引力。这可以在Activity的onCreate()方法中通过`getWindow().setEnterTransition()`和`...

    android的Activity采用透明主题

    在Android开发中,Activity是应用程序的基本组件,它负责与用户交互并展示UI。透明主题(Transparent Theme)是一种特殊的设计,可以让Activity的背景变得透明,从而实现各种炫酷的视觉效果,比如过渡动画、沉浸式...

    android 九宫格模式实现多个activity的切换

    在本文中,我们将详细探讨如何在Android中实现这样一个九宫格布局,并且支持在各个Activity之间进行切换。 首先,我们需要创建一个包含九个按钮(或者ImageView)的布局。这可以通过使用GridView或者GridLayout来...

    Android应用源码之Activity实现透明的最简洁Demo.zip

    总结来说,Android应用中实现Activity透明效果涉及到主题设置、动画应用以及布局优化等多个方面。通过理解并掌握这些知识点,开发者可以创造出更加独特且引人入胜的用户界面。这个"Android应用源码之Activity实现...

    Android界面切换出现短暂黑屏的解决方法

    这种问题一般是因为一个Activity启动之后在显示视图之间时间太长导致的。 1、优化方式可以通过精简layout文件... ”android:windowIsTranslucent”&gt;true&lt;/item&gt; 将默认的窗口背景设置为透明色,这样就不会出现黑屏了

    Android开发中Activity之间切换出现短暂黑屏的解决方法

    在Android开发中,Activity之间的切换有时会导致短暂的黑屏现象,这给用户带来不理想的体验。黑屏的出现主要是由于Activity在启动或切换时需要进行一些初始化工作,如加载数据、绘制界面等,这些操作在后台执行时会...

    背景半透明效果的Activity

    这里,`android:windowBackground`设为透明,`android:windowIsTranslucent`设置为true表示窗口是半透明的,`android:windowAnimationStyle`用于设置Activity的动画效果。 2. **配置Activity**:然后,在...

    Android应用源码之Activity实现透明的最简洁Demo-IT计算机-毕业设计.zip

    在Android应用开发中,...通过这个Demo,开发者不仅能学习到如何实现Activity的透明效果,还能了解到Android系统中主题、布局、动画、Activity管理等多个方面的知识。这为移动应用开发提供了丰富的实践经验和理论基础。

    Android代码-Activity实现透明的最简洁Demo.zip

    此外,我们还需要设置`android:windowIsTranslucent`为`true`,这将使Activity的背景变为半透明,并允许下面的Activity可见。 ```xml &lt;item name="android:windowBackground"&gt;@android:color/transparent ...

    安卓Android源码——Activity实现透明的最简洁Demo.rar

    这里,`android:windowIsTranslucent`属性设置为true表示Activity的背景是半透明的,`android:windowBackground`设为@android:color/transparent则让背景完全透明。 2. **调整布局** 对于透明Activity,其布局...

    Android编程中activity启动时出现白屏、黑屏问题的解决方法

    - `android:windowIsTranslucent`属性设置为`true`可以让Activity的背景变为半透明,这样即使加载界面时也能看到底层的壁纸或启动画面。 - `android:windowNoTitle`和`android:windowActionBar`设为`true`可以去除...

    Android Activity切换(跳转)时出现黑屏的解决方法 分享

    在Android应用开发中,...总的来说,Android Activity间的切换黑屏问题可以通过设置透明主题得到改善。但同时,开发者还需要关注代码性能优化,以确保Activity的启动和数据加载尽可能快速,提供更流畅的用户界面交互。

    安卓Andriod源码——Activity实现透明的最简洁Demo.zip

    上述代码中,`android:windowIsTranslucent`属性设置为true表示Activity窗口是半透明的,`android:windowBackground`设为@android:color/transparent使背景变为透明。其他属性是为了去除标题栏和背景暗化效果。 在...

    TranspantActivity仿淘宝半透明Activity

    在上述代码中,`android:windowIsTranslucent`设为`true`表示Activity窗口是半透明的,`android:windowBackground`设置为半透明颜色,`android:windowContentOverlay`设为`@null`避免底部阴影,`android:...

    Android Activity实现透明的最简洁Demo-IT计算机-毕业设计.zip

    - 同时,还需要将`android:windowIsTranslucent`属性设为`true`,这会让Activity的背景变为半透明,并允许底层的壁纸或窗口显示出来。 2. **权限声明**: - 如果你的透明Activity需要在其他应用之上显示,可能...

    Activity实现透明的最简洁Demo.zip

    在Android开发中,让Activity实现透明效果是一种常见的需求,可以为用户提供更为丰富的视觉体验。本教程将通过一个简洁的Demo来讲解如何实现Activity的透明化。这个Demo包含了必要的代码和配置,帮助开发者快速理解...

    MyFileChooser.rar

    &lt;item name="android:windowIsTranslucent"&gt;true&lt;/item&gt;  &lt;item name="android:windowSoftInputMode"&gt;adjustNothing  &lt;item name="android:windowNoTitle"&gt;true&lt;/item&gt; &lt;/style&gt; -----------...

    Activity实现透明的最简洁Demo

    在Android开发中,Activity的透明效果是一个常见的需求,它可以为应用提供更加美观和沉浸式的用户体验。本Demo将向你展示如何实现Activity的最简洁透明效果。以下是对这个话题的详细阐述。 首先,我们要理解Android...

    半透明activity.zip

    在这个主题中,`android:windowIsTranslucent`设置为`true`使得窗口变为半透明,`android:windowBackground`设为`@android:color/transparent`让Activity背景完全透明。其他属性用于去除标题栏和调整其他视觉效果。 ...

Global site tag (gtag.js) - Google Analytics