android启动页优化小技巧(一)

      android应用启动时默认会有黑屏/白屏的闪过,这是由于View加载时会先加载DectorView,然后由外层View向内层View逐层加载,
大概ViewGroup ->view -> subview...而每个View都会占有一块相应的矩形的区域,这样View是有背景的,因此会有黑屏/白屏的闪
现,解决思路: 今早加载启动页面背景,不加载View背景就会避免该现象;

   
 《一》,通过设置主题来提前加载:
   当我们建立项目时习惯自定义一个Theme,在Manifest.xml文件中声明使用:

   <application
        android:name=".application.BaseApplication"
        android:hardwareAccelerated="true"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/app_theme" ...>
   
       “ 在建立自定义主题时我们要注意,如果Activity我们继承的AppCampatActivity时,Parent 主题样式一定是
   Theme.AppCampat.系列的主题,否则报错 ”
       
       自定义Style:
<resources> <!--app 主题 no ActionBar--> <style name="app_them" parent="Theme.AppCompat.Light.NoActionBar"> <!--默认所有window设置全屏模式--> <item name="android:windowFullscreen">true</item> <!--设置所有页面不为透明模式,开发半透明模式时使用该属性--> <item name="android:windowIsTranslucent">false</item> <!--默认所有window窗口背景设为透明无颜色--> <item name="android:windowBackground">@android:color/transparent</item> <!--动画样式--> <item name="android:windowAnimationStyle">@android:style/Animation.Translucent</item> <!--window窗口设为无标题模式,默认windowFullscreen=true,此方法不生效--> <item name="android:windowNoTitle">true</item> </style> <style name="LauncherTheme" parent="app_them"> <item name="android:state_window_focused">false</item> <!--启动优化,不会产生白屏间隔快速显示背景--> <item name="android:windowBackground">@mipmap/bg_default</item> </style> </resources>

我们可以先创建一个基础样式,"name = base_theme",然后不同的页面fen别去扩展,parent="base_theme

       

";

《二》,通过代码在运行时加载:

同时我们还可以通过java代码去实现,如下:
     @Override
     protected void onCreate(Bundle savedInstanceState) {
        setTheme(R.style.app_them);
        super.onCreate(savedInstanceState);
        //去除Title
        this.requestWindowFeature(Window.FEATURE_NO_TITLE);
        //设置满屏
        this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
                                                           WindowManager.LayoutParams.FLAG_FULLSCREEN);
  setContentView(R.layout.activity_launcher); infoManager = InfoManager.getInstance();
}



xzcv

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值