Android 闪屏同步加载
我已经实现了一个加载屏幕(splashScreen),但希望它与我的实际应用程序加载同步。我希望应用程序在后台加载主页,这样在加载屏幕上完成定时加载后,它就会在后台拉起主屏幕。我对异步任务和线程比较陌生,因为我不太会玩游戏,但需要一些帮助。谢谢 画布加载条移动: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,
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);
}
}
);