Unknown On 2014년 7월 15일 화요일




1Back키 눌렀을 경우 Dialog Cancle 여부 설정

 
  mDialog.setCancelable(false); // true : cancle , false : no cancle

2) Dialog 호출시 배경화면이 검정색으로 바뀌는 것 막기 !
 
  mDialog.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);

3) Dialog 밖을 터치 했을 경우 Dialog 사라지게 하기
 
  mDialog.setCanceledOnTouchOutside(true);

4) Dialog 밖의 View를 터치할 수 있게 하기 (다른 View를 터치시 Dialog Dismiss)
 
  mDialog.getWindow().setFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL,
             WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL);

5) Dialog 자체 배경을 투명하게 하기
 
  mDialog.getWindow().setBackgroundDrawable
             (new ColorDrawable(android.graphics.Color.TRANSPARENT));


6) Dialog Cancle시 Event 받기 

 
  mDialog.setOnCancelListener(OnCancelListener listener) 



7) Dialog Show시 Event 받기 

 
  mDialog.setOnShowListener(OnShowListener listener) 



8) Dialog Dismiss시 Event 받기 

 
  mDialog.setOnDismissListener(OnDismissListener listener) 





import android.app.Activity;
import android.app.Dialog;
import android.content.DialogInterface;
import android.content.DialogInterface.OnCancelListener;
import android.content.DialogInterface.OnDismissListener;
import android.content.DialogInterface.OnShowListener;
import android.graphics.drawable.ColorDrawable;
import android.os.Bundle;
import android.view.View;
import android.view.WindowManager;
import android.widget.Toast;
 
public class MainActivity extends Activity {
 
    private Dialog mDialog = null;
     
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
         
        createDialog();
         
    }
     
    public void onClick(View v) {
        switch (v.getId()) {
         
        case R.id.btn_click:
             
            Toast.makeText(MainActivity.this, "Activity Button 입니다.",
                    Toast.LENGTH_SHORT).show();
         
        case R.id.btn_ok:
             
            dismissDialog();
             
            break;
             
        case R.id.btn_cancle:
             
            dismissDialog();
             
            break;
 
        default:
            break;
        }
    }
     
    private void createDialog() {
        final View innerView = getLayoutInflater().inflate(R.layout.dialog, null);
         
        mDialog = new Dialog(this);
        mDialog.setTitle("Title");
        mDialog.setContentView(innerView);
         
        // Back키 눌렀을 경우 Dialog Cancle 여부 설정
        mDialog.setCancelable(true);
         
        // Dialog 생성시 배경화면 어둡게 하지 않기
        mDialog.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
         
        // Dialog 밖을 터치 했을 경우 Dialog 사라지게 하기
//      mDialog.setCanceledOnTouchOutside(true);
         
        // Dialog 밖의 View를 터치할 수 있게 하기 (다른 View를 터치시 Dialog Dismiss)
        mDialog.getWindow().setFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL,
                WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL);
         
        // Dialog 자체 배경을 투명하게 하기
//      mDialog.getWindow().setBackgroundDrawable
//              (new ColorDrawable(android.graphics.Color.TRANSPARENT));
         
        // Dialog Cancle시 Event 받기
        mDialog.setOnCancelListener(new OnCancelListener() {
             
            @Override
            public void onCancel(DialogInterface dialog) {
                Toast.makeText(MainActivity.this, "cancle listener",
                        Toast.LENGTH_SHORT).show();
            }
        });
         
        // Dialog Show시 Event 받기
        mDialog.setOnShowListener(new OnShowListener() {
             
            @Override
            public void onShow(DialogInterface dialog) {
                Toast.makeText(MainActivity.this, "show listener",
                        Toast.LENGTH_SHORT).show();
            }
        });
         
        // Dialog Dismiss시 Event 받기
        mDialog.setOnDismissListener(new OnDismissListener() {
             
            @Override
            public void onDismiss(DialogInterface dialog) {
                Toast.makeText(MainActivity.this, "dismiss listener",
                        Toast.LENGTH_SHORT).show();
            }
        });
         
        mDialog.show();
         
    }
     
    private void dismissDialog() {
        if(mDialog != null && mDialog.isShowing()) {
            mDialog.dismiss();
        }
    }
 
}



Leave a Reply

Subscribe to Posts | Subscribe to Comments

Powered by Blogger.