Commit e9a2b800 authored by jianglx's avatar jianglx

修改弹框

parent fd743833
...@@ -120,8 +120,6 @@ public class MainActivity extends BaseActivity<CommonPresenter> { ...@@ -120,8 +120,6 @@ public class MainActivity extends BaseActivity<CommonPresenter> {
getEffectiveTime(); getEffectiveTime();
getActivityPopup(); getActivityPopup();
checkVersion(); checkVersion();
} }
@Override @Override
......
package com.rv.share; package com.rv.share;
import android.Manifest;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.content.pm.PackageManager;
import android.os.Build; import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.support.v7.widget.CardView; import android.support.v7.widget.CardView;
import android.view.View; import android.view.View;
import android.webkit.WebView; import android.webkit.WebView;
import android.widget.Button; import android.widget.Button;
import android.widget.LinearLayout; import android.widget.LinearLayout;
import android.widget.TextView; import android.widget.TextView;
import android.widget.Toast;
import com.ruiwenliu.wrapper.base.BaseBean; import com.ruiwenliu.wrapper.base.BaseBean;
import com.ruiwenliu.wrapper.base.BaseStatusActivity; import com.ruiwenliu.wrapper.base.BaseStatusActivity;
...@@ -107,11 +113,16 @@ public class BillActivity extends BaseStatusActivity<BillPresenter> { ...@@ -107,11 +113,16 @@ public class BillActivity extends BaseStatusActivity<BillPresenter> {
if (id == R.id.tv_back_title) { if (id == R.id.tv_back_title) {
finish(); finish();
} else if (id == R.id.btn_share) { } else if (id == R.id.btn_share) {
mPresenter.showShareDialog(llContent, rvWebView); preShare();
} }
} }
private RvWebView.WebViewListener listener = new RvWebView.WebViewListener() { private RvWebView.WebViewListener listener = new RvWebView.WebViewListener() {
@Override
public void share(String url, String imgUrl, String title, String circleTitle, String desc) {
}
@Override @Override
public void share(String url, String title, String desc) { public void share(String url, String title, String desc) {
} }
...@@ -123,4 +134,35 @@ public class BillActivity extends BaseStatusActivity<BillPresenter> { ...@@ -123,4 +134,35 @@ public class BillActivity extends BaseStatusActivity<BillPresenter> {
}; };
/**
* 预备下载 进行 6.0权限检查
*/
private void preShare() {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
mPresenter.showShareDialog(llContent, rvWebView);
} else {
if (ContextCompat.checkSelfPermission(this,
Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) {
mPresenter.showShareDialog(llContent, rvWebView);
} else {//申请权限
ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1001);
}
}
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
switch (requestCode) {
case 1001:
if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
mPresenter.showShareDialog(llContent, rvWebView);
;
} else {
Toast.makeText(getApplicationContext(), "授权失败,无法分享海报", Toast.LENGTH_SHORT).show();
}
break;
}
}
} }
package com.rv.share; package com.rv.share;
import android.Manifest;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.content.pm.PackageManager;
import android.graphics.Bitmap; import android.graphics.Bitmap;
import android.graphics.BitmapFactory; import android.graphics.BitmapFactory;
import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.support.v7.widget.CardView; import android.support.v7.widget.CardView;
import android.text.TextUtils; import android.text.TextUtils;
import android.view.View; import android.view.View;
...@@ -12,6 +18,7 @@ import android.widget.Button; ...@@ -12,6 +18,7 @@ import android.widget.Button;
import android.widget.ImageView; import android.widget.ImageView;
import android.widget.LinearLayout; import android.widget.LinearLayout;
import android.widget.TextView; import android.widget.TextView;
import android.widget.Toast;
import com.base.utils.ui.image.round.RoundImageView; import com.base.utils.ui.image.round.RoundImageView;
import com.ruiwenliu.wrapper.SPConstance; import com.ruiwenliu.wrapper.SPConstance;
...@@ -87,15 +94,63 @@ public class ReativeBillActivity extends BaseStatusActivity<ReativeBillPresenter ...@@ -87,15 +94,63 @@ public class ReativeBillActivity extends BaseStatusActivity<ReativeBillPresenter
} }
@OnClick({R2.id.btn_save_bill, R2.id.btn_share,R2.id.tv_back_title}) @OnClick({R2.id.btn_save_bill, R2.id.btn_share, R2.id.tv_back_title})
public void onViewClicked(View view) { public void onViewClicked(View view) {
int id = view.getId(); int id = view.getId();
if (id == R.id.tv_back_title) { if (id == R.id.tv_back_title) {
finish(); finish();
} else if (id == R.id.btn_save_bill) { } else if (id == R.id.btn_save_bill) {
mPresenter.saveBill(llContent); preShare(0, 1001);
} else if (id == R.id.btn_share) { } else if (id == R.id.btn_share) {
mPresenter.shareCircle(llContent); preShare(1, 1002);
} }
} }
/**
* 预备下载 进行 6.0权限检查
*/
private void preShare(int type, int requestCode) {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
if (type == 0) {
mPresenter.saveBill(llContent);
} else {
mPresenter.share(llContent);
}
} else {
if (ContextCompat.checkSelfPermission(this,
Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) {
if (type == 0) {
mPresenter.saveBill(llContent);
} else {
mPresenter.share(llContent);
}
} else {//申请权限
ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, requestCode);
}
}
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
switch (requestCode) {
case 1001:
if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
mPresenter.saveBill(llContent);
} else {
Toast.makeText(getApplicationContext(), "授权失败,无法分享海报", Toast.LENGTH_SHORT).show();
}
break;
case 1002:
if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
mPresenter.share(llContent);
} else {
Toast.makeText(getApplicationContext(), "授权失败,无法分享海报", Toast.LENGTH_SHORT).show();
}
break;
}
}
} }
...@@ -91,9 +91,14 @@ public class WebViewActivity extends BaseStatusActivity<WebViewPresenter> { ...@@ -91,9 +91,14 @@ public class WebViewActivity extends BaseStatusActivity<WebViewPresenter> {
} }
private RvWebView.WebViewListener listener = new RvWebView.WebViewListener() { private RvWebView.WebViewListener listener = new RvWebView.WebViewListener() {
@Override
public void share(String url, String imgUrl, String title, String circleTitle, String desc) {
mPresenter.showShareDialog(url, imgUrl, title, circleTitle, desc);
}
@Override @Override
public void share(String url, String title, String desc) { public void share(String url, String title, String desc) {
mPresenter.showShareDialog(url, title, desc); mPresenter.showShareDialog(url, null, title, null, desc);
} }
@Override @Override
......
...@@ -5,13 +5,18 @@ import android.content.Context; ...@@ -5,13 +5,18 @@ import android.content.Context;
import android.graphics.Bitmap; import android.graphics.Bitmap;
import android.graphics.Canvas; import android.graphics.Canvas;
import android.graphics.Color; import android.graphics.Color;
import android.support.v7.widget.CardView;
import android.text.TextUtils;
import android.view.View; import android.view.View;
import android.widget.Toast; import android.widget.Toast;
import com.base.utils.ui.datetime.picker.Utils; import com.base.utils.ui.datetime.picker.Utils;
import com.base.utils.ui.datetime.selector.util.TextUtil;
import com.rv.home.rv.module.basic.presenter.CommonPresenter; import com.rv.home.rv.module.basic.presenter.CommonPresenter;
import com.rv.share.ReativeBillActivity;
import com.rv.share.utils.ShareUtils; import com.rv.share.utils.ShareUtils;
import com.rv.share.utils.StorageUtils; import com.rv.share.utils.StorageUtils;
import com.rv.share.view.ShareChoiceDialog;
import com.umeng.socialize.ShareAction; import com.umeng.socialize.ShareAction;
import com.umeng.socialize.bean.SHARE_MEDIA; import com.umeng.socialize.bean.SHARE_MEDIA;
import com.umeng.socialize.media.UMImage; import com.umeng.socialize.media.UMImage;
...@@ -23,7 +28,11 @@ import java.io.IOException; ...@@ -23,7 +28,11 @@ import java.io.IOException;
public class ReativeBillPresenter extends CommonPresenter { public class ReativeBillPresenter extends CommonPresenter {
private ShareChoiceDialog dialog = null;
private ShareAction shareAction = null; private ShareAction shareAction = null;
private View view = null;
private Bitmap bitmap = null;
private UMImage image = null;
/***** /*****
* 保存海报 * 保存海报
...@@ -34,7 +43,7 @@ public class ReativeBillPresenter extends CommonPresenter { ...@@ -34,7 +43,7 @@ public class ReativeBillPresenter extends CommonPresenter {
Bitmap bitmap = ShareUtils.viewConversionBitmap(view); Bitmap bitmap = ShareUtils.viewConversionBitmap(view);
File file = null; File file = null;
if (bitmap != null) { if (bitmap != null) {
file = ShareUtils.saveBitmapFile(getPresenterContext(),bitmap); file = ShareUtils.saveBitmapFile(getPresenterContext(), bitmap);
} }
if (file != null) { if (file != null) {
Toast.makeText(getPresenterContext(), "海报保存在" + file.getAbsolutePath(), Toast.LENGTH_LONG).show(); Toast.makeText(getPresenterContext(), "海报保存在" + file.getAbsolutePath(), Toast.LENGTH_LONG).show();
...@@ -42,25 +51,21 @@ public class ReativeBillPresenter extends CommonPresenter { ...@@ -42,25 +51,21 @@ public class ReativeBillPresenter extends CommonPresenter {
} }
} }
/****
* 分享到朋友圈 /******
* @param view * 分享
*/ */
public void shareCircle(View view) { public void share(View view) {
if (view != null) { this.view = view;
Bitmap bitmap = ShareUtils.viewConversionBitmap(view); if (dialog == null) {
File file = null; dialog = new ShareChoiceDialog.Builder(getPresenterContext())
if (bitmap != null) { .setShareListener(myListener)
file = ShareUtils.saveBitmapFile(getPresenterContext(), bitmap); .setWxVisiable(true)
} .setWxCVisiable(true)
if (file != null) { .setQQVisiable(true)
UMImage image = new UMImage(getPresenterContext(), file);//bitmap文件 .create();
image.compressStyle = UMImage.CompressStyle.SCALE;//大小压缩,默认为大小压缩,适合普通很大的图
image.compressStyle = UMImage.CompressStyle.QUALITY;//质量压缩,适合长图的分享
image.compressFormat = Bitmap.CompressFormat.PNG;
share(SHARE_MEDIA.WEIXIN_CIRCLE, image, "");
}
} }
dialog.show();
} }
/****** /******
...@@ -77,4 +82,71 @@ public class ReativeBillPresenter extends CommonPresenter { ...@@ -77,4 +82,71 @@ public class ReativeBillPresenter extends CommonPresenter {
.withMedia(var2);//分享内容 .withMedia(var2);//分享内容
shareAction.share(); shareAction.share();
} }
private ShareChoiceDialog.ShareListener myListener = new ShareChoiceDialog.ShareListener() {
private void shareDeal() {
if (view != null && bitmap == null) {
bitmap = ShareUtils.viewConversionBitmap(view);
}
File file = null;
if (bitmap != null) {
file = ShareUtils.saveBitmapFile(getPresenterContext(), bitmap);
}
if (file != null) {
image = new UMImage(getPresenterContext(), file);//bitmap文件
image.compressStyle = UMImage.CompressStyle.SCALE;//大小压缩,默认为大小压缩,适合普通很大的图
image.compressStyle = UMImage.CompressStyle.QUALITY;//质量压缩,适合长图的分享
image.compressFormat = Bitmap.CompressFormat.PNG;
}
}
@Override
public void copyShare() {
}
@Override
public void wxShare() {
if (image == null) {
shareDeal();
}
if (image != null) {
share(SHARE_MEDIA.WEIXIN, image, "");
}
}
@Override
public void wxCShare() {
if (image == null) {
shareDeal();
}
if (image != null) {
share(SHARE_MEDIA.WEIXIN_CIRCLE, image, "");
}
}
@Override
public void qqShare() {
}
@Override
public void billShare() {
}
@Override
public void close() {
}
};
// @Override
// public void detachView() {
// super.detachView();
// if (bitmap != null) {
// bitmap.recycle();
// }
// }
} }
...@@ -32,14 +32,18 @@ public class WebViewPresenter extends CommonPresenter { ...@@ -32,14 +32,18 @@ public class WebViewPresenter extends CommonPresenter {
private String mUrl = null; private String mUrl = null;
private String mTitle = null; private String mTitle = null;
private String mDescript = null; private String mDescript = null;
private String mImgUrl;
private String mCircleTitle;
private RvWebView webView; private RvWebView webView;
public void setWebView(RvWebView webView) { public void setWebView(RvWebView webView) {
this.webView = webView; this.webView = webView;
} }
public void showShareDialog(String url, String title, String descript) { public void showShareDialog(String url, String imgUrl, String title, String circleTitle, String descript) {
this.mUrl = url; this.mUrl = url;
this.mImgUrl = imgUrl;
this.mCircleTitle = circleTitle;
this.mTitle = title; this.mTitle = title;
this.mDescript = descript; this.mDescript = descript;
if (dialog == null) { if (dialog == null) {
...@@ -62,8 +66,12 @@ public class WebViewPresenter extends CommonPresenter { ...@@ -62,8 +66,12 @@ public class WebViewPresenter extends CommonPresenter {
if (shareAction == null) { if (shareAction == null) {
shareAction = new ShareAction((Activity) getPresenterContext()).setCallback(shareListener); shareAction = new ShareAction((Activity) getPresenterContext()).setCallback(shareListener);
} }
UMImage image;
UMImage image = new UMImage(getPresenterContext(), R.drawable.icon_share); if (!TextUtils.isEmpty(mImgUrl)) {
image = new UMImage(getPresenterContext(), mImgUrl);
} else {
image = new UMImage(getPresenterContext(), R.drawable.icon_share);
}
UMWeb web = new UMWeb(mUrl); UMWeb web = new UMWeb(mUrl);
web.setTitle(mTitle);//标题 web.setTitle(mTitle);//标题
web.setThumb(image); //缩略图 web.setThumb(image); //缩略图
...@@ -82,9 +90,15 @@ public class WebViewPresenter extends CommonPresenter { ...@@ -82,9 +90,15 @@ public class WebViewPresenter extends CommonPresenter {
if (shareAction == null) { if (shareAction == null) {
shareAction = new ShareAction((Activity) getPresenterContext()).setCallback(shareListener); shareAction = new ShareAction((Activity) getPresenterContext()).setCallback(shareListener);
} }
UMImage image = new UMImage(getPresenterContext(), R.drawable.icon_share);
UMImage image;
if (!TextUtils.isEmpty(mImgUrl)) {
image = new UMImage(getPresenterContext(), mImgUrl);
} else {
image = new UMImage(getPresenterContext(), R.drawable.icon_share);
}
UMWeb web = new UMWeb(mUrl); UMWeb web = new UMWeb(mUrl);
web.setTitle(mTitle);//标题 web.setTitle(TextUtils.isEmpty(mCircleTitle) ? mTitle : mCircleTitle);//标题
web.setThumb(image); //缩略图 web.setThumb(image); //缩略图
shareAction.setPlatform(SHARE_MEDIA.WEIXIN_CIRCLE)//传入平台 shareAction.setPlatform(SHARE_MEDIA.WEIXIN_CIRCLE)//传入平台
.withMedia(web); .withMedia(web);
...@@ -128,9 +142,9 @@ public class WebViewPresenter extends CommonPresenter { ...@@ -128,9 +142,9 @@ public class WebViewPresenter extends CommonPresenter {
@Override @Override
public void onResult(SHARE_MEDIA share_media) { public void onResult(SHARE_MEDIA share_media) {
if (webView != null) { // if (webView != null) {
webView.loadUrl("javascript:shareSuccess()"); // webView.loadUrl("javascript:shareSuccess()");
} // }
} }
@Override @Override
......
package com.rv.share.view;
import android.app.Dialog;
import android.content.Context;
import android.graphics.drawable.Drawable;
import android.support.annotation.NonNull;
import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.view.WindowManager;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.rv.component.utils.DisplayUtil;
import com.rv.share.R;
public class BillDialog extends Dialog {
public BillDialog(@NonNull Context context) {
super(context);
}
public BillDialog(Context context, int themeResId) {
super(context, themeResId);
}
public static class Builder {
private Context mContext;
private ImageView imgClose;
private View.OnClickListener mListener;
private String content;
private LinearLayout llWebview;
public Builder(Context context, View.OnClickListener listener) {
mContext = context;
this.mListener = listener;
}
public Builder(Context context) {
mContext = context;
}
public Builder setContent(String content) {
this.content = content;
return this;
}
public Builder show() {
final BillDialog dialog = create();
dialog.show();
return this;
}
/**
* 创建定制的对话框
*/
public BillDialog create() {
LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
final BillDialog dialog = new BillDialog(mContext, R.style.DialogActivityTheme);
// 获取对话框的布局
View layout = inflater.inflate(R.layout.dialog_bill, null);
// 为对话框添加布局和设置大小
dialog.addContentView(layout, new WindowManager.LayoutParams(WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.WRAP_CONTENT));
this.llWebview = layout.findViewById(R.id.ll_webview);
RvWebView view = new RvWebView(mContext, listener);
llWebview.addView(view);
view.loadUrl("https://www.baidu.com");
this.imgClose = layout.findViewById(R.id.img_close);
this.imgClose.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
dialog.dismiss();
}
});
//默认不能点击对话框其他区域退出 和按返回键退出
dialog.setCancelable(true);
dialog.setContentView(layout);
return dialog;
}
private RvWebView.WebViewListener listener = new RvWebView.WebViewListener() {
@Override
public void share(String url, String title, String desc) {
}
@Override
public void finish() {
}
};
}
}
...@@ -163,6 +163,26 @@ public class RvWebView extends WebView { ...@@ -163,6 +163,26 @@ public class RvWebView extends WebView {
} }
} }
/*******
* @param url
* 跳转url
* @param imgUrl
* 活动图片url
* @param title
* 标题
* @param titleCircle
* 朋友圈标题
* @param desc
* 描述
*/
@JavascriptInterface
public void share(String url, String imgUrl, String title, String titleCircle, String desc) {
if (listener != null) {
listener.share(url, imgUrl, title, titleCircle, desc);
}
}
@JavascriptInterface @JavascriptInterface
public void toMyWallet() { public void toMyWallet() {
...@@ -170,7 +190,7 @@ public class RvWebView extends WebView { ...@@ -170,7 +190,7 @@ public class RvWebView extends WebView {
@JavascriptInterface @JavascriptInterface
public String getCode() { public String getCode() {
String code = Cookie.getStringValue(getContext(), "my_code", ""); String code = Cookie.getStringValue(getContext(), SPConstance.USER_JSON_CODE, "");
return code; return code;
} }
...@@ -183,6 +203,8 @@ public class RvWebView extends WebView { ...@@ -183,6 +203,8 @@ public class RvWebView extends WebView {
public interface WebViewListener { public interface WebViewListener {
void share(String url, String imgUrl, String title, String circleTitle, String desc);
void share(String url, String title, String desc); void share(String url, String title, String desc);
void finish(); void finish();
......
...@@ -84,7 +84,7 @@ public class ShareChoiceDialog implements View.OnClickListener { ...@@ -84,7 +84,7 @@ public class ShareChoiceDialog implements View.OnClickListener {
tvBill.setOnClickListener(this); tvBill.setOnClickListener(this);
tvCancle.setOnClickListener(this); tvCancle.setOnClickListener(this);
dialog.setContentView(view); dialog.setContentView(view);
dialog.setCancelable(false); dialog.setCancelable(true);
} }
public void show() { public void show() {
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:background="#FCE2A8" android:background="#ffe5d0"
android:gravity="center_horizontal" android:gravity="center_horizontal"
android:orientation="vertical" android:orientation="vertical"
......
...@@ -6,15 +6,15 @@ ...@@ -6,15 +6,15 @@
android:orientation="vertical"> android:orientation="vertical">
<FrameLayout <FrameLayout
android:layout_width="@dimen/dialog_width" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:minHeight="@dimen/dialog_min_height" android:minHeight="@dimen/dialog_min_height"
android:orientation="vertical"> android:orientation="vertical">
<ImageView <ImageView
android:id="@+id/img_bg" android:id="@+id/img_bg"
android:layout_width="match_parent" android:layout_width="@dimen/dialog_act_width"
android:layout_height="wrap_content" android:layout_height="@dimen/dialog_act_height"
android:minHeight="@dimen/dialog_min_height" android:minHeight="@dimen/dialog_min_height"
android:scaleType="fitXY" /> android:scaleType="fitXY" />
......
...@@ -2,4 +2,6 @@ ...@@ -2,4 +2,6 @@
<resources> <resources>
<dimen name="dialog_width">150dp</dimen> <dimen name="dialog_width">150dp</dimen>
<dimen name="dialog_min_height">150dp</dimen> <dimen name="dialog_min_height">150dp</dimen>
<dimen name="dialog_act_width">150dp</dimen>
<dimen name="dialog_act_height">200dp</dimen>
</resources> </resources>
...@@ -2,4 +2,6 @@ ...@@ -2,4 +2,6 @@
<resources> <resources>
<dimen name="dialog_width">200dp</dimen> <dimen name="dialog_width">200dp</dimen>
<dimen name="dialog_min_height">200dp</dimen> <dimen name="dialog_min_height">200dp</dimen>
<dimen name="dialog_act_width">200dp</dimen>
<dimen name="dialog_act_height">266.67dp</dimen>
</resources> </resources>
...@@ -2,4 +2,7 @@ ...@@ -2,4 +2,7 @@
<resources> <resources>
<dimen name="dialog_width">300dp</dimen> <dimen name="dialog_width">300dp</dimen>
<dimen name="dialog_min_height">300dp</dimen> <dimen name="dialog_min_height">300dp</dimen>
<dimen name="dialog_act_width">300dp</dimen>
<dimen name="dialog_act_height">400dp</dimen>
</resources> </resources>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment