0
点赞
收藏
分享

微信扫一扫

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


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

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

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

实现思路如下:
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:
技术的积累,就是从点滴开始积累。。。加油!!!我是菜鸟,我怕谁。。。


举报

相关推荐

0 条评论