老套路先看效果图:

再来看下代码:
package com.tm.live.ui.dialog;
import android.app.Activity;
import android.support.annotation.ColorRes;
import android.support.annotation.DrawableRes;
import android.support.v7.app.AlertDialog;
import android.text.TextUtils;
import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.tm.live.R;
import com.tm.live.utils.AndroidUtils;
/**
* @author xiayiye5
*/
public class SharedDialog implements View.OnClickListener {
private AlertDialog alertDialog;
private SharedDialog() {
}
private static SharedDialog sharedDialog = new SharedDialog();
public static SharedDialog getDialog() {
return sharedDialog;
}
/**
* 标题可不传,就用默认的
*
* @param activity 要显示的窗体
* @param msg 弹出的消息
* @param btnColor 分享按钮的背景色
* @param imgId 按钮左边的图片
*/
public void showSharedWeChat(Activity activity, String msg, @ColorRes int btnColor, @DrawableRes int imgId) {
showSharedDialog(activity, null, msg, "继续分享到微信", btnColor, imgId);
}
public void showSharedChat(Activity activity, String msg, @ColorRes int btnColor, @DrawableRes int imgId) {
showSharedDialog(activity, null, msg, "继续分享到QQ", btnColor, imgId);
}
public void showSharedWeiBo(Activity activity, String msg, @ColorRes int btnColor, @DrawableRes int imgId) {
showSharedDialog(activity, null, msg, "继续分享到微博", btnColor, imgId);
}
/**
* @param activity 要显示的窗体
* @param msg 弹出的消息
* @param btnColor 分享按钮的背景色
* @param imgId 按钮左边的图片
*/
public void showSharedDialog(Activity activity, String title, String msg, String btnText, @ColorRes int btnColor, @DrawableRes int imgId) {
AlertDialog.Builder dialog = new AlertDialog.Builder(activity);
View dialogView = View.inflate(activity, R.layout.shared_dialog_view, null);
ImageView ivCloseRight = dialogView.findViewById(R.id.iv_close_right);
ImageView ivLeftSharedImg = dialogView.findViewById(R.id.iv_left_shared_img);
TextView tvSharedButton = dialogView.findViewById(R.id.tv_shared_button);
tvSharedButton.setText(btnText);
LinearLayout llSharedLayout = dialogView.findViewById(R.id.ll_shared_layout);
ivLeftSharedImg.setImageDrawable(activity.getDrawable(imgId));
llSharedLayout.setBackgroundColor(activity.getColor(btnColor));
ivCloseRight.setOnClickListener(this);
llSharedLayout.setOnClickListener(this);
dialog.setView(dialogView);
alertDialog = dialog.create();
TextView tvShareMessage = dialogView.findViewById(R.id.tv_share_message);
tvShareMessage.setText(msg);
TextView tvShareTittle = dialogView.findViewById(R.id.tv_share_tittle);
if (!TextUtils.isEmpty(title)) {
tvShareTittle.setText(title);
}
alertDialog.setCancelable(false);
alertDialog.show();
int dialogWidth = AndroidUtils.getInstance().getScreenWidth(activity);
int dialogHeight = (int) (AndroidUtils.getInstance().getScreenHeight(activity) * 0.3);
//设置dialog窗体的大小,一定要是AlertDialog
alertDialog.getWindow().setLayout(dialogWidth, dialogHeight);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.iv_close_right:
//关闭dialog
alertDialog.dismiss();
break;
case R.id.ll_shared_layout:
//跳转到分享页面
jumpSharedPage.goShared();
break;
default:
break;
}
}
public interface JumpSharedPage {
/**
* 点击分享后的方法
*/
void goShared();
}
private JumpSharedPage jumpSharedPage;
public void setJumpSharedPage(JumpSharedPage jumpSharedPage) {
this.jumpSharedPage = jumpSharedPage;
}
}
注意:XML布局很重要:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/dp_5"
android:gravity="center"
android:orientation="horizontal">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_gravity="right"
android:layout_margin="@dimen/dp_5"
android:padding="@dimen/dp_8"
android:src="@drawable/close"
android:tint="@color/black"
android:visibility="invisible" />
<TextView
android:id="@+id/tv_share_tittle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_5"
android:layout_weight="1"
android:gravity="center"
android:text="@string/save_picter"
android:textColor="@color/black"
android:textSize="18sp"
android:textStyle="bold" />
<ImageView
android:id="@+id/iv_close_right"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_gravity="right"
android:layout_margin="@dimen/dp_5"
android:padding="@dimen/dp_8"
android:src="@drawable/close"
android:tint="@color/black" />
</LinearLayout>
<TextView
android:id="@+id/tv_share_message"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_centerInParent="true"
android:layout_marginBottom="@dimen/dp_30"
android:layout_weight="1"
android:gravity="center"
android:paddingLeft="@dimen/dp_20"
android:paddingRight="@dimen/dp_20"
android:textColor="@color/black"
android:textSize="16sp" />
<LinearLayout
android:id="@+id/ll_shared_layout"
android:layout_width="match_parent"
android:layout_height="38dp"
android:layout_alignParentBottom="true"
android:layout_centerInParent="true"
android:layout_marginLeft="@dimen/dp_20"
android:layout_marginRight="@dimen/dp_20"
android:layout_marginBottom="2dp"
android:background="@android:color/holo_green_light"
android:gravity="center">
<ImageView
android:id="@+id/iv_left_shared_img"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="@dimen/dp_5"
android:background="@drawable/close"
android:tint="@color/white" />
<TextView
android:id="@+id/tv_shared_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:text="继续分享到微信"
android:textColor="@color/white"
android:textSize="18sp" />
</LinearLayout>
</LinearLayout>
dialog的显示以及响应事件的方法也很简单:
//Kotlin版本
SharedDialog.getDialog().showSharedDialog(this,
"已保存到相册",
"由于微信分享限制,请到微信上传视频来分享",
"继续分享到微信",
R.color.blue_text,
R.drawable.switch_img)
SharedDialog.getDialog().setJumpSharedPage { ToastUtil.show("点击了按钮")}
|