Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android圓線按鈕帶進度顯示

Android圓線按鈕帶進度顯示

編輯:關於Android編程

先看效果圖:

\

 

\\\

 

 

這是一個在github上的開源控件按鈕View(點擊此處查看),同時帶有進度。

使用方法:把該項目從github上下載下來導入到eclipse,然後作為庫,接下來在其他項目中直接引用即可。然而,我感覺原生項目中的個別細節代碼不是太完善,我在它的MasterLayout.java類增加了一些字段和方法:

 

// 增加的值,by Phil
	public static final int START = 1, PAUSE = 2, COMPLETE = 3;

	// 增加的方法,by Phil
	public int getState() {
		return flg_frmwrk_mode;
	}

 

新增加的值和方法主要用於判斷當前View的狀態。

現在給出一個經過我改進後的使用實例:

 

package zhangphil.progressbutton;

import com.thbs.progressbutton.MasterLayout;

import android.support.v7.app.ActionBarActivity;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.SystemClock;

public class MainActivity extends ActionBarActivity {

	private MasterLayout masterLayout;
	private LongTimeOperationTask mTask;

	// 顯示進度文字
	private TextView tv;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		masterLayout = (MasterLayout) findViewById(R.id.progress);
		masterLayout.setOnClickListener(new View.OnClickListener() {

			@Override
			public void onClick(View v) {

				// 必須有該方法,該方法是動畫進度的開始。
				// 當用戶點擊該按鈕後立即執行。
				masterLayout.animation();

				// 此處的判斷代碼是根據當前的View類型判斷的。
				// 如果當前View是開始的那個icon,並且用戶點擊了,那麼就開始。
				// 在次完成用戶的耗時操作,比如下載任務等。
				if (masterLayout.getState() == MasterLayout.START) {
					Toast.makeText(MainActivity.this, "開始...",
							Toast.LENGTH_SHORT).show();

					mTask = new LongTimeOperationTask();
					mTask.execute();
				}

				// 用戶點擊了 停止 按鈕。取消任務。
				if (masterLayout.getState() == MasterLayout.PAUSE) {
					if (mTask != null
							&& mTask.getStatus() == AsyncTask.Status.RUNNING)
						mTask.cancel(true);

					// reset()是將該空間復位到最初始化的階段。
					masterLayout.reset();

					Toast.makeText(MainActivity.this, "停止!", Toast.LENGTH_SHORT)
							.show();
				}

				// 此處的View控件顯示是一個 對號 icon。
				if (masterLayout.getState() == MasterLayout.COMPLETE) {
					Toast.makeText(MainActivity.this, "完成!", Toast.LENGTH_SHORT)
							.show();
				}
			}
		});

		tv = (TextView) findViewById(R.id.tv);
	}

	private class LongTimeOperationTask extends
			AsyncTask {

		@Override
		protected void onPreExecute() {

		}

		@Override
		protected String doInBackground(final String... args) {

			// 進度以百分制標識。
			for (int i = 0; i <= 100; i++) {
				SystemClock.sleep(100);

				publishProgress(i);
			}

			return null;
		}

		@Override
		protected void onProgressUpdate(Integer... progress) {

			// 此處的 setupprogress 更新圓形按鈕的進度。
			masterLayout.cusview.setupprogress(progress[0]);

			// 額外的一個TextView顯示進度。
			tv.setText(progress[0] + " %");
		}
	}
}

 

activity_main.xml文件:

 



    

    

 

 


  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved