效果图:
核心代码:
package com.zms.toast; import android.app.Dialog; import android.content.Context; import android.content.res.Resources; import android.os.Handler; import android.os.Message; import android.util.DisplayMetrics; import android.view.Gravity; import android.view.Window; import android.view.WindowManager; import android.widget.TextView; import java.util.Random; /** * Created by AlexZhou on 2015/3/2. * 14:51 */ public class CustomDialog extends Dialog { private static int defaultWidth = 200; private static int defaultHeight = 160; private int progress = 0; private TextView dialogText; public CustomDialog(Context context) { super(context); } public CustomDialog(Context context, int layout, int style) { this(context, defaultWidth, defaultHeight, layout, style); } public float getDensity(Context context) { Resources res = context.getResources(); DisplayMetrics dm = res.getDisplayMetrics(); return dm.density; } public CustomDialog(Context context, int width, int height, int layout, int style) { super(context, style); // 设置内容 setContentView(layout); // 设置窗口属性 Window window = getWindow(); WindowManager.LayoutParams params = window.getAttributes(); // 设置宽度、高度、密度、对齐方式 float density = getDensity(context); params.width = (int) (width * density); params.height = (int) (height * density); params.gravity = Gravity.CENTER; window.setAttributes(params); dialogText = (TextView) findViewById(R.id.dialogText); new Thread(new TimeThread()).start(); } final Handler timeHandler = new Handler() { public void handleMessage(Message msg) { switch (msg.what) { case 1: if (progress < 100) { progress = progress + new Random().nextInt(10); if (progress <= 100) { dialogText.setText("更新进度" + progress + "%"); } else { dialogText.setText("更新进度100%"); } } else { dialogText.setText("更新完成"); dismiss(); } } super.handleMessage(msg); } }; public class TimeThread implements Runnable { @Override public void run() { while (true) { try { Thread.sleep(1000); Message message = new Message(); message.what = 1; timeHandler.sendMessage(message); } catch (Exception e) { e.printStackTrace(); } } } } @Override public void dismiss() { super.dismiss(); } }
转载请注明出处:周木水的CSDN博客 http://blog.csdn.net/zhoumushui
我的GitHub:周木水的GitHub https://github.com/zhoumushui
原文地址:http://blog.csdn.net/zhoumushui/article/details/44019335