美文网首页
解决APP启动之前的黑\白屏

解决APP启动之前的黑\白屏

作者: 我是伏地魔 | 来源:发表于2018-08-23 11:13 被阅读0次

一.禁止加载PreviewWindow

二.自定义PreviewWindow

三.自定义Preview Window增强版(动画)

这里我们要明确一点的是:Preview Window只是静态图,它本身是不展示动画的,我们这里的动画是在进入欢迎页之后才展示的。

1.设置mainActivity 的 theme 属性

2.在\res\values\style下 添加 Theme.Center

3.@drawable/splash_ico 内容

qq为图片

4.mainActivity.xml

5.mainActivity.class

public class SplashActivity extends AppCompatActivity{

    private ImageView img;

    private ImageView ImgMark;

    ViewPropertyAnimation.Animator animator=new ViewPropertyAnimation.Animator(){

        @Override

        public void animate(View view) {

            view.setAlpha(0f);

            ObjectAnimator objAnimator=ObjectAnimator.ofFloat(view,"alpha",0f,1f);

            objAnimator.setDuration(2000);

            objAnimator.start();

        }

    };

    @Override

    protected void onCreate(@Nullable Bundle savedInstanceState) {

        getWindow().setBackgroundDrawable(null);

        initStatus();

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_splash_layout);

        img= (ImageView) findViewById(R.id.img_id);

        ImgMark= (ImageView) findViewById(R.id.icon_mark);

        ImgMark.post(new Runnable() {

            @Override

            public void run() {

                Glide.with(SplashActivity.this).load(R.drawable.benbenla)

                        .animate(animator).into(img);

                startAnimat();

            }

        });

    }

    @Override

    public void onWindowFocusChanged(boolean hasFocus) {

        super.onWindowFocusChanged(hasFocus);

    }

    private void initStatus(){

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {

            View decoderView = getWindow().getDecorView();

            int option = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE;

            decoderView.setSystemUiVisibility(option);

            getWindow().setStatusBarColor(Color.TRANSPARENT);

        } else {

            WindowManager.LayoutParams localLayoutParams = getWindow().getAttributes();

            localLayoutParams.flags = (WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS | localLayoutParams.flags);

            //or ?

//            getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);

        }

    }

    private void startAnimat(){

        int imgHeight=ImgMark.getHeight()/5;

        int height=getWindowManager().getDefaultDisplay().getHeight();

        int curY=height/2 + imgHeight/2;

        int dy=(height-imgHeight)/2;

        AnimatorSet set=new AnimatorSet();

        ObjectAnimator animatorTranslate=ObjectAnimator.ofFloat(ImgMark,"translationY",0,dy);

        ObjectAnimator animatorScaleX=ObjectAnimator.ofFloat(ImgMark,"ScaleX",1f,0.2f);

        ObjectAnimator animatorScaleY=ObjectAnimator.ofFloat(ImgMark,"ScaleY",1f,0.2f);

        ObjectAnimator animatorAlpha=ObjectAnimator.ofFloat(ImgMark,"alpha",1f,0.5f);

        set.play(animatorTranslate)

                .with(animatorScaleX).with(animatorScaleY).with(animatorAlpha);

        set.setDuration(1200);

        set.setInterpolator(new AccelerateInterpolator());

        set.start();

        set.addListener(new Animator.AnimatorListener() {

            @Override

            public void onAnimationStart(Animator animation) {

            }

            @Override

            public void onAnimationEnd(Animator animation) {

                ImgMark.postDelayed(new Runnable() {

                    @Override

                    public void run() {

                        startActivity(new Intent(SplashActivity.this,MainActivity.class));

                        SplashActivity.this.finish();

                    }

                },3000);

            }

            @Override

            public void onAnimationCancel(Animator animation) {

            }

            @Override

            public void onAnimationRepeat(Animator animation) {

            }

        });

    }

}

原文链接

相关文章

  • 解决APP启动之前的黑\白屏

    一.禁止加载PreviewWindow 二.自定义PreviewWindow 三.自定义Preview Windo...

  • android冷启动白屏问题

    今天把玩公司App发现了一个有趣的现象。启动app白屏。之前没太留意过;在参照大厂App解决白屏的方案后。简单汇总...

  • ionic2常见问题及解决方案

    ionic2常见问题及解决方案 一、app启动白屏的问题 ​ app启动后大概有几秒的白屏,才会显...

  • Android项目优化-冷启动优化

    APP启动优化主要解决app启动缓慢,白屏半天的问题。 app启动方式主要为:冷启动和热启动 冷启动:当进程关掉,...

  • Android性能优化-App启动优化

    一、App启动优化 问题如下:1、App启动白屏、或者黑屏2、App启动时间长 二、解决方法1 通常的解决办法都是...

  • Android 启动优化

    一、 启动白屏优化 解决启动白屏问题再启动app时展示一张静态图 ,实现方法是 给splash页面设置theme...

  • 解决启动app白屏

    原理就设置一个和启动页一样的背景

  • app的启动白屏解决

    在网上搜索了许多关于app启动白屏的文章大致分为两类 第一种是在style的app的theme 里设置 true ...

  • 一. Android 启动时间优化

    1)启动页白屏及黑屏解决?2)启动太慢怎么解决?3)怎么保证应用启动不卡顿?4)App启动崩溃异常捕捉5)统计启动...

  • Android启动页

    app启动为什么会出现黑/白屏? 当在app中点击桌面图标时会复制一份zygote进程来启动这个app,但...

网友评论

      本文标题:解决APP启动之前的黑\白屏

      本文链接:https://www.haomeiwen.com/subject/akpyiftx.html