首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Android >

两个activity 跳转当中用进度条。android

2013-10-27 
两个activity 跳转中间用进度条。android两个activity 前一个按扭点击事件执行查询,数据量比较大,所以跳转

两个activity 跳转中间用进度条。android
两个activity 前一个按扭点击事件执行查询,数据量比较大,所以跳转等待时间比较长,固想用进度条显示程序运行中...该如何实现?

[解决办法]
应该能看懂吧 


package com.zyq.main;

import java.util.ArrayList;

import android.app.Activity;
import android.app.Dialog;
import android.app.ListActivity;
import android.app.ProgressDialog;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.Toast;
public class ListProgressDemo extends ListActivity {
    private ArrayAdapter<String> adapter; 
    private ArrayList<String> data; 
 
    private static final int PROGRESS_DIALOG = 1; 
    private static final int STATE_FINISH = 1; 
    private static final int STATE_ERROR = -1; 
 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.main); 
 
        ((Button) findViewById(R.id.load_Handler)).setOnClickListener(new View.OnClickListener(){ 
 
            @Override 
            public void onClick(View view) { 
                data = null; 
                data = new ArrayList<String>(); 
 
                adapter = null; 
 
                showDialog(PROGRESS_DIALOG); 
                new ProgressThread(handler, data).start();
            } 
        }); 
    }
 
    @Override 
    protected Dialog onCreateDialog(int id) { 
        switch(id) { 
        case PROGRESS_DIALOG: 
                 return ProgressDialog.show(this, "",  
                   "Loading. Please wait...", true); 
 
        default: return null; 
        } 
    } 
 
    private class ProgressThread extends Thread { 
 
        private Handler handler; 
        private ArrayList<String> data; 
 
        public ProgressThread(Handler handler, ArrayList<String> data) { 
            this.handler = handler; 
            this.data = data; 
        } 
 
        @Override 
        public void run() { 
            for (int i=0; i<8; i++) { 
                data.add("ListItem"); //后台数据处理
                try { 
                    Thread.sleep(100); 
                }catch(InterruptedException e) { 
                     


                    Message msg = handler.obtainMessage(); 
                    Bundle b = new Bundle(); 
                    b.putInt("state", STATE_ERROR); 
                    msg.setData(b); 
                    handler.sendMessage(msg);  
                     
                } 
            } 
            Message msg = handler.obtainMessage(); 
            Bundle b = new Bundle(); 
            b.putInt("state", STATE_FINISH); 
            msg.setData(b); 
            handler.sendMessage(msg);
        } 
         
    } 
 
    // 此处甚至可以不需要设置Looper,因为Handler默认就使用当前线程的Looper
    private final Handler handler = new Handler(Looper.getMainLooper()) {
 
        public void handleMessage(Message msg) { // 处理Message,更新ListView
            int state = msg.getData().getInt("state"); 
            switch(state){ 
                case STATE_FINISH: 
                    dismissDialog(PROGRESS_DIALOG); 
                    Toast.makeText(getApplicationContext(), 
                            "加载完成!", 
                            Toast.LENGTH_LONG) 
                         .show(); 
 
                    adapter = new ArrayAdapter<String>(getApplicationContext(), 
                            android.R.layout.simple_list_item_1, 
                            data ); 
                             
                    setListAdapter(adapter); 
 
                    break; 
 
                case STATE_ERROR: 
                   dismissDialog(PROGRESS_DIALOG); 
                   Toast.makeText(getApplicationContext(), 
                           "处理过程发生错误!", 
                           Toast.LENGTH_LONG) 
                        .show(); 
 
                   adapter = new ArrayAdapter<String>(getApplicationContext(), 
                           android.R.layout.simple_list_item_1, 


                           data ); 
                            
                      setListAdapter(adapter); 
 
                      break; 
 
               default: 
 
            } 
        } 
    }; 


[解决办法]
package CityLife.View;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Matrix;
import android.graphics.Paint;
import android.graphics.Rect;
import android.graphics.Bitmap.Config;
import android.graphics.Paint.Style;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
public class StartView extends Activity
{
//
Paint paint = null;
Bitmap mSCBitmap = null;
Canvas mCanvas = null;
//
int a,b;
int startDrawBgX, startDrawBgY;
int startProgressX,startProgressY;
int startRectX ,startRectY ;
int rectW , rectH;
Bitmap bmpStartBg;
Bitmap bmpProgressBar;
Bitmap bmpStartBgL;
Bitmap bmpProgressBarL;
Boolean runA = true; 
//
private MyView myView;   
private Handler mHandler; 
    /** Called when the activity is first created. */
@Override
    public void onCreate(Bundle savedInstanceState) 
    { 
    //设置全屏
        this.requestWindowFeature(Window.FEATURE_NO_TITLE);
        this.getWindow().setFlags(WindowManager.LayoutParams.TYPE_STATUS_BAR,
                        WindowManager.LayoutParams.TYPE_STATUS_BAR);
        //
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        //
        bmpStartBg = BitmapFactory.decodeResource(getResources(), R.drawable.startbg);
        bmpProgressBar = BitmapFactory.decodeResource(getResources(), R.drawable.progressbg); 
        //
        int w = bmpStartBg.getWidth()*2;
        int h = bmpStartBg.getWidth();
        int width = bmpStartBg.getWidth();
        int height = bmpStartBg.getHeight();
        int newWidth = w;
        int newHeight = h;
        float scaleWidth = ((float) newWidth) / width;
        float scaleHeight = ((float) newHeight) / height;
        a = (int) scaleWidth;
        b = (int) scaleHeight;
        //
        Matrix matrix = new Matrix();
        matrix.postScale(a, b);
        //
        bmpStartBgL = Bitmap.createBitmap(bmpStartBg, 0, 0, bmpStartBg.getWidth(),bmpStartBg.getHeight(), matrix, true);
        bmpProgressBarL = Bitmap.createBitmap(bmpProgressBar, 0, 0, bmpProgressBar.getWidth(),bmpProgressBar.getHeight(), matrix, true);
        //
    startDrawBgY = (this.getWindowManager().getDefaultDisplay().getHeight() - bmpStartBgL.getHeight()) / 2 - 40;
    startDrawBgX = (this.getWindowManager().getDefaultDisplay().getWidth() - bmpStartBgL.getWidth()) / 2;
    //    


    startProgressY = (this.getWindowManager().getDefaultDisplay().getHeight() - bmpProgressBarL.getHeight()) / 2 - 15;
    startProgressX = (this.getWindowManager().getDefaultDisplay().getWidth()  - bmpProgressBarL.getWidth()) / 2;
    //
    startRectX = startProgressX;
    startRectY = startProgressY;
    rectW = startProgressX+bmpProgressBarL.getWidth();
    rectH = startProgressY+bmpProgressBarL.getHeight();
        //
        myView = new MyView(this); 
        setContentView(myView);
        //
        mSCBitmap = Bitmap.createBitmap(320, 480, Config.ARGB_8888);
        mCanvas = new Canvas();
        mCanvas.setBitmap(mSCBitmap);
        //
        mHandler = new Handler();   
        mHandler.post(update);   
}
private Runnable update = new Runnable()
{   
public void run()
{   
myView.update();
        mHandler.postDelayed(update, 100);   
}   
};
public class MyView extends View
{
public MyView(Context context)
{   
super(context);      
    }
public void update()
{   
postInvalidate();   
}
protected void onDraw(Canvas canvas) 
{
// super.onDraw(canvas);   
if(startRectX < startProgressX + bmpProgressBarL.getWidth())
{
startRectX = startRectX + 2;
//首先定义一个paint 
paint = new Paint();
// 设置样式-填充
paint.setStyle(Style.FILL);
paint.setColor(UsedColor.startBgColor);
// 绘制一个矩形 
mCanvas.drawRect(new Rect(0, 0, getWidth(), getHeight()), paint);
//输出背景图片
paint.setColor(UsedColor.progressBgColor); 
mCanvas.drawBitmap(bmpStartBgL, startDrawBgX, startDrawBgY, paint);
mCanvas.drawBitmap(bmpProgressBarL, startProgressX, startProgressY, paint);
mCanvas.drawRect(new Rect(startRectX, startRectY, rectW, rectH), paint);
canvas.drawBitmap(mSCBitmap, 0 ,0, paint);
}
else
{
if(runA)
        {
finish();
        //生成一个Intent对象
        Intent intent = new Intent();
        intent.putExtra("textIntent", "");
        intent.setClass(StartView.this, MainView.class);
        StartView.this.startActivity(intent);
        runA = false;
        }
    }  
    }

}

这是我做的一个项目的, 就是启动界面 开头的一个登陆的activity 然后进入主界面。

热点排行