Android自定义Dialog样式

效果图:

核心代码:

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

时间: 2024-08-01 05:57:32

Android自定义Dialog样式的相关文章

转:android 自定义RadioButton样式

http://gundumw100.iteye.com/blog/1146527  上面这种3选1的效果如何做呢?用代码写? 其实有更简单的办法,忘了RadioButton有什么特性了吗? 我就用RadioButton实现了如上效果,其实很简单的. 首先定义一张background,命名为radio.xml,注意该background必须为xml样式的图片: Xml代码   <?xml version="1.0" encoding="utf-8"?> &

问题解决之Android自定义Dialog无法dismiss

场景: 点击ListView的一个Item,弹出自定义Dialog.在初始化Dialog时,将一个OnClickListener作为参数传递给Dialog.点击布局中设置的Button可以dismiss. 问题: Dialog布局中的两个Button设置了监听但事件没有触发到. 分析: 1.Button确实添加了OnClickListener事件,但没有被触发,有可能是点击的Button和注册监听的Button不是同一个对象,所以点击没有dismiss. 给出自定义Dialog代码和界面调用的代

android自定义Dialog

效果图: 修改系统默认的Dialog. 1,修改样式,在style.xml中添加一下代码 <style name="DialogTheme" parent="@android:style/Theme.Dialog"> <item name="android:windowBackground">@android:color/transparent</item> <item name="androi

Android自定义Dialog简单实例

做Android应用中,最缺少不了的就是自定义Dialog,对于系统默认提供的Dialog样式,一般都不复合我们应用的样式. 自定义Dialog需要3步骤即可: 1.主要的重写Dialog的Java类 2.清除Dialog Theme,在style.xml文件中加一个即可 3.使用方法 一.创建CustomPopDialog2.java类 package com.lenovocw.music.app.widget; import com.lenovocw.zhuhaizxt.R; import

android 自定义Dialog背景透明及显示位置设置

先贴一下显示效果图,仅作参考: 代码如下: 1.自定义Dialog public class SelectDialog extends AlertDialog{ public SelectDialog(Context context, int theme) {    super(context, theme);} public SelectDialog(Context context) {    super(context);} @Overrideprotected void onCreate(

android 自定义Dialog去除黑色边框

在自定义Dialog时显示的界面中老是有黑色的边框,下面就介绍使用style去除黑色边框方法. 首先在values/styles定义自定义样式: <style name="MyDialog" parent="@android:Theme.Dialog"> <item name="android:windowFrame">@null</item> <item name="android:windo

自定义dialog样式,自动弹出软件盘

开发中android自带dialog样式有时候不能满足我们的需求,这时候就需要自定义样式了,调用dialog的setView方法可以自定义布局,代码如下 final AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(context); View alertDialogView = View.inflate(context, R.layout.comment_input_layout, null); final Ale

Android自定义Dialog及其布局

 实际项目开发中默认的Dialog无法满足需求,需要自定义Dialog及其布局,并响应布局中控件的事件. 上效果图: 自定义Dialog,LogoutDialog: 要将自定义布局传入构造函数中,才能在Activity中通过 dialog.findviewbyid 获取到控件,否则返回null. public class LogoutDialog extends Dialog{ Context context; public LogoutDialog(Context context) { sup

Android自定义Dialog大小控制

Android应用开发中,无论是出于功能还是增加用户体验,弹出对话框(Dialog)进行一些操作提示是非常必要的.Android系统有自带的各种样式的对话框,但是根据项目需要可能从效果上满足不了需求,只时我们就要自定义对话框. 我们可以自定义Dialog的样式及展示布局,做出我们想要的对话框,但有的时候,我们做出的对话框要么显示太大,要么显得太小,或者是在不同的页面大小不一样,需要做个统一!此时我们就需要对Dialog大小进行控制,今天就简单地讲下这个.贴出代码,注释中有详细说明. 先是我们自定