編輯:關於Android編程
package lab.sodino.customtoast;
import lab.sodino.util.SodinoOut;
import android.content.Context;
import android.os.Handler;
import android.widget.Toast;
/**設計原理:在Toast顯示消失之前,再次調用Toast.show()進行接力。*/
public class CustomToast {
/** 用於測試 */
private int showCount = 1;
private Toast toast = null;
private Context context;
private Handler handler = null;
private Runnable toastThread = new Runnable() {
public void run() {
// 遞增的count明顯地表明是不斷運行新的Toast.show()的結果。
toast.setText(String.valueOf(showCount++) + "CustomToast");
toast.show();
// 3.3秒後再度重啟,設為4s的話將會看到Toast是斷斷續續地顯示著的。
handler.postDelayed(toastThread, 3300);
}
};
public CustomToast(Context context) {
this.context = context;
handler = new Handler(this.context.getMainLooper());
toast = Toast.makeText(this.context, "", Toast.LENGTH_LONG);
}
public void setText(String text) {
toast.setText(text);
}
public void showToast(final long length) {
handler.post(toastThread);
SodinoOut.out("Handler post at:" + System.currentTimeMillis());
Thread timeThread = new Thread() {
public void run() {
SodinoOut.out("TimeThread start at:"
+ System.currentTimeMillis());
try {
Thread.sleep(length);
} catch (InterruptedException e) {
e.printStackTrace();
}
CustomToast.this.stopToast();
SodinoOut
.out("Toast canceled at:" + System.currentTimeMillis());
}
};
timeThread.start();
}
public void stopToast() {
// 刪除Handler隊列中的仍處理等待的消息元素刪除
handler.removeCallbacks(toastThread);
// 撤掉仍在顯示的Toast
toast.cancel();
}
}
我們的手機通訊錄一般都有這樣的效果,如下圖:OK,這種效果大家都見得多了,基本上所有的android手機通訊錄都有這樣的效果。那我們今天就來看看這個效果該怎麼實現。一.概
時間選擇器(TimePicker)java.lang.Object;android.view.View;android.view.ViewGroup;android.wi
概述在開發過程中,經常會遇到系統中提供的控件無法滿足產品的設計需求,這時可能就需要考慮使用自定義的View來實現產品的設計細節了。對於自定義View,可以分為兩種,一種是
當一個應用在後台執行時,前台界面就不會有什麼信息,這時用戶根本不知道程序是否在執行、執行進度如何、應用程序是否遇到錯誤終止等,這時需要使用進度條來提示用戶後台程序執行的進