现在的位置: 首页 > 综合 > 正文

android 毕设点滴之显示进度条(二)

2018年05月26日 ⁄ 综合 ⁄ 共 4524字 ⁄ 字号 评论关闭

前言:

先解释这里的进度条的用处 , 当一个页面切换到另外一个页面, 需要从后台加载些载入页面所需的数据, 此时显示的 一个对话框或者进度条!

举个栗子:

当你打开一个web站点, 你能忍受 网页从上到下 一点一点, 要么冒出一点要么冒出一点这么感受嘛!!!

然而当你打开的另一个web站点, 该站点使用一个很友好的 进度条效果 ,我想这起码不会使用户对此感到太大的反感!

IProgress

public interface IProgress {

	public boolean isAvailable();		

	public void startProgress();

	public void finishProgress();

	public void updateProgressMessage(CharSequence message);

	public void updateProgress(Integer value);

	public void setIndeterminate(boolean indeterminate);
}

一个简单的进度条效果的实现类 SimpleDialogProgress,

public class SimpleDialogProgress implements IProgress {

	private Context context = null;
	private ProgressDialog progressDialog = null;
	private CharSequence title = "";
	private CharSequence message = "";

	public SimpleDialogProgress(Context context) {
		this.context = context;
		this.message = context.getString(R.string.progress_operating);
	}

	public SimpleDialogProgress(Context context, CharSequence title) {
		this.context = context;
		this.title = title;
		this.message = context.getString(R.string.progress_operating);
	}

	public SimpleDialogProgress(Context context, CharSequence title,
			CharSequence message) {
		this.context = context;
		this.title = title;
		this.message = message;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see com.ishow.beycare.task.IProgress#isAvailable()
	 */

	public boolean isAvailable() {
		// TODO Auto-generated method stub
		return progressDialog != null;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see com.ishow.beycare.task.IProgress#start(java.lang.CharSequence)
	 */

	public void startProgress() {
		// TODO Auto-generated method stub
		progressDialog = ProgressDialog.show(context, title, message, true,
				false);

	}

	public void finishProgress() {
		if (isAvailable()) {
			progressDialog.dismiss();
		}

	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see com.ishow.beycare.task.IProgress#updateMessage(java.lang.String)
	 */

	public void updateProgressMessage(CharSequence message) {
		// TODO Auto-generated method stub
		if (isAvailable()) {
			progressDialog.setMessage(message);
		}

	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see com.ishow.beycare.task.IProgress#updateProgress(java.lang.Integer)
	 */

	public void updateProgress(Integer value) {
		// TODO Auto-generated method stub
		if (isAvailable()) {
			progressDialog.setProgress(value);
		}
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see com.ishow.beycare.task.IProgress#setIndeterminate(boolean)
	 */
	
	public void setIndeterminate(boolean indeterminate) {
		// TODO Auto-generated method stub
		if (isAvailable()) {
			progressDialog.setIndeterminate(indeterminate);
		}

	}

}

TaskHost

public class TaskHost {
    
    public void onCancelled(int requestCode) {

    }

    public void onPostExecute(int requestCode, String result) {

    }

    public void onPreExecute(int requestCode) {

    }
}

BaseTask

public abstract class BaseTask extends AsyncTask<Void, Integer, String> {
	
	protected IProgress progress;
	
	protected TaskHost taskHost;
	
	protected int requestCode;

	public BaseTask(int requestCode) {
		// TODO Auto-generated constructor stub
	}

	
	public IProgress getProgress() {
		return progress;
	}

	public void setProgress(IProgress progress) {
		this.progress = progress;
	}

	
	
	public TaskHost getTaskHost() {
		return taskHost;
	}

	public void setTaskHost(TaskHost taskHost) {
		this.taskHost = taskHost;
	}
	

	public int getRequestCode() {
		return requestCode;
	}

	public void setRequestCode(int requestCode) {
		this.requestCode = requestCode;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see android.os.AsyncTask#onPreExecute()
	 */
	@Override
	protected void onPreExecute() {
		// 调用了接口的相应的方法
		if (progress != null) {
			progress.startProgress();		
			progress.updateProgress(0);	
		}
		if (taskHost != null) {
			taskHost.onPreExecute(requestCode);
		}
		super.onPreExecute();
	}

	protected void onPostExecute(String result) {
		super.onPostExecute(result);
		
		if (taskHost != null) {
			taskHost.onPostExecute(requestCode, result);
		}
		if (progress != null) {
			progress.updateProgress(100);
			progress.finishProgress();
		}
	}

	@Override
	protected abstract String doInBackground(Void... params);
}

ContextTask

public class ContextTask extends BaseTask{

	
	public ContextTask(int requestCode) {
		super(requestCode);
		// TODO Auto-generated constructor stub
	}

	@Override
	protected String doInBackground(Void... params) {
		// TODO Auto-generated method stub
		
		String result = "该方法并不运行在UI线程当中,主要用于异步操作,所以在该方法中不能对UI当中的空间进行设置和修改 ";
		
		return result;
	}


	@Override
	protected void onPreExecute() {
		// TODO Auto-generated method stub
		super.onPreExecute();
	}


	@Override
	protected void onPostExecute(String result) {
		// TODO Auto-generated method stub
		super.onPostExecute(result);
		
	}
}

UI中调用

public class ListContainActivity extends Activity{

	private  TabHost tabHost ;
	
	ContextTask contextTask ;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		this.requestWindowFeature(Window.FEATURE_NO_TITLE);	
		
		setContentView(R.layout.showcontain);

		

contextTask = new ContextTask(0);
			
			TaskHost taskHost = new TaskHost(){
	
				@Override
				public void onPreExecute(int requestCode) {
					// TODO Auto-generated method stub
					super.onPreExecute(requestCode);
				}
				
			};
			contextTask.setTaskHost(taskHost);
			contextTask.setProgress(new SimpleDialogProgress(this, "加载LIST", "正在加载中..."));
			contextTask.execute();		


	}





抱歉!评论已关闭.