Android 사용자 정의 Dialog 및 Activity와의 상호 작용

14455 단어
작은 항목입니다. 사용자 정의의Dialog를 사용해야 합니다. Dialog에는 이모티콘을 표시하는 ImageView가 필요하고, 알림 텍스트를 표시하는 TextView가 필요하며, 어디를 눌러서Dialog를 닫고, 이Dialog를 여는 Activity를 닫아야 합니다.효과는 다음과 같다. 첫째, 레이아웃 파일(dialog custom.xml) 코드를 정의하면 다음과 같다. ---------------------------

 

                 
            


———————————————————————————————
내용은 간단합니다. Linear Layout 레이아웃 하나에 ImageView, TextView가 있습니다.LinearLayout은 둥근 사각형의 효과를 실현하기 위해 shape 배경을 사용했다.코드는 다음과 같습니다(shape conner white bg.xml): -----------------------

     
           
        
     

------------------------둘째, 사용자 정의DialogUtils 클래스, 코드는 다음과 같다. -----------------------------------

import android.app.Activity;
import android.app.Dialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.DialogInterface.OnDismissListener;
import android.graphics.drawable.Drawable;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.view.WindowManager;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;

public class DialogUtils 
{    
    private static TextView tipTextView;    
    private static Dialog MyDialog;
    private static ImageView image_Icon;
    private static LinearLayout layout_dialog;
    //Dialog     ,Contex    ,msg     ,icon_draw        。
public static void showCompleteDialog(final Context context,String msg,Drawable  icon_draw)
    {        
        LayoutInflater inflater = LayoutInflater.from(context);        
        View v = inflater.inflate(R.layout.dialog_custom, null);//     view
        tipTextView = (TextView) v.findViewById(R.id.tv_toast_content);//      
        image_Icon=(ImageView)v.findViewById(R.id.im_toast_icon);//    
        tipTextView.setText(msg);//         
        image_Icon.setImageDrawable(icon_draw);
        layout_dialog=(LinearLayout) v.findViewById(R.id.layout_dialog);
        layout_dialog.setOnClickListener(new OnClickListener() 
        {

            @Override
            public void onClick(View v)
            {
                MyDialog.dismiss();

            }
        });

        MyDialog = new Dialog(context, R.style.MyDialogStyle);//        dialog
        MyDialog.setCancelable(true); //  “   ”    Dialog       
        MyDialog.setCanceledOnTouchOutside(true); //               Dialog  
        //  MyDialog       Activity
        MyDialog.setOnDismissListener(new OnDismissListener() 
        {

            @Override
            public void onDismiss(DialogInterface dialog) 
            {
                //MyDialog.getOwnerActivity().finish();
                Activity act=(Activity)context;
                act.finish();
                MyDialog.dismiss();

            }
        });

        MyDialog.setContentView(v, new LinearLayout.LayoutParams(                
                LinearLayout.LayoutParams.MATCH_PARENT,                
                LinearLayout.LayoutParams.MATCH_PARENT));//             
        /**         *   Dialog                  */        
        Window window = MyDialog.getWindow();        
        WindowManager.LayoutParams lp = window.getAttributes();        
        lp.width = 900;        
        lp.height = 360;        
        lp.y=-150;        
        window.setGravity(Gravity.CENTER_HORIZONTAL);        
        window.setAttributes(lp);        
        MyDialog.show();    
        }
    }   

여기서 MyDialogStyle은res/values/style에서 정의됩니다.

좋은 웹페이지 즐겨찾기