您好,登錄后才能下訂單哦!
一個小項目,需要用到一個自定義的Dialog,Dialog中需要一個ImageView用于顯示表情圖片,一個TextView用來顯示提示文本,點擊任何地方關閉Dialog,同時關閉打開這個Dialog的Activity。
效果如下圖:
實現過程如下:
一、定義一個布局文件(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>
———————————————————————————————
內容很簡單,就一個LinearLayout布局,里面有一個ImageView,一個TextView。
LinearLayout為了實現圓角矩形的效果,用了個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有三個參數,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中定義的:
<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(),"不好意思,你輸給了手機AI!",getResources().getDrawable(R.drawable.lost));
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。