android - 請(qǐng)求網(wǎng)絡(luò)的時(shí)候出現(xiàn)自定義的對(duì)話框
問(wèn)題描述
public static Dialog createLoadingDialog(Context context){LayoutInflater inflater = LayoutInflater.from(context);View v = inflater.inflate(R.layout.loading_dialog, null);// 得到加載viewLinearLayout layout = (LinearLayout) v.findViewById(R.id.dialog_view);// 加載布局// main.xml中的ImageViewImageView 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);// 創(chuàng)建自定義樣式dialogloadingDialog.setCancelable(true);// 不可以用“返回鍵”取消loadingDialog.setContentView(layout, new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT,LinearLayout.LayoutParams.FILL_PARENT));// 設(shè)置布局return loadingDialog; }
這是我對(duì)話框的代碼;
@Override protected void onPostExecute(String s) {super.onPostExecute(s);dialog.dismiss(); }@Override protected void onPreExecute() {super.onPreExecute();dialog = LoadingDialog.createLoadingDialog(activity);dialog.show(); }
問(wèn)題解答
回答1:不要在子線程中調(diào)用UI
activity.runOnUiThread(new Runnable() { @Override public void run() {dialog.show(); }});
這樣試試
回答2:我想實(shí)現(xiàn)這樣一個(gè)效果,在我請(qǐng)求api的時(shí)候,做出一個(gè)加載中的效果。 現(xiàn)在我的加載框顯示不了。
這是我的請(qǐng)求api的類(NetworkTask),它繼承了AsyncTask; 我把所有請(qǐng)求都封裝在這里。
這是我調(diào)用 NetworkTask 的 代碼 。 構(gòu)造函數(shù)傳的值是 需要調(diào)用的 api 名稱 和 當(dāng)前 活動(dòng) (Activity) 。
onPostExecute 和 onPreExecute 都 被調(diào)用了,dialog 也 有值;
我聽說(shuō) 子線程 不能 調(diào)用 ui ? 是因?yàn)檫@個(gè)問(wèn)題嗎?所以我不能夠 調(diào)用 對(duì)話框 ?
以下 是我對(duì)話框的布局 和 對(duì)話框的 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);// 得到加載viewLinearLayout layout = (LinearLayout) v.findViewById(R.id.dialog_view);// 加載布局// main.xml中的ImageViewImageView 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);// 創(chuàng)建自定義樣式dialogloadingDialog.setCancelable(true);// 不可以用“返回鍵”取消loadingDialog.setContentView(layout, new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT,LinearLayout.LayoutParams.FILL_PARENT));// 設(shè)置布局return loadingDialog; }}回答3:
有個(gè)重寫的方法 onProgressUpdate,把對(duì)話框?qū)懺诶锩?/p>
相關(guān)文章:
1. javascript - ES6規(guī)范下 repeat 函數(shù)報(bào)錯(cuò) Invalid count value2. javascript - 使用form進(jìn)行頁(yè)面跳轉(zhuǎn),但是很慢,如何加一個(gè)Loading?3. angular.js - 輸入郵箱地址之后, 如何使其自動(dòng)在末尾添加分號(hào)?4. javascript - JS 里面的 delete object.key 到底刪除了什么?5. docker-machine添加一個(gè)已有的docker主機(jī)問(wèn)題6. 管理員信息修改時(shí)的密碼問(wèn)題7. java如何生成token?8. javascript - 如何使用nodejs 將.html 文件轉(zhuǎn)化成canvas9. javascript - 后臺(tái)管理系統(tǒng)左側(cè)折疊導(dǎo)航欄數(shù)據(jù)較多,怎么樣直接通過(guò)搜索去定位到具體某一個(gè)菜單項(xiàng)位置,并展開當(dāng)前菜單10. javascript - html5的data屬性怎么指定一個(gè)function函數(shù)呢?
