Android之Toast的高級使用


Toast作為提示,一般在用戶進行某個操作之後出現,告訴用戶結果或給用戶提示,過一會就自動消失,不會阻礙用戶操作。


1.一般使用


Toast.makeText(MainActivity.this, "testContent", Toast.LENGTH_SHORT).show();

參數1:上下文。參數二:提示內容。參數三:顯示時長。


Toast.LENGTH_SHORT是短時間內。Toast.LENGTH_LONG則與之相反。


2.高級使用(自定義佈局,控制顯示位置、文字大小,避免多次點擊多次顯示,主線程子線程)


a.封裝


public class MyUtil {

/**
* Toast
*/
private static Toast toast;
public static void showToast(final String msg) {
//主線程
if ("main".equals(Thread.currentThread().getName())) {
creatToast(msg);
} else {
//子線程
SpUtil.getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
creatToast(msg);
}
});
}
}

/**
* 避免多次點擊多次顯示
* @param msg
*/
private static void creatToast(String msg) {
if(toast==null){
//創建
toast = Toast.makeText(SpUtil.getActivity(), msg, Toast.LENGTH_SHORT);
}else{
//直接賦值
toast.setText(msg);
}
//引用自定義佈局
LinearLayout linearLayout = (LinearLayout) toast.getView();
TextView messageTextView = (TextView) linearLayout.getChildAt(0);
//設置顯示位置
toast.setGravity(Gravity.CENTER, 0, 0);
//設置文字大小
messageTextView.setTextSize(15);
toast.show();
}

/**
* 取消,頁面跳轉之後,上一個頁面的toast應該立馬消失,此方法在Activity的onDestroy中調用即可
*/
public static void cancelToast() {
if(toast!=null){
toast.cancel();
}
}

}

b.使用


在Activity中或者BaseActivity的onCreate中加上


SpUtil.setActivity(this);  

關於SpUtil的使用可查看上一篇文章:http://blog.csdn.net/yechaoa/article/details/60572384


兩個util配合使用效果更佳,onCreate中加一次就行瞭。


顯示:


MyUtil.showToast("支付成功");

取消:


MyUtil.cancelToast();

0 個評論

要回覆文章請先登錄註冊