public static Dialog createLoadingDialog(Context context){
LayoutInflater inflater = LayoutInflater.from(context);
View v = inflater.inflate(R.layout.loading_dialog, null);// 得到加载view
LinearLayout layout = (LinearLayout) v.findViewById(R.id.dialog_view);// 加载布局
// main.xml中的ImageView
ImageView spaceshipImage = (ImageView) v.findViewById(R.id.imgLoading);
SceneAnimation s = new SceneAnimation(spaceshipImage,imglist,1);
// Glide.with(context).load(R.drawable.et_loader).asGif().diskCacheStrategy(DiskCacheStrategy.SOURCE).into(spaceshipImage);
Dialog loadingDialog = new Dialog(context,R.style.loadingDialogStyle);// 创建自定义样式dialog
loadingDialog.setCancelable(true);// 不可以用“返回键”取消
loadingDialog.setContentView(layout, new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.FILL_PARENT,
LinearLayout.LayoutParams.FILL_PARENT));// 设置布局
return loadingDialog;
}
这是我对话框的代码;
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
dialog.dismiss();
}
@Override
protected void onPreExecute() {
super.onPreExecute();
dialog = LoadingDialog.createLoadingDialog(activity);
dialog.show();
}
PHPz2017-04-17 17:59:17
不要在子執行緒中呼叫UI
activity.runOnUiThread(new Runnable() {
@Override
public void run() {
dialog.show();
}
});
這樣試試
大家讲道理2017-04-17 17:59:17
我想實現這樣一個效果,在我請求api的時候,做出一個加載中的效果。 現在我的載入框顯示不了。
這是我的請求api的類別(NetworkTask),它繼承了AsyncTask; 我把所有請求都封裝在這裡。
這是我呼叫 NetworkTask 的 程式碼 。 建構函數傳的值是 需要呼叫的 api 名稱 和 目前 活動 (Activity) 。
onPostExecute 和 onPreExecute 都 被呼叫了,dialog 也 有值;
我聽說 子線程 不能 呼叫 ui ? 是因為這個問題嗎?所以我不能夠 呼叫 對話框 ?
以下 是我對話框的佈局 和 對話框的 java 程式碼
public class LoadingDialog {
private static int[] imglist = new int[]{
R.drawable.et_loading_00,
R.drawable.et_loading_01,
R.drawable.et_loading_02,
R.drawable.et_loading_03,
R.drawable.et_loading_04,
R.drawable.et_loading_05,
R.drawable.et_loading_06,
R.drawable.et_loading_07,
R.drawable.et_loading_08,
R.drawable.et_loading_09,
R.drawable.et_loading_10,
R.drawable.et_loading_11,
R.drawable.et_loading_12,
R.drawable.et_loading_13,
R.drawable.et_loading_14,
R.drawable.et_loading_15
};
public static Dialog createLoadingDialog(Context context){
LayoutInflater inflater = LayoutInflater.from(context);
View v = inflater.inflate(R.layout.loading_dialog, null);// 得到加载view
LinearLayout layout = (LinearLayout) v.findViewById(R.id.dialog_view);// 加载布局
// main.xml中的ImageView
ImageView spaceshipImage = (ImageView) v.findViewById(R.id.imgLoading);
SceneAnimation s = new SceneAnimation(spaceshipImage,imglist,1);
// Glide.with(context).load(R.drawable.et_loader).asGif().diskCacheStrategy(DiskCacheStrategy.SOURCE).into(spaceshipImage);
Dialog loadingDialog = new Dialog(context,R.style.loadingDialogStyle);// 创建自定义样式dialog
loadingDialog.setCancelable(true);// 不可以用“返回键”取消
loadingDialog.setContentView(layout, new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.FILL_PARENT,
LinearLayout.LayoutParams.FILL_PARENT));// 设置布局
return loadingDialog;
}
}