Android 解决全屏闪屏页切换至非全屏Activity任务栏造成的卡顿
来源:互联网 发布:女款棉衣淘宝网 编辑:程序博客网 时间:2024/05/17 20:58
今天在写一个闪屏页的时候碰到一个问题,当闪屏页为全屏,下一个 Activity 不是全屏的时候,添加 Activity 切换动画,顶部的任务栏总是会在动画结束的时候突然弹出来,造成莫名的卡顿感,在一篇博客里找到了解决方法,在此记录一下。
先来看一下需要用到的动画资源
闪屏页退出动画
<set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/decelerate_interpolator" android:zAdjustment="top"> <scale android:duration="@android:integer/config_mediumAnimTime" android:fromXScale="1.0" android:fromYScale="1.0" android:pivotX="50%p" android:pivotY="50%p" android:toXScale="0" android:toYScale="0" /> <alpha android:duration="@android:integer/config_mediumAnimTime" android:fromAlpha="1" android:toAlpha="0" /> </set>
闪屏页后下一个要显示的 Activity 进入动画
<set xmlns:Android="http://schemas.android.com/apk/res/android" Android:interpolator="@android:anim/decelerate_interpolator"> <scale Android:duration="@android:integer/config_mediumAnimTime" Android:fromXScale="2.0" Android:fromYScale="2.0" Android:pivotX="50%" Android:pivotY="50%" Android:toXScale="1.0" Android:toYScale="1.0" /></set>
下面是 SplashActivity.class 的代码
package com.wechat.sunny.leancloudsty.activity;import android.content.Intent;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.support.v7.app.AppCompatActivity;import android.view.Window;import android.view.WindowManager;import com.avos.avoscloud.AVUser;import com.wechat.sunny.leancloudsty.R;/** * Created by Sunny on 2017/5/10. * Email:670453367@qq.com * Description: 闪屏页 Activity */public class SplashActivity extends AppCompatActivity { private final static int USER_LOGINED = 0x01; // 用户已登录 private final static int USER_NOT_LOGINED = 0x02; // 用户未登录 public Handler mHandler = new Handler() { @Override public void handleMessage(Message msg) { super.handleMessage(msg); switch (msg.what) { case USER_LOGINED: Intent intentMain = new Intent(SplashActivity.this, MainActivity.class); startActivity(intentMain); overridePendingTransition(R.anim.zoomin, R.anim.zoomout); // 启用 Activity 切换动画 finish(); break; case USER_NOT_LOGINED: Intent intentLogin = new Intent(SplashActivity.this, LoginActivity.class); startActivity(intentLogin); overridePendingTransition(R.anim.zoomin, R.anim.zoomout); // 启用 Activity 切换动画 finish(); break; } } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); /** * 全屏 */ getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); this.requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_splash); /** * 判断用户是否已经登录 */ AVUser currentUser = AVUser.getCurrentUser(); if (currentUser != null) { mHandler.sendEmptyMessageDelayed(USER_LOGINED, 2000); } else { mHandler.sendEmptyMessageDelayed(USER_NOT_LOGINED, 2000); } }}
可以看到我们的 Splash 页面是设置了全屏的,上面的代码我们不做任何处理,切换 Activity 执行动画的时候,切换到的第二个 Activity 开始也是全屏的,直到动画结束,顶部的任务栏突然跳出来,给人一种卡顿感。解决方法很简单,在 Activity 切换之前,把 Splash 页面的全屏通过以下代码取消掉即可。
/** * 退出全屏模式,解决从全屏到不是全屏的 Activity 的动画卡顿问题 */getWindow().setFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN, WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
这样第二个 Activity 的任务栏开始就是显示的,并且也是通过动画显示出来的。
方法参考自:http://www.jianshu.com/p/63bba2e09b78
0 0
- Android 解决全屏闪屏页切换至非全屏Activity任务栏造成的卡顿
- android activity 全屏非全屏切换
- Activity全屏非全屏的切换
- activity 全屏界面切换到非全屏界面的问题
- activity 全屏界面切换到非全屏界面的问题
- Android之解决全屏切换非全屏的页面压缩问题
- Android 全屏界面切换到非全屏界面的问题
- android全屏与非全屏的切换设置
- Android 全屏界面切换到非全屏界面的问题
- Android全屏切换到非全屏界面的视觉问题
- 全屏/非全屏切换
- Android动态切换全屏和非全屏
- android activity非全屏、透明
- ActivityGroup切换Activity时非全屏
- 全屏activity跳转非全屏activity页面抖动问题的解决
- Android 动态切换全屏和非全屏模式
- Android 动态切换全屏和非全屏模式
- Android 在从全屏切换到非全屏的时候闪动问题
- CentOS系统yum源使用报错:Error: Cannot retrieve repository metadata (repomd.xml) for repository: rpmforge.
- qml实现拖动
- jasypt保护用户名密码
- 常用技巧(一)3
- tensorflow 模型保存与加载
- Android 解决全屏闪屏页切换至非全屏Activity任务栏造成的卡顿
- 解决:dubbo找不到dubbo.xsd报错
- 详讲FL Studio随机命令
- 如何在TensorFlow中用深度学习修复图像
- adb相关的问题
- jQuery的选择器,有逗号,和没有逗号,的区别
- 2017年4月观影分享
- zz 我是 ojProblem A: 数量的类模板
- 值传递和引用传递