안 드 로 이 드 에서 ProgressDialog 가 전체 화면 효 과 를 실현 하 는 예제

프로젝트 를 할 때 Progressdialog 를 직접 사 용 했 습 니 다.전체 화면의 효 과 를 실현 해 야 합 니 다.다음 그림 에서 보 듯 이 기능 이 달 릴 때 전체 화면 이 아니 라 현재 의 내용 만 감 쌌 습 니 다.다음 그림 에서 보 듯 이 자 료 를 찾 아 문 제 를 해결 해 야 합 니 다.
ProgressDialog 는 AlertDialog,AlertDialog 는 Dialog 를 계승 하여 DialogInterface 인 터 페 이 스 를 실현 합 니 다.
ProgressDialog 의 생 성 방식 은 두 가지 가 있 는데 하 나 는 new Dialog 이 고 하 나 는 Dialog 를 호출 하 는 정적 방법 Dialog.show()입 니 다.

//    :new Dialog 
final ProgressDialog dialog = new ProgressDialog(this); 
dialog.show(); 



//    :           ,           ,  title Message     
ProgressDialog dialog2 = ProgressDialog.show(this, "  ", "     "); 



//                ,           ,        boolean indeterminate            
ProgressDialog dialog3 = ProgressDialog.show(this, "  ", "     ", false); 



//                ,           ,        boolean cancelable               
ProgressDialog dialog4 = ProgressDialog.show(this, "  ", "     ", false, true); 



//                ,           ,         DialogInterface.OnCancelListener 
// cancelListener           
ProgressDialog dialog5 = ProgressDialog.show(this, "  ", "     ", true, true, cancelListener); 
방식 5 에 cancelListener 가 필요 합 니 다.코드 는 다음 과 같 습 니 다.

private OnCancelListener cancelListener = new OnCancelListener() {

  @Override
  public void onCancel(DialogInterface dialog) {
    // TODO Auto-generated method stub
    Toast.makeText(MainActivity.this, "      ", Toast.LENGTH_LONG).show();
  }
};
본문의 지식 점:
1.ProgressDialog 의 전체 화면 효과 구현
2.인터페이스 리 셋 추천 방식

프로젝트 구현 요구 효과.png

처음 구현 한 효과.png
코드 구현:
1.배치

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:orientation="vertical"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:gravity="center">

 <com.tecsun.tsb.network.tool.AnimImageViewLoader
  android:id="@+id/iv_load_anim"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:background="@drawable/anim_all_load"/>

 <TextView
  android:id="@+id/tv_all_load"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:text="@string/tip_load_pay_wait_result"
  android:textSize="26sp"
  android:textColor="@color/c_white"
  android:layout_marginTop="20dp"/>

 <TextView
  android:id="@+id/tv_all_load_other"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:text="@string/tip_load_pay_wait_tip"
  android:textSize="26sp"
  android:textColor="@color/c_orange_1"
  android:layout_marginTop="20dp"/>


 <Button
  android:id="@+id/btn_cancel"
  android:layout_height="75dp"
  android:layout_width="600dp"
  android:layout_marginTop="20dp"
  android:text="    "
  android:background="@drawable/btn_white_gray7_selector"
  android:textColor="#000000"
  android:textSize="30sp" />

</LinearLayout>

2.핵심 코드

 Window window = getWindow();
  WindowManager.LayoutParams layoutParams = window.getAttributes();
  layoutParams.width = WindowManager.LayoutParams.MATCH_PARENT;
  layoutParams.height = WindowManager.LayoutParams.MATCH_PARENT;
  layoutParams.gravity = gravity;
  window.setAttributes(layoutParams);
3.인터페이스 리 셋 의 실현 방식

 public OnClickCancelListener mOnClickCancelListener;

 public void setOnClickCancelListener(OnClickCancelListener onClickCancelListener){
  this.mOnClickCancelListener = onClickCancelListener;
 }

 public interface OnClickCancelListener{
  void singleClick();
 }

4.인터페이스 리 셋 호출 방식

mLoadingProgressDialog.setOnClickCancelListener(new LoadingProgressDialog.OnClickCancelListener() {

   @Override
   public void singleClick() {
    LogUtil.d(TAG,"      ===========");
    isContinueQuery = true;
    dismissPayResultLoadingDialog();
   }
  });

5.모든 코드 구현

public class LoadingProgressDialog extends ProgressDialog {

 private static final String TAG = LoadingProgressDialog.class.getSimpleName();

 public LoadingProgressDialog(Context context) {
  super(context,R.style.style_custon_dialog);
  setCancelable(false);
  setCanceledOnTouchOutside(false);
 }


 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.custom_dialog_all_loading);
  Window window = getWindow();
  WindowManager.LayoutParams layoutParams = window.getAttributes();
  layoutParams.width = WindowManager.LayoutParams.MATCH_PARENT;
  layoutParams.height = WindowManager.LayoutParams.MATCH_PARENT;
  layoutParams.gravity = gravity;
  window.setAttributes(layoutParams);
  Button benCancel = (Button) findViewById(R.id.btn_cancel);
  benCancel.setOnClickListener(new View.OnClickListener() {
   @Override
   public void onClick(View v) {
    LogUtil.d(TAG,"benCancel================");
    mOnClickCancelListener.singleClick();
   }
  });
 }

 public OnClickCancelListener mOnClickCancelListener;

 public void setOnClickCancelListener(OnClickCancelListener onClickCancelListener){
  this.mOnClickCancelListener = onClickCancelListener;
 }

 public interface OnClickCancelListener{
  void singleClick();
 }
}

이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기