在同一个Activity中创建启动画面

时间:2014-07-03 09:59:08

标签: android

我需要显示启动布局文件,直到操作完成,然后才能更改为主布局。 这是一个例子。

@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.splash_screen);
    //Here app is copying files or something other it doesn't mater.
        RelativeLayout panel = new RelativeLayout(this);
    //Here is creating of main layout 

        setContentView(panel);

我需要在操作执行时显示启动画面(两个方法之间的setContentView)并且我需要设置主布局, 我试图以这种方式做,但它只显示黑屏,只显示主要布局(面板)。 问题出在哪儿 ? 请提前获得帮助。

2 个答案:

答案 0 :(得分:0)

如果你没有在setContentView(R.layout.main)

上精确地做重事,你可以做这样的事情
public void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    setContentView(R.layout.splash);

    handler = new Handler();

    new AsyncTask<Void, Void, Void>() {

    @Override
    protected Void doInBackground(Void... params) {
            //Do some heavy stuff
            return null;
        } 

        @Override
        public void onPostExecute(Void result){
            handler.post(new Runnable(){
                 @Override
                 public void run(){
                     setContentView(R.layout.main);
                 }
            });
        }
   }.execute();
}

编辑您可以查看此True SplashScreen

答案 1 :(得分:0)

以下是我的项目中的示例:

布局页面,您可以根据需要自定义进度条:

`

<ProgressBar
    android:id="@+id/inquiry_progress"
    style="?android:attr/progressBarStyleLarge"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:layout_centerVertical="true"
    android:layout_gravity="center"
    android:visibility="gone"
    android:indeterminateDrawable="@drawable/loading_progress"></ProgressBar>

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:layout_gravity="center_horizontal|center_vertical"
    android:id="@+id/panel_inquiry"
>
   .....

</FrameLayout>

`

Java源代码:

私人ProgressBar progressBar;私人ProgressBar progressBar; private FrameLayout inquiryFrame;

inquiryFrame =(的FrameLayout)findViewById(R.id.panel_inquiry); 进度=(进度条)findViewById(R.id.inquiry_progress);

为了显示启动画面/在后台工作

private void callService(){

    progressBar.setVisibility(View.VISIBLE);
    inquiryFrame.setVisibility(View.GONE);
    new ServerReqAsync().execute(this
            , ServiceConstants.getRequestList());

}

完成后台作业后,只需查看活动默认布局 progressBar.setVisibility(View.GONE); inquiryFrame.setVisibility(View.VISIBLE);

由于