zoukankan      html  css  js  c++  java
  • android loading界面 及 处理

    主要实现效果:
    --------------
    程序启动,进入loading界面,
    loading界面显示背景图 及 进度条动画,
    后台启动线程进行相应的初始化操作,
    loading界面更新相应的初始化提示信息,
    初始化完成,打开并进入主界面,关闭loading界面,
    如果初始化超时,则弹出提示,退出程序。

    loading.java
    ------------

    package com.hello;

    import android.app.Activity;
    import android.content.Intent;
    import android.os.Bundle;
    import android.os.Handler;
    import android.os.Message;
    import android.view.Window;
    import android.widget.TextView;
    import android.widget.Toast;

    public class loading extends Activity {

    int MSG_INIT_OK = 1;
    int MSG_INIT_INFO = 2;
    int MSG_INIT_TIMEOUT = 9;
     
    boolean isTimeout = false;
     
    TextView tvInfo ;
     
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            requestWindowFeature(Window.FEATURE_NO_TITLE);
            setContentView(R.layout.loading);
            tvInfo = (TextView)findViewById(R.id.tvInfo);
            initSystem();
                
        }
        
        private void initSystem(){
         initThread();
         mHandler.postDelayed(timeOutTask,60000);//60秒超时
        }
        
        
        public Handler mHandler = new Handler(){     
         public void handleMessage(Message msg){
          if(msg.what == MSG_INIT_TIMEOUT){      
     
           if (mHandler != null && timeOutTask != null ){
            mHandler.removeCallbacks(timeOutTask);
           }
           
           Toast.makeText(loading.this, "timeout", Toast.LENGTH_LONG).show();
           loading.this.finish();
           
          }else if(msg.what == MSG_INIT_OK){
           
           if (mHandler != null && timeOutTask != null ){
            mHandler.removeCallbacks(timeOutTask);
           }
           
           startActivity(new Intent(getApplication(),MainActivity.class));
                    loading.this.finish();
          }else if(msg.what == MSG_INIT_INFO){

           String info = msg.obj.toString();
           tvInfo.setText(info);       
          }
         }     
        };
        
        Runnable timeOutTask = new Runnable() {
      public void run() {
       
       isTimeout = true;
       
       Message msg = Message.obtain();
       msg.what = MSG_INIT_TIMEOUT;
       mHandler.sendMessage(msg);
      }    
        };
        
        private void initThread(){
         new Thread(){
          public void run() {
           try {
            if(!isTimeout){
             sendInitInfo("初始化 step 1");         
             Thread.sleep(1000);//TODO 1
            }
            
            if(!isTimeout){
             sendInitInfo("初始化 step 2");
             Thread.sleep(2000);//TODO 2        
            }
            
            if(!isTimeout){
             sendInitInfo("初始化 step 3");
             Thread.sleep(3000);//TODO 2
            }
         
         if(!isTimeout){
          //初始化完成
          sendInitInfo("初始化完成");
             
          Message msg2 = Message.obtain();
          msg2.what = MSG_INIT_OK;
          mHandler.sendMessage(msg2);
         }
         
        } catch (InterruptedException e) {
         // TODO Auto-generated catch block
         e.printStackTrace();
        }
          }           
         }.start();
        }

        private void sendInitInfo(String info){
         Message msg1 = Message.obtain();
      msg1.what = MSG_INIT_INFO;
      msg1.obj = info;
      mHandler.sendMessage(msg1);
        }
    }


     res/layout/loading.xml
    ----------------------

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width
    ="match_parent" android:layout_height="match_parent"
     android:background
    ="@drawable/pf_loading_bg" android:orientation="horizontal">

     <TableLayout android:layout_width="match_parent"
      android:layout_height
    ="match_parent">
      <TableRow>
       <ProgressBar android:id="@+id/progressBar1"
        android:layout_width
    ="fill_parent" android:layout_height="wrap_content"
        android:paddingTop
    ="10dip" android:paddingLeft="70dip"
        android:paddingRight
    ="70dip" style="@style/loading">
       </ProgressBar>
      </TableRow>
      <TableRow>
       <TextView android:text="TextView" android:layout_height="wrap_content"
        android:id
    ="@+id/tvInfo" android:layout_width="wrap_content"></TextView>
      </TableRow>
     </TableLayout>
     
    </LinearLayout>

    res/values/mystyle.xml
    ----------------------

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <style name="loading" parent="@android:style/Widget.ProgressBar.Large">
            <item name="android:indeterminateDrawable">@anim/loading</item>
        </style>
    </resources>


    res/anim/loading.xml
    --------------------

    <?xml version="1.0" encoding="utf-8"?>
    <animation-list android:oneshot="false" 
    xmlns:android
    ="http://schemas.android.com/apk/res/android" >
    <item android:duration="100" android:drawable="@drawable/loading1" />
    <item android:duration="100" android:drawable="@drawable/loading2" />
    <item android:duration="100" android:drawable="@drawable/loading3" />
    </animation-list>

    res/drawable-hdpi/
    -------------------
    loading_bg.png ,
    loading1.png , loading2.png ,loading3.png


    AndroidMainfest.xml
    -------------------

    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package
    ="com.hello"
          android:versionCode
    ="1"
          android:versionName
    ="1.0">

        <application android:icon="@drawable/icon" android:label="@string/app_name">
            <activity android:name=".MainActivity"
                      android:label
    ="@string/app_name">
            </activity>
            
            <activity android:name=".loading">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>

        </application>
    </manifest>


     

  • 相关阅读:
    【664】日常记录
    【663】dataframe 删掉指定行或者列
    【662】TensorFlow GPU 相关配置
    【661】Python split 指定多个分隔符
    【660】TensorFlow 或者 keras 版本问题
    FFMPEG视音频编解码
    cpplint中filter参数
    升级pip之后出现sys.stderr.write(f“ERROR: {exc}“)
    特征点三角化恢复3D点
    VIO——陀螺仪零偏估计
  • 原文地址:https://www.cnblogs.com/freeliver54/p/2446503.html
Copyright © 2011-2022 走看看