通过对support v4/v7/v13的区别我们了解到v7最低兼容Android2.1版本的系统,所以我们使用Dialog可以这样导入:
import android.support.v7.app.AlertDialog;
//对话框
private static AlertDialog alertDialog;
/**
* 显示单独按钮的Dialog
*/
public static void showSimpleDialog(Activity context, String title, String message , DialogInterface.OnClickListener clickListener) {
AlertDialog.Builder builder =new AlertDialog.Builder(context);
builder.setCancelable(true);
builder.setTitle(title);
builder.setMessage(message);
//监听事件
if (clickListener != null){
builder.setPositiveButton("确认",clickListener);
}else{
builder.setNegativeButton("知道了",null);
}
alertDialog=builder.create();
alertDialog.setCanceledOnTouchOutside(false);
if(!((Activity) context).isFinishing()){
alertDialog.show();
}
}
/**
* 显示双按钮Dialog
*/
public static void showDoubleDialog(Activity context, String title, String message , DialogInterface.OnClickListener clickListener) {
AlertDialog.Builder builder =new AlertDialog.Builder(context);
builder.setCancelable(true);
builder.setTitle(title);
builder.setMessage(message);
//监听事件
if (clickListener != null){
builder.setPositiveButton("确认",clickListener);
}else{
builder.setPositiveButton("确认",null);
}
builder.setNegativeButton("取消",null);
alertDialog=builder.create();
alertDialog.setCanceledOnTouchOutside(false);
if(!context.isFinishing()){
alertDialog.show();
}
}
进度条对话框,需要自定义布局:
//进度条
private static Dialog progressDialog;
/**
* 显示进度条
* @param context
* @param msg
*/
public static void showProgress(Activity context,String msg){
if (progressDialog == null){
progressDialog = new Dialog(context , R.style.loadingdialog);
progressDialog.setContentView(R.layout.loading_dialog);
progressDialog.setCanceledOnTouchOutside(false);
} else if (progressDialog.isShowing()){
progressDialog.dismiss();
}
if(!context.isFinishing())
{
progressDialog.show();
}
}
/**
* 关闭进度条
*/
public static void dismissProgress(){
if (progressDialog != null ){
if (progressDialog.isShowing()){
progressDialog.dismiss();
}
}
}
其中布局:R.layout.loading_dialog:<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout
android:layout_width="150dp"
android:layout_height="130dp"
android:layout_centerInParent="true"
android:orientation="vertical"
android:gravity="center"
android:background="#ab0e0e0e">
<ProgressBar
android:id="@+id/pro"
android:indeterminateTintMode="src_atop"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:indeterminateDrawable="@drawable/progressbar_bg"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:text="加载中..."/>
</LinearLayout>
</RelativeLayout>
其中ProgressBar的Style.Theme: R.style.loadingdialog
<style name="loadingdialog" parent="@android:style/Theme.Dialog">
<item name="android:windowFrame">@null</item><!-- Dialog的边框,@null标识无 -->
<item name="android:windowIsFloating">true</item><!--是否浮现在activity之上-->
<item name="android:windowIsTranslucent">false</item><!--半透明-->
<item name="android:windowNoTitle">true</item><!--无标题-->
<item name="android:windowBackground">@color/transparent</item><!--背景透明-->
<item name="android:backgroundDimEnabled">false</item><!--模糊-->
</style>
其中ProgressBar属性 android :indeterminateDrawable= "@drawable/progressbar_bg"
<?xml version="1.0" encoding="utf-8"?>
<animated-rotate
xmlns:android="http://schemas.android.com/apk/res/android"
android:pivotX="50%" android:pivotY="50%"
android:fromDegrees="0"
android:toDegrees="360">
<shape
android:shape="ring"
android:innerRadiusRatio="3"
android:thicknessRatio="10"
android:useLevel="false">
<gradient
android:type="sweep"
android:useLevel="false"
android:startColor="#ffa500"
android:centerColor="#FF7121"
android:centerY="0.50"
android:endColor="#FFFF00" />
</shape>
</animated-rotate>