AndroidUI之三分钟教你实现效果简单大气的Dialog提示框

在项目当中不可避免会使用一些自定义的提示框,如下图所示:

这里写图片描述

个人感觉这个还不错,,,全屏显示,,,
下面,让我们一起学习,如何实现当前效果。。。

实现思路如下:
1. 首先自定义一个dialog类,在类中设置当前dialog样式,居中方式等;
2. 代码中应用即可。

那么,我们先开始第一步:自定义一个dialog类:

package com.example.hlq.weight;

import com.example.hlq.R;

import android.app.Dialog;
import android.content.Context;
import android.view.Gravity;
import android.widget.TextView;

public class MyProgressDialog extends Dialog{

    //将当前上下文对象以及要提示的信息传入进来
    //R.style.CustomProgressDialog样式在本地style下定义
    public MyProgressDialog(Context context, String msg) {
        this(context, R.style.CustomProgressDialog, msg);
    }


    public MyProgressDialog(Context context, int theme, String msg) {
        super(context, theme);
        this.setContentView(R.layout.my_dialog);
        //设置点击外部无效
        this.setCanceledOnTouchOutside(false);
        //设置点击返回键可以dismiss
        this.setCancelable(true);
        //设置居中显示
        this.getWindow().getAttributes().gravity = Gravity.CENTER;
        //初始化文本框
        TextView tvMsg = (TextView) this.findViewById(R.id.id_tv_loadingmsg);
        //设置文本框内提示信息
        tvMsg.setText(msg);
    }

    public MyProgressDialog setMessage(String msg){
        TextView tvMsg = (TextView) this.findViewById(R.id.id_tv_loadingmsg);
        tvMsg.setText(msg);
        return this;
    }

    @Override
    public void onWindowFocusChanged(boolean hasFocus) {
        if (!hasFocus) {
            dismiss();
        }
    }

}

接下来要在style中定义当前dialog样式:

<style name="CustomDialog" parent="@android:style/Theme.Dialog">
        <item name="android:windowFrame">@null</item>
        <item name="android:windowIsFloating">true</item>
        <item name="android:windowContentOverlay">@null</item>
        <item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item>
        <item name="android:windowSoftInputMode">stateUnspecified|adjustPan</item>
    </style>

    <style name="CustomProgressDialog" parent="@style/CustomDialog">
        <item name="android:windowBackground">@android:color/transparent</item>
        <item name="android:windowNoTitle">true</item>
    </style>

在Drawable下创建一个动画文件:

<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
    android:oneshot="false" >

    <item
        android:drawable="@drawable/ic_loading_white_01"
        android:duration="83"/>
    <item
        android:drawable="@drawable/ic_loading_white_02"
        android:duration="83"/>
    <item
        android:drawable="@drawable/ic_loading_white_03"
        android:duration="83"/>
    <item
        android:drawable="@drawable/ic_loading_white_04"
        android:duration="83"/>
    <item
        android:drawable="@drawable/ic_loading_white_05"
        android:duration="83"/>
    <item
        android:drawable="@drawable/ic_loading_white_06"
        android:duration="83"/>
    <item
        android:drawable="@drawable/ic_loading_white_07"
        android:duration="83"/>
    <item
        android:drawable="@drawable/ic_loading_white_08"
        android:duration="83"/>
    <item
        android:drawable="@drawable/ic_loading_white_09"
        android:duration="83"/>
    <item
        android:drawable="@drawable/ic_loading_white_10"
        android:duration="83"/>
    <item
        android:drawable="@drawable/ic_loading_white_11"
        android:duration="83"/>
    <item
        android:drawable="@drawable/ic_loading_white_12"
        android:duration="83"/>

</animation-list>

最后一步,在activity中调用。。。

package com.example.hlq;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

import com.example.hlq.weight.MyProgressDialog;

public class MainActivity extends Activity {

    private boolean isDiaLogshow=false;
    private MyProgressDialog myProgressDialog;
    private Button btn;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        myProgressDialog=new MyProgressDialog(MainActivity.this, "Loading");
        btn=(Button) findViewById(R.id.btn);
        //这里我写的是点击按钮之后弹出diglog
        btn.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                showDiaLog("正在加载");
            }
        });
    }

    /**
     * 弹出DiaLog
     * 这块个人建议可以放到BaseActivity中,如果diglog使用比较多时
     * @param message
     *            2016-4-19
     */
    protected void showDiaLog(String message) {
        if (message != null || !message.equals("")) {
            myProgressDialog.setMessage(message);
        }
        myProgressDialog.show();
        isDiaLogshow = true;
    }

    /**
     * 释放DiaLog
     * 这块个人建议可以放到BaseActivity中,如果diglog使用比较多时
     * 2016-4-19
     */
    protected void dismissDiaLog() {
        if (isDiaLogshow == true) {
            myProgressDialog.dismiss();
            isDiaLogshow = false;
        }
    }

}

好了,,,一个自定义dialog就这样实现了,,,

PS:
技术的积累,就是从点滴开始积累。。。加油!!!我是菜鸟,我怕谁。。。


项目中所使用到的图片如下:
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

HLQ_Struggle CSDN认证博客专家 Android Flutter 伪前端
一枚96年Android鼠,热衷分享个人笔记,希望帮助一些小伙伴。目前除了Android老本行,涉猎Flutter、伪前端等,欢迎一起交流学习~
已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 撸撸猫 设计师:C马雯娟 返回首页