1.自定义progressDialog的theme:

    <!-- 自定义Dialog -->    <style name="Custom_Progress" parent="@android:style/Theme.Dialog">        <!-- 无边框 -->        <item name="android:windowFrame">@null</item>        <!-- 是否浮现在activity之上 -->        <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>        <item name="android:windowBackground">@android:color/transparent</item>        <item name="android:windowNoTitle">true</item>        <!--无遮罩效果-->        <item name="android:backgroundDimEnabled">false</item>    </style>

2.自定义的CustomProgressDialog extends Dialog:

package com.ylj.progressdialogdemo;import android.app.Dialog;import android.content.Context;import android.view.Gravity;import android.view.View;import android.view.WindowManager;import android.widget.TextView;  public class CustomProgressDialog extends Dialog {  private static CustomProgressDialog dialog;public CustomProgressDialog(Context context) {          super(context);      }        public CustomProgressDialog(Context context, int theme) {          super(context, theme);      }            /**      * 弹出自定义ProgressDialog      *       * @param context      *            上下文      * @param message      *            提示      * @param cancelable      *            是否可取消      * @param cancelListener      *            按下返回键监听      * @return      */      public static CustomProgressDialog show(Context context, CharSequence message, boolean cancelable, OnCancelListener cancelListener) {     if(dialog == null){    dialog = new CustomProgressDialog(context, R.style.Custom_Progress);      }        dialog.setTitle("");          dialog.setContentView(R.layout.layout_progress_dialog);                  if (message == null || message.length() == 0) {              dialog.findViewById(R.id.tv_message).setVisibility(View.GONE);          } else {              TextView tv_message = (TextView) dialog.findViewById(R.id.tv_message);              tv_message.setText(message);          }          // 按返回键是否取消          dialog.setCancelable(cancelable);          // 监听返回键处理          dialog.setOnCancelListener(cancelListener);          // 设置居中          dialog.getWindow().getAttributes().gravity = Gravity.CENTER;          WindowManager.LayoutParams lp = dialog.getWindow().getAttributes();          // 设置背景层透明度          lp.dimAmount = 0.1f;          dialog.getWindow().setAttributes(lp);          dialog.show();                  return dialog;      }         /**     * 关闭dialog     */    public static void dimiss() {          if(dialog != null && dialog.isShowing()){        dialog.dismiss();        }    }} 

3.layout_progress_dialog.xml 布局:

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:layout_gravity="center"    android:background="@drawable/progress_custom_bg"    android:gravity="center_horizontal"    android:orientation="vertical"    android:paddingBottom="20dp"    android:paddingLeft="25dp"    android:paddingRight="25dp"    android:paddingTop="20dp" >    <ProgressBar        android:id="@+id/pb"        android:layout_width="40dp"        android:layout_height="40dp"        android:layout_gravity="center_horizontal" />    <TextView        android:id="@+id/tv_message"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_gravity="center_vertical"        android:layout_marginTop="3dp"        android:textSize="16sp" /></LinearLayout>

4.MainActivity:

package com.ylj.progressdialogdemo;import android.app.Activity;import android.os.AsyncTask;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;public class MainActivity extends Activity implements OnClickListener {@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);findViewById(R.id.btn_save).setOnClickListener(this);}@Overridepublic void onClick(View v) {new LoginTask().execute();}private class LoginTask extends AsyncTask<Void, Void, Void> {@Overrideprotected void onPreExecute() {CustomProgressDialog.show(MainActivity.this, "登录中...", false, null);super.onPreExecute();}@Overrideprotected Void doInBackground(Void... params) {try {new Thread().sleep(2000);} catch (InterruptedException e) {e.printStackTrace();}return null;}@Overrideprotected void onPostExecute(Void result) {super.onPostExecute(result);CustomProgressDialog.dimiss();}}}

5.activity_main.xml布局:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:paddingBottom="@dimen/activity_vertical_margin"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"    tools:context="com.ylj.progressdialogdemo.MainActivity" >    <Button        android:id="@+id/btn_save"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_centerInParent="true"        android:text="登录" /></RelativeLayout>

效果图如下:

自定义ProgressDialog(无遮罩效果)_第1张图片

更多相关文章

  1. 转:android 图片叠加效果——两种方法
  2. 动态广告布局
  3. Android自定义添加圆角渐变色按钮+点击效果
  4. 设置android的布局文件的背景颜色为黑色
  5. android 按钮效果的两种实现方法
  6. Android---63---Android中的动画效果
  7. 分享Android仿刮奖效果控件
  8. Android 属性动画实现的扇形菜单效果
  9. Android 仿IOS解锁锁屏文字抖动效果

随机推荐

  1. android 版本及对应数值
  2. “Debug certificate expired” error
  3. Android如何导入已有的外部数据库
  4. Android连接到加密网络
  5. android子线程创建handler
  6. Android执行POST请求
  7. android Volley 使用
  8. 【Android】Inconvertible types:cannot
  9. androidUI控件下载地址
  10. Android TXT文件读写