Android 闪屏同步加载

Android 闪屏同步加载,android,multithreading,performance,android-canvas,splash-screen,Android,Multithreading,Performance,Android Canvas,Splash Screen,我已经实现了一个加载屏幕(splashScreen),但希望它与我的实际应用程序加载同步。我希望应用程序在后台加载主页,这样在加载屏幕上完成定时加载后,它就会在后台拉起主屏幕。我对异步任务和线程比较陌生,因为我不太会玩游戏,但需要一些帮助。谢谢 画布加载条移动: public class CustomRectangle extends View{ float left = 0, right = 500, top = 500, bot = 1000; boolean check = false,

我已经实现了一个加载屏幕(splashScreen),但希望它与我的实际应用程序加载同步。我希望应用程序在后台加载主页,这样在加载屏幕上完成定时加载后,它就会在后台拉起主屏幕。我对异步任务和线程比较陌生,因为我不太会玩游戏,但需要一些帮助。谢谢

画布加载条移动:

public class CustomRectangle extends View{

float left = 0, right = 500, top = 500, bot = 1000;
boolean check = false, finish = false;
int screenWidth = 0, screenHeight = 0;
Bitmap image;

@TargetApi(Build.VERSION_CODES.HONEYCOMB_MR2)
public CustomRectangle(Context context){
    super(context);

    WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
    Display display = wm.getDefaultDisplay();

    Point size = new Point();
    display.getSize(size);

    this.screenHeight = size.y;
    this.screenWidth = size.x;

    this.image = BitmapFactory.decodeResource(getResources(), R.drawable.logo);
    this.image = Bitmap.createScaledBitmap(this.image, screenWidth, screenHeight, false);

}
@TargetApi(Build.VERSION_CODES.KITKAT)
@Override
protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);

    if(check == false) {
        Paint paintInitial = new Paint();
        paintInitial.setColor(Color.YELLOW);
        this.left = 0;
        this.top = canvas.getHeight() - 10;
        this.right = canvas.getWidth();
        this.bot = canvas.getHeight();
        canvas.drawRect(left, top - 10, right, bot, paintInitial);
        this.check = true;
    }
    if(check == true && finish == false) {
        Paint paintWhite = new Paint();
        paintWhite.setColor(Color.WHITE);
        Paint paintYellow = new Paint();
        paintYellow.setColor(Color.YELLOW);
        canvas.drawRect(left, top, right, bot, paintYellow);
        canvas.drawBitmap(image, 0, 0, null);
        top = top - 5;
        invalidate();
        if(top <= 0){
            finish = true;
            Intent intent = new Intent(getContext(), Home_Page.class);
            getContext().startActivity(intent);
            Log.e("", "Finished Loading!");

        }
    }
}
}


到目前为止,该条加载到屏幕顶部,然后开始主活动,但我认为主屏幕不会加载到最后,因此实际上不会同步加载。如果有人能把我引向正确的方向,找到一些例子或者发布一个修改过的代码,那就太好了

我对你做了什么有点困惑,但是如果你只需要一个加载条,我建议你只做一个活动。在布局文件中,将其设置为FrameLayout或RelativeLayout。在里面,你可以有你的进度条,和另一个布局与你的主要活动布局。首先,使主活动布局不可见,并且两者的宽度/高度都应与父级匹配

当您的活动启动时,它将只显示进度条,然后一旦您完成加载,您可以简单地将进度条设置为不可见,将主布局设置为可见

需要注意的一件事是,当您更改视图的可见性以在UI线程上运行它时,请确保。您可以通过调用runOnUiThread来执行此操作

runOnUiThread(new Runnable()
        {
            @Override
            public void run()
            {
                progressBar.setVisibility(View.INVISIBLE);
                mainLayout.setVisibility(View.VISIBLE);
            }
        }
);

我没有运行一个典型的进度条。我使用一个矩形作为加载条,填充屏幕,并在矩形前面放置一个图像,使图像看起来像进度条。矩形的高度每秒增加一次,直到它到达屏幕顶部,然后开始活动。我正在使用画布绘制一个矩形作为进度条。这很有帮助,谢谢。除非你能得到一个进度条来填满整个屏幕,否则我将坚持我的代码,因为我有它当然你不必使用实际的进度条,这种方法将与任何自定义设计,你想用它来显示进度。
runOnUiThread(new Runnable()
        {
            @Override
            public void run()
            {
                progressBar.setVisibility(View.INVISIBLE);
                mainLayout.setVisibility(View.VISIBLE);
            }
        }
);