android handle显示加载框
今天,講講使用handle顯示加載框,當(dāng)任務(wù)完成后,隱藏加載框。
第一種代碼:
?? 1. 定義常量和加載框
??? private final static int SEARCH_PREPARE = 100;
??? private final static int SEARCH_FINISHED = 120;
??? private Dialog exitDialog;
?
? 2.定義handle變量
? private Handler handler = new Handler() {
??????? @Override
??????? public void handleMessage(Message msg) {
??????????? super.handleMessage(msg);
??????????? switch (msg.what) {
??????????????? /* 隱藏+號 顯示進度條 */
??????????????? case SEARCH_PREPARE: {
??????????????????? if (exitDialog == null) {???????????????????????? //顯示一個加載框
??????????????????????? exitDialog = new Dialog(mContext, R.style.CommonDialogStyle);
??????????????????????? exitDialog.setContentView(R.layout.dialog_layout);
??????????????????????? exitDialog.getWindow().setBackgroundDrawableResource(R.color.cache);
??????????????????????? exitDialog.setCancelable(false);
??????????????????? }
??????????????????? exitDialog.show();
??????????????????? if (edts.getText().toString().equals("P6S")){
??????????????????????? handler.postDelayed(new Runnable() {
??????????????????????????? @Override
??????????????????????????? public void run() {
??????????????????????????????? if (exitDialog.isShowing()) {
??????????????????????????????????? handler.sendEmptyMessage(SEARCH_FINISHED);
??????????????????????????????? }
??????????????????????????? }
??????????????????????? }, 10 * 1000);
??????????????????? }else {
??????????????????????? handler.postDelayed(new Runnable() {
??????????????????????????? @Override
??????????????????????????? public void run() {
??????????????????????????????? if (exitDialog.isShowing()) {
??????????????????????????????????? handler.sendEmptyMessage(SEARCH_FINISHED);
??????????????????????????????? }
??????????????????????????? }
??????????????????????? }, 5 * 1000);
??????????????????? }
??????????????? }
??????????????? break;
??????????????? /* 隱藏進度條 */
??????????????? case SEARCH_FINISHED: {
??????????????????? if (exitDialog.isShowing()) {
??????????????????????? Toast.makeText(mContext,R.string.channel_request_timeout,Toast.LENGTH_LONG).show();
??????????????????????? exitDialog.dismiss();
??????????????????? }
??????????????? }
??????????????? break;
??????????? }
??????? }
??? };
?? 3.使用時直接調(diào)用代碼handler.sendEmptyMessage(SEARCH_PREPARE);這樣,如果任務(wù)完成自己取消加載框。如果沒有完成,5秒后也會自己取消加載框。
第二種代碼:
???? 第一種代碼有個缺點,當(dāng)多次請求時,第一次的5秒后的判斷加載框顯示會與后面的沖突,導(dǎo)致邏輯出現(xiàn)錯誤。第一種代碼只適合不連續(xù)顯示加載框的時候可以調(diào)用。
?1. 定義常量和加載框
??? private final static int SEARCH_PREPARE = 100;
??? private final static int SEARCH_FINISHED = 120;
??? private Dialog exitDialog;
? 2.定義handle變量
private Handler handler = new Handler() {
??@Override
??public void handleMessage(Message msg) {
???super.handleMessage(msg);
???switch (msg.what) {
??????????????? /* 隱藏+號 顯示進度條 */
????case ADD_PREPARE: {
?????if (exitDialog == null) {???????????????????????? //顯示一個加載框
??????exitDialog = new Dialog(DeviceAddActivity.this, R.style.CommonDialogStyle);
??????exitDialog.setContentView(R.layout.dialog_layout);
??????exitDialog.getWindow().setBackgroundDrawableResource(R.color.cache);
??????exitDialog.setCancelable(false);
?????}
?????exitDialog.show();
?????handler.postDelayed(runnable, 5 * 1000);
????}
????break;
???? /* 隱藏進度條 */
????case ADD_FINISHED: {
?????if (exitDialog.isShowing()) {
??????exitDialog.dismiss();
?????}
????}
???}
??}
?};
3定義runnable變量
private? Runnable runnable=new Runnable() {
??@Override
??public void run() {
???if (exitDialog.isShowing()) {
????handler.sendEmptyMessage(ADD_FINISHED);
???}
??}
?};
?4.使用時直接調(diào)用代碼handler.sendEmptyMessage(SEARCH_PREPARE);
這樣,如果任務(wù)完成自己取消加載框。并且移除runnable。具體代碼:
????????????????????? if (exitDialog != null && exitDialog.isShowing()) {
????exitDialog.dismiss();
????handler.removeCallbacks(runnable);???? //去掉此次的加載框的監(jiān)聽
???}
如果沒有完成,5秒后也會自己取消加載框。
android 使用handle顯示加載框就講完了。
就這么簡單。
總結(jié)
以上是生活随笔為你收集整理的android handle显示加载框的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android requestFocus
- 下一篇: android StringBuffer