生活随笔
收集整理的這篇文章主要介紹了
Android自定义Dialog及与Activity的交互
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
一個(gè)小項(xiàng)目,需要用到一個(gè)自定義的Dialog,Dialog中需要一個(gè)ImageView用于顯示表情圖片,一個(gè)TextView用來顯示提示文本,點(diǎn)擊任何地方關(guān)閉Dialog,同時(shí)關(guān)閉打開這個(gè)Dialog的Activity。
效果如下圖:
實(shí)現(xiàn)過程如下:
一、定義一個(gè)布局文件(dialog_custom.xml)
代碼如下:
———————————————————————————————
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:id="@+id/layout_dialog"android:layout_width="330dip"android:layout_height="150dip"android:background="@drawable/shape_conner_white_bg" android:orientation="horizontal"><ImageView android:id="@+id/im_toast_icon"android:layout_width="100dip" android:layout_height="100dip" android:background="@null" /> <TextView android:id="@+id/tv_toast_content" android:layout_width="180dip" android:layout_height="wrap_content" android:layout_marginTop="20dip" android:text="" android:textColor="#2f97e9" android:textSize="18sp" android:singleLine="false"android:gravity="center_vertical"/></LinearLayout>
———————————————————————————————
內(nèi)容很簡(jiǎn)單,就一個(gè)LinearLayout布局,里面有一個(gè)ImageView,一個(gè)TextView。
LinearLayout為了實(shí)現(xiàn)圓角矩形的效果,用了個(gè)shape背景。代碼如下(shape_conner_white_bg.xml):
———————————————————————————————
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" > <corners android:radius="4dp" /> <solid android:color="@android:color/white" /></shape>
———————————————————————————————
二、自定義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有三個(gè)參數(shù),Contex不用多說,msg是提示文本,icon_draw是需要顯示的圖標(biāo)。
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);// 得到加載viewtipTextView = (TextView) v.findViewById(R.id.tv_toast_content);// 提示文字 image_Icon=(ImageView)v.findViewById(R.id.im_toast_icon);//提示圖標(biāo)tipTextView.setText(msg);// 設(shè)置加載信息 image_Icon.setImageDrawable(icon_draw);layout_dialog=(LinearLayout) v.findViewById(R.id.layout_dialog);layout_dialog.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v){MyDialog.dismiss();}});MyDialog = new Dialog(context, R.style.MyDialogStyle);// 創(chuàng)建自定義樣式dialogMyDialog.setCancelable(true); // 按“返回鍵”可以關(guān)閉Dialog MyDialog.setCanceledOnTouchOutside(true); // 點(diǎn)擊加載框以外的區(qū)域可以關(guān)閉Dialog //定義MyDialog關(guān)閉時(shí)同時(shí)關(guān)閉ActivityMyDialog.setOnDismissListener(new OnDismissListener() {@Overridepublic 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));// 設(shè)置布局 /** *將顯示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中定義的:
<style name="MyDialogStyle"> <item name="android:windowBackground">@android:color/transparent</item> <item name="android:windowFrame">@null</item> <item name="android:windowNoTitle">true</item> <item name="android:windowIsFloating">true</item> <item name="android:windowIsTranslucent">true</item> <item name="android:windowContentOverlay">@null</item> <item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item>
———————————————————————————————
這樣就OK了,在需要打開Dialog的地方添加以下代碼就行了:
DialogUtils.showCompleteDialog(getContext(),"不好意思,你輸給了手機(jī)AI!",getResources().getDrawable(R.drawable.lost));
轉(zhuǎn)載于:https://blog.51cto.com/6273125/2374975
總結(jié)
以上是生活随笔為你收集整理的Android自定义Dialog及与Activity的交互的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。