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();
}
大家讲道理2017-04-17 17:59:17
このような効果を実現したいのですが、API をリクエストするときにローディング効果を作成します。 ローディングボックスが表示されなくなりました。
これは私のリクエスト API クラス (NetworkTask) で、AsyncTask を継承し、すべてのリクエストをここにカプセル化します。
これは NetworkTask を呼び出すためのコードです。 コンストラクターによって渡される値は、呼び出されるAPI名と現在のアクティビティ(Activity)です。
onPostExecute と onPreExecute は両方とも呼び出され、ダイアログにも値があります。
子スレッドは ui を呼び出すことができないと聞きましたが? この問題のせいでしょうか?ではダイアログを呼び出すことができないのでしょうか?以下はダイアログ ボックスのレイアウトとダイアログ ボックスの Java コードです
リーリー