app/build.gradle
@@ -8,7 +8,15 @@ storeFile file('C:/Users/weikou2015/Desktop/mKey/buxin') storePassword 'weikou2014' } debug { storeFile file('D:\\项目\\返利券\\分身\\签名\\tejia.jks') storePassword 'weikou2014' keyAlias '特价' keyPassword 'weikou2014' } } useLibrary 'org.apache.http.legacy' compileSdkVersion 28 buildToolsVersion '28.0.3' @@ -112,6 +120,7 @@ api project(':APPUpdate') api files('libs/eventbus-2.4.0.jar') api files('libs/universal-image-loader-1.9.5.jar') api files('libs/open_ad_sdk.aar') implementation 'com.github.bumptech.glide:glide:4.9.0' implementation project(path: ':library-gallery') annotationProcessor 'com.github.bumptech.glide:compiler:4.9.0' @@ -250,7 +259,14 @@ implementation 'com.github.hackware1993:MagicIndicator:1.7.0' //广点通广告 implementation(name: 'GDTSDK.unionNormal.4.211.1081', ext: 'aar') implementation(name: 'GDTSDK.unionNormal.4.362.1232', ext: 'aar') implementation 'com.google.android.material:material:1.0.0' compile 'com.github.wendux:DSBridge-Android:3.0-SNAPSHOT' //support the x5 browser core of tencent compile 'com.github.wendux:DSBridge-Android:x5-3.0-SNAPSHOT' compile 'com.wang.avi:library:2.1.3' } app/libs/GDTSDK.unionNormal.4.211.1081.aarBinary files differ
app/libs/GDTSDK.unionNormal.4.362.1232.aarBinary files differ
app/libs/open_ad_sdk.aarBinary files differ
app/src/main/AndroidManifest.xml
@@ -44,13 +44,13 @@ android:name="android.permission.INTERNAL_SYSTEM_WINDOW" tools:ignore="ProtectedPermissions" /> <!-- 显示系统窗口权限 --> <!-- <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />--> <!-- <!– 在 屏幕最顶部显示addview–>--> <!-- <uses-permission android:name="android.permission.SYSTEM_OVERLAY_WINDOW" />--> <!-- <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />--> <!-- <!– 在 屏幕最顶部显示addview–>--> <!-- <uses-permission android:name="android.permission.SYSTEM_OVERLAY_WINDOW" />--> <uses-permission android:name="com.coloros.mcs.permission.RECIEVE_MCS_MESSAGE" /><!-- oppo推送权限 --> <!-- <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />--> <!-- <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />--> <!-- <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />--> <!-- <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />--> <application android:name=".ShoppingApplication" @@ -71,8 +71,8 @@ <activity android:name=".ui.SplashActivity" android:label="@string/app_name" android:theme="@style/fullScreen" android:screenOrientation="portrait"> android:screenOrientation="portrait" android:theme="@style/fullScreen"> <intent-filter> <action android:name="android.intent.action.VIEW" /> @@ -91,7 +91,7 @@ android:launchMode="singleTask" android:screenOrientation="portrait" android:theme="@style/AppTabTheme1" android:windowSoftInputMode="adjustPan" > android:windowSoftInputMode="adjustPan"> <intent-filter> <action android:name="android.intent.action.MAIN" /> @@ -290,7 +290,6 @@ android:screenOrientation="portrait" /> <activity android:name=".ui.mine.ContactActivity" android:configChanges="keyboardHidden|orientation|screenSize" @@ -376,47 +375,8 @@ <activity android:name=".ui.recommend.GoodsDetailActivity" android:screenOrientation="portrait"> </activity> android:screenOrientation="portrait"></activity> <activity android:name=".ui.recommend.GoodsDetailActivityTB" android:screenOrientation="portrait"> <intent-filter> <action android:name=".ui.recommend.GoodsBrowserActivity" /> </intent-filter> </activity> <activity android:name=".ui.recommend.GoodsDetailActivityJD" android:screenOrientation="portrait"> <intent-filter> <action android:name=".ui.recommend.GoodsBrowserActivity" /> </intent-filter> </activity> <activity android:name=".ui.recommend.GoodsDetailActivityPDD" android:screenOrientation="portrait"> <intent-filter> <action android:name=".ui.recommend.GoodsBrowserActivity" /> </intent-filter> </activity> <activity android:name=".ui.recommend.GoodsDetailActivityVIP" android:screenOrientation="portrait"> <intent-filter> <action android:name=".ui.recommend.GoodsBrowserActivity" /> </intent-filter> </activity> <activity android:name=".ui.recommend.GoodsDetailActivitySuning" android:screenOrientation="portrait"> <intent-filter> <action android:name=".ui.recommend.GoodsBrowserActivity" /> </intent-filter> </activity> <activity android:name=".ui.recommend.ShareExplosionsGoodsDetailActivity" android:screenOrientation="portrait"> @@ -749,6 +709,16 @@ <!--vivo推送结束--> <!-- 广点通开始 --> <provider android:name="com.qq.e.comm.GDTFileProvider" android:authorities="${applicationId}.gdt.fileprovider" android:exported="false" android:grantUriPermissions="true"> <meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/filepaths" /> </provider> <uses-library android:name="org.apache.http.legacy" android:required="false" /> @@ -758,18 +728,38 @@ android:exported="false" /> <!-- 请开发者注意字母的大小写,ADActivity,而不是AdActivity --> <activity android:name="com.qq.e.ads.ADActivity" android:name="com.qq.e.tg.ADActivity" android:configChanges="keyboard|keyboardHidden|orientation|screenSize" /> <activity android:name="com.qq.e.ads.PortraitADActivity" android:name="com.qq.e.tg.PortraitADActivity" android:configChanges="keyboard|keyboardHidden|orientation|screenSize" android:screenOrientation="portrait" /> <activity android:name="com.qq.e.ads.LandscapeADActivity" android:name="com.qq.e.tg.LandscapeADActivity" android:configChanges="keyboard|keyboardHidden|orientation|screenSize" android:screenOrientation="landscape" /> <!-- 广点通结束--> <!-- 穿山甲广告开始 --> <provider android:name="com.bytedance.sdk.openadsdk.TTFileProvider" android:authorities="${applicationId}.TTFileProvider" android:exported="false" android:grantUriPermissions="true"> <meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/csj_file_paths" /> </provider> <provider android:name="com.bytedance.sdk.openadsdk.multipro.TTMultiProvider" android:authorities="${applicationId}.TTMultiProvider" android:exported="false" /> <!-- 穿山甲广告结束 --> </application> </manifest> app/src/main/java/com/tejia/lijin/app/ShoppingApi.java
@@ -1670,7 +1670,8 @@ LinkedHashMap<String, String> params = new LinkedHashMap<>(); if (uid != null) params.put("uid", uid + ""); params.put("id", goodsId); params.put("from", from); if (from != null) params.put("from", from); if (!StringUtils.isEmpty(source)) params.put("source", source); if (!StringUtils.isEmpty(couponLink)) @@ -3055,6 +3056,32 @@ commonPostWithFailture(context, BuXinConstant.HOST + "/fanli/api/lijin/goods/getGoodsDetail", params, handler); } /** * 通过淘礼金购买 * * @param context * @param goodsId * @param goodsType * @param lijinId * @param uid * @param from * @param handler */ public static void buyWithLijin(Context context, String goodsId, int goodsType, String lijinId, Long uid, String from, BasicTextHttpResponseHandler handler) { LinkedHashMap<String, String> params = new LinkedHashMap<>(); params.put("goodsId", goodsId); params.put("goodsType", goodsType + ""); if (lijinId != null) params.put("lijinId", lijinId); if (uid != null) params.put("uid", uid + ""); if (from != null) params.put("from", from); commonPostWithFailture(context, BuXinConstant.HOST + "/fanli/api/lijin/goods/buyWithLijin", params, handler); } /** * 淘宝获取商品信息1.3.9 * @@ -3501,7 +3528,7 @@ int version = PackageUtils2.getVersionCode(context); long time = System.currentTimeMillis(); String deviceType = MobileUtil.getSystemModel(); params.put("packages", "com.yeshi.ec.rebate"); params.put("packages", "com.youhuiquan.android"); params.put("Version", version + ""); params.put("appkey", BuXinConstant.TAO_BAO_KE_KEY); params.put("platform", "android"); @@ -3551,7 +3578,7 @@ int version = PackageUtils2.getVersionCode(context); long time = System.currentTimeMillis(); String deviceType = MobileUtil.getSystemModel(); params.put("packages", "com.yeshi.ec.rebate"); params.put("packages", "com.youhuiquan.android"); params.put("Version", version + ""); params.put("appkey", BuXinConstant.TAO_BAO_KE_KEY); params.put("platform", "android"); @@ -3610,7 +3637,7 @@ int version = PackageUtils2.getVersionCode(context); long time = System.currentTimeMillis(); String deviceType = MobileUtil.getSystemModel(); params.put("packages", "com.yeshi.ec.rebate"); params.put("packages", "com.youhuiquan.android"); params.put("Version", version + ""); params.put("appkey", BuXinConstant.TAO_BAO_KE_KEY); params.put("platform", "android"); app/src/main/java/com/tejia/lijin/app/ShoppingApplication.java
@@ -6,15 +6,21 @@ import android.content.Intent; import android.os.Build; import android.os.Process; import androidx.multidex.MultiDex; import android.util.Log; import com.alibaba.baichuan.android.trade.AlibcTradeSDK; import com.alibaba.baichuan.android.trade.callback.AlibcTradeInitCallback; import com.alibaba.baichuan.trade.biz.core.taoke.AlibcTaokeParams; import com.bytedance.sdk.openadsdk.TTAdConfig; import com.bytedance.sdk.openadsdk.TTAdConstant; import com.bytedance.sdk.openadsdk.TTAdSdk; import com.kepler.jd.Listener.AsyncInitListener; import com.kepler.jd.login.KeplerApiManager; import com.qq.e.comm.managers.GDTADManager; import com.tejia.lijin.app.util.Constant; import com.tencent.mm.opensdk.openapi.IWXAPI; import com.umeng.analytics.MobclickAgent; import com.umeng.commonsdk.UMConfigure; @@ -107,8 +113,8 @@ /** * 反射 禁止弹窗 */ private void disableAPIDialog(){ if (Build.VERSION.SDK_INT < 28)return; private void disableAPIDialog() { if (Build.VERSION.SDK_INT < 28) return; try { Class clazz = Class.forName("android.app.ActivityThread"); Method currentActivityThread = clazz.getDeclaredMethod("currentActivityThread"); @@ -122,10 +128,15 @@ } } /** * 京东联盟 * * @param application */ public static void initJd(Application application) { //京东联盟 final String appKey = "0370d4db71dc8d24581e59cabda231f1"; //"7ba8e06b7d6fde3d6bd5db4b0026ecd7"; final String appSecret = "21d22579c7c5487c8d73bff2b82b01cc"; //"fb49bc6ecac5458ba5394fc2969d7c56"; final String appKey = Constant.JD_APP_KEY; final String appSecret = Constant.JD_APP_SECRET; KeplerApiManager.asyncInitSdk(application, appKey, appSecret, new AsyncInitListener() { @Override public void onSuccess() { @@ -152,8 +163,25 @@ return false; } private void initAD(){ GDTADManager.getInstance().initWith(this,"1110527324"); /** * 穿山甲广告初始化 */ private void initAD() { GDTADManager.getInstance().initWith(this, Constant.GDT_APP_ID); TTAdSdk.init(getApplicationContext(), new TTAdConfig.Builder() .appId(Constant.CSJ_APP_ID) .useTextureView(true) //默认使用SurfaceView播放视频广告,当有SurfaceView冲突的场景,可以使用TextureView .appName("特价") .titleBarTheme(TTAdConstant.TITLE_BAR_THEME_DARK)//落地页主题 .allowShowNotify(true) //是否允许sdk展示通知栏提示 .debug(true) //测试阶段打开,可以通过日志排查问题,上线时去除该调用 .directDownloadNetworkType(TTAdConstant.NETWORK_STATE_WIFI) //允许直接下载的网络状态集合,没有设置的网络下点击下载apk会有二次确认弹窗,弹窗中会披露应用信息 .supportMultiProcess(false) //是否支持多进程,true支持 .asyncInit(true) //是否异步初始化sdk,设置为true可以减少SDK初始化耗时。3450版本开始废弃~~ //.httpStack(new MyOkStack3())//自定义网络库,demo中给出了okhttp3版本的样例,其余请自行开发或者咨询工作人员。 .build()); } public IWXAPI mWxApi; app/src/main/java/com/tejia/lijin/app/entity/RedPacket.java
@@ -27,6 +27,9 @@ @Expose private String hongBaoMoney; @Expose private String finalMoney; public String getHongBaoMoney() { return hongBaoMoney; } @@ -91,4 +94,12 @@ public void setRateInfoHelpUrl(String rateInfoHelpUrl) { this.rateInfoHelpUrl = rateInfoHelpUrl; } public String getFinalMoney() { return finalMoney; } public void setFinalMoney(String finalMoney) { this.finalMoney = finalMoney; } } app/src/main/java/com/tejia/lijin/app/entity/goods/GoodsDetailVO.java
@@ -286,6 +286,7 @@ public static class GoodsHongBaoListVO { private String id; // 2-红包 4-返利 private int type; private String subMoney; @@ -295,6 +296,14 @@ private List<GoodsDetailVO.GoodsHongBaoListVO.PriceInfo> priceDetails; private GoodsDetailVO.GoodsHongBaoListVO.UserLevelVO userLevel; private String desc; public String getId() { return id; } public void setId(String id) { this.id = id; } public int getType() { return type; @@ -354,15 +363,15 @@ public static class UserLevelVO { //VIP等级 0-初级 1-青铜 2-白银 3-铂金 private int vipRank; private String vipRank; private String desc; private String link; public int getVipRank() { public String getVipRank() { return vipRank; } public void setVipRank(int vipRank) { public void setVipRank(String vipRank) { this.vipRank = vipRank; } app/src/main/java/com/tejia/lijin/app/ui/BaseActivity.java
@@ -6,6 +6,7 @@ import android.content.res.Resources; import android.os.Bundle; import com.tejia.lijin.app.ui.dialog.ShapeLoadingDialog; import com.umeng.analytics.MobclickAgent; import com.wpc.library.util.common.StringUtils; import com.tejia.lijin.app.util.clipboard.ClipboardUtil; @@ -25,9 +26,12 @@ this.showRecommend = recommend; } protected ShapeLoadingDialog loadingDialog = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); loadingDialog = new ShapeLoadingDialog.Builder(this).build(); } @Override app/src/main/java/com/tejia/lijin/app/ui/dialog/GoodsDetailJumpLoaingDialog.java
New file @@ -0,0 +1,207 @@ package com.tejia.lijin.app.ui.dialog; import android.app.Activity; import android.app.Dialog; import android.content.Context; import android.content.Intent; import android.graphics.drawable.AnimationDrawable; import android.view.LayoutInflater; import android.view.View; import android.widget.FrameLayout; import android.widget.TextView; import com.androidquery.AQuery; import com.tejia.lijin.app.R; import com.tejia.lijin.app.ui.invite.ShareBrowserActivity; import com.tejia.lijin.app.util.Constant; import com.tejia.lijin.app.util.ad.AdUtil; import com.tejia.lijin.app.util.ad.ExpressAdContainer; import com.tejia.lijin.app.util.ad.ExpressAdManager; import com.wpc.library.util.SystemCommon; import com.wpc.library.widget.ResizableImageView; import java.util.List; /** * Created by weikou2015 on 2017/2/28. */ public class GoodsDetailJumpLoaingDialog extends Dialog { public GoodsDetailJumpLoaingDialog(Context context) { super(context); this.setCancelable(false); } public GoodsDetailJumpLoaingDialog(Context context, int theme) { super(context, theme); this.setCancelable(false); } public static class Builder { private Activity context; boolean hasAd; String adPid; String notifyDesc; String notifyUrl; int platform; int time = 5; Runnable runnable = null; IDialogClose dialogCloseListener; public Builder(Activity context) { this.context = context; } public Builder setNotify(String desc, String url) { this.notifyDesc = desc; this.notifyUrl = url; return this; } public Builder setAdPid(String pid) { this.adPid = pid; return this; } public Builder setHasAd(boolean hasAd) { this.hasAd = hasAd; return this; } public Builder setPlatform(int platform) { this.platform = platform; return this; } public Builder setOnCloseListener(IDialogClose dialogCloseListener) { this.dialogCloseListener = dialogCloseListener; return this; } private void initView(AQuery mAuery) { if (!hasAd) { mAuery.id(R.id.ll_notify).visibility(View.GONE); mAuery.id(R.id.ll_top).background(R.drawable.shape_dialog_goods_detail_jump_loading_top_common); mAuery.id(R.id.ll_loading).visibility(View.VISIBLE); mAuery.id(R.id.fl_ad).visibility(View.GONE); mAuery.id(R.id.tv_time).text("正在跳转至"); } else { mAuery.id(R.id.ll_notify).visibility(View.VISIBLE); mAuery.id(R.id.ll_top).background(R.drawable.shape_dialog_goods_detail_jump_loading_top); mAuery.id(R.id.ll_loading).visibility(View.GONE); mAuery.id(R.id.fl_ad).visibility(View.VISIBLE); mAuery.id(R.id.tv_time).text(""); } } public GoodsDetailJumpLoaingDialog create() { LayoutInflater inflater = (LayoutInflater) context .getSystemService(Context.LAYOUT_INFLATER_SERVICE); final GoodsDetailJumpLoaingDialog dialog = new GoodsDetailJumpLoaingDialog(context, R.style.Dialog); View layout = inflater.inflate(R.layout.dialog_goods_detail_jump_loading, null); AQuery mAquery = new AQuery(layout); initView(mAquery); switch (platform) { case Constant.GOODS_TYPE_TB: mAquery.id(R.id.iv_source_type).image(R.drawable.icon_goods_detail_jump_loading_taobao); break; case Constant.GOODS_TYPE_JD: mAquery.id(R.id.iv_source_type).image(R.drawable.icon_goods_detail_jump_loading_jd); break; case Constant.GOODS_TYPE_PDD: mAquery.id(R.id.iv_source_type).image(R.drawable.icon_goods_detail_jump_loading_pdd); break; case Constant.GOODS_TYPE_VIP: mAquery.id(R.id.iv_source_type).image(R.drawable.icon_goods_detail_jump_loading_vipshop); break; case Constant.GOODS_TYPE_SUNING: mAquery.id(R.id.iv_source_type).image(R.drawable.icon_goods_detail_jump_loading_suning); break; } //非VIP if (hasAd) { final FrameLayout fl_ad = (FrameLayout) mAquery.id(R.id.fl_ad_content).getView(); final TextView tv_time = mAquery.id(R.id.tv_time).getTextView(); //填充通知信息 mAquery.id(R.id.tv_notify).text(notifyDesc); mAquery.id(R.id.ll_notify).clicked(new View.OnClickListener() { @Override public void onClick(View v) { context.startActivity(new Intent(context, ShareBrowserActivity.class).putExtra("url", notifyUrl)); } }); //需要展示广告,然后倒计时 mAquery.id(R.id.tv_skip).clicked(new View.OnClickListener() { @Override public void onClick(View v) { if (dialog.isShowing()) dialog.dismiss(); if (dialogCloseListener != null) { dialogCloseListener.onClose(false); } } }); //填充广告 new ExpressAdManager(AdUtil.AD_TYPE.gdt2, context).loadGoodsJumpLoadingAd("", new ExpressAdManager.IAdLoadListener() { @Override public void onSuccess(List<ExpressAdContainer> adList) { if (adList != null && adList.size() > 0) { //广告 ExpressAdManager.renderAndFillAd(context, adList.get(0), fl_ad, new ExpressAdManager.IAdEventListener() { @Override public void closeAd(ExpressAdContainer ad) { } }); } } }); runnable = new Runnable() { @Override public void run() { if (time > 0) { time--; tv_time.setText(String.format("%s秒后自动跳转", time)); tv_time.postDelayed(runnable, 1000); } else { if (dialog.isShowing()) dialog.dismiss(); dialogCloseListener.onClose(true); } } }; tv_time.setText(String.format("%s秒后自动跳转", time)); tv_time.postDelayed(runnable, 1000); } dialog.addContentView(layout, new FrameLayout.LayoutParams( FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.WRAP_CONTENT)); dialog.setContentView(layout); android.view.WindowManager.LayoutParams params = dialog.getWindow() .getAttributes(); params.width = (int) ((SystemCommon.getScreenWidth(context) * 4) / 5); params.height = android.view.WindowManager.LayoutParams.WRAP_CONTENT; dialog.getWindow().setAttributes(params); dialog.setCanceledOnTouchOutside(false); return dialog; } public static interface IDialogClose { public void onClose(boolean auto); } } } app/src/main/java/com/tejia/lijin/app/ui/dialog/GoodsDetailNotifyDialog.java
New file @@ -0,0 +1,117 @@ package com.tejia.lijin.app.ui.dialog; import android.app.Activity; import android.app.Dialog; import android.content.Context; import android.content.Intent; import android.graphics.Color; import android.graphics.drawable.GradientDrawable; import android.view.LayoutInflater; import android.view.View; import android.widget.FrameLayout; import android.widget.TextView; import com.androidquery.AQuery; import com.tejia.lijin.app.R; import com.tejia.lijin.app.ui.invite.ShareBrowserActivity; import com.tejia.lijin.app.util.Constant; import com.tejia.lijin.app.util.ad.AdUtil; import com.tejia.lijin.app.util.ad.ExpressAdContainer; import com.tejia.lijin.app.util.ad.ExpressAdManager; import com.wpc.library.util.SystemCommon; import com.wpc.library.util.common.DimenUtils; import java.util.List; /** * Created by weikou2015 on 2017/2/28. */ public class GoodsDetailNotifyDialog extends Dialog { public GoodsDetailNotifyDialog(Context context) { super(context); this.setCancelable(false); } public GoodsDetailNotifyDialog(Context context, int theme) { super(context, theme); this.setCancelable(false); } public static class Builder { private Activity context; IDialogButtonClick dialogButtonClickListener; public Builder(Activity context) { this.context = context; } public Builder setOnButtonClickListener(IDialogButtonClick dialogCloseListener) { this.dialogButtonClickListener = dialogCloseListener; return this; } public GoodsDetailNotifyDialog create() { LayoutInflater inflater = (LayoutInflater) context .getSystemService(Context.LAYOUT_INFLATER_SERVICE); final GoodsDetailNotifyDialog dialog = new GoodsDetailNotifyDialog(context, R.style.Dialog); View layout = inflater.inflate(R.layout.dialog_goods_detail_notify, null); AQuery mAquery = new AQuery(layout); final TextView tv_create = mAquery.id(R.id.tv_create).getTextView(); final TextView tv_fanli = mAquery.id(R.id.tv_fanli).getTextView(); GradientDrawable gradientDrawable = new GradientDrawable(); gradientDrawable.setStroke(1, Color.parseColor("#F53245")); gradientDrawable.setColor(Color.WHITE); gradientDrawable.setCornerRadius(DimenUtils.dip2px(context, 50)); tv_create.setBackground(gradientDrawable); gradientDrawable = new GradientDrawable(); gradientDrawable.setColor(Color.parseColor("#55BE00")); gradientDrawable.setCornerRadius(DimenUtils.dip2px(context, 50)); tv_fanli.setBackground(gradientDrawable); tv_create.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (dialogButtonClickListener != null) dialogButtonClickListener.onLeftClick(); } }); tv_fanli.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (dialogButtonClickListener != null) dialogButtonClickListener.onRightClick(); } }); dialog.addContentView(layout, new FrameLayout.LayoutParams( FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.WRAP_CONTENT)); dialog.setContentView(layout); android.view.WindowManager.LayoutParams params = dialog.getWindow() .getAttributes(); params.width = (int) ((SystemCommon.getScreenWidth(context) * 4) / 5); params.height = android.view.WindowManager.LayoutParams.WRAP_CONTENT; dialog.getWindow().setAttributes(params); dialog.setCanceledOnTouchOutside(false); return dialog; } public static interface IDialogButtonClick { public void onLeftClick(); public void onRightClick(); } } } app/src/main/java/com/tejia/lijin/app/ui/goods/GoodsDetailHongBaoListAdapter.java
@@ -87,8 +87,8 @@ viewHolder.tv_level_desc.setCompoundDrawablesWithIntrinsicBounds(0, 0, 0, 0); } else { viewHolder.ll_level_info.setVisibility(View.VISIBLE); viewHolder.iv_level.setImageResource(R.drawable.icon_rank_2); viewHolder.tv_level_desc.setText(hongBaoInfo.getUserLevel().getDesc()); viewHolder.iv_level.setImageResource(mContext.getResources().getIdentifier("icon_rank_" + hongBaoInfo.getUserLevel().getVipRank(), "drawable", mContext.getPackageName())); viewHolder.tv_level_desc.setText(hongBaoInfo.getUserLevel().getDesc() == null ? "" : hongBaoInfo.getUserLevel().getDesc()); if (!StringUtils.isNullOrEmpty(hongBaoInfo.getUserLevel().getLink())) { viewHolder.tv_level_desc.setCompoundDrawablesWithIntrinsicBounds(0, 0, R.drawable.icon_goods_detail_hongbao_user_level_more, 0); } else { app/src/main/java/com/tejia/lijin/app/ui/goods/GoodsDetailPreEventManager.java
@@ -121,8 +121,7 @@ action = ACTION_LOGIN; return; } int goodsType = 0; switch (goodsType) { switch (goodsDetail.getGoods().getGoodsType()) { case Constant.GOODS_TYPE_TB: //判断是否授权成功 if (!taoBaoAuthSuccess) { @@ -156,10 +155,10 @@ return; default: pddAuthSuccess(); return; } //用户是否 } public void startClick(int type, IPreEventListener preEventListener) { @@ -172,7 +171,7 @@ private void getTaoBaoH5AuthInfo(final String source, String goodsId, final boolean needJumpAuth, final IAuthResult authResultListener) { if (pd == null) pd = new ShapeLoadingDialog.Builder(mContext).build(); pd = new ShapeLoadingDialog.Builder(mActivity).build(); if (!pd.isShowing()) pd.show(); Log.e("detail", "getTaoBaoH5AuthInfo--" + source); @@ -278,6 +277,7 @@ @Override public void onFailure(int statusCode, Header[] headers, String jsonObject, Throwable e) { super.onFailure(statusCode, headers, jsonObject, e); Toast.makeText(mContext, "网络请求出错", Toast.LENGTH_SHORT).show(); } @Override @@ -315,6 +315,7 @@ @Override public void onFailure(int statusCode, Header[] headers, String jsonObject, Throwable e) { super.onFailure(statusCode, headers, jsonObject, e); Toast.makeText(mContext, "网络请求出错", Toast.LENGTH_SHORT).show(); } @Override app/src/main/java/com/tejia/lijin/app/ui/invite/ShareBrowserActivity.java
@@ -3,9 +3,7 @@ import android.Manifest; import android.annotation.SuppressLint; import android.app.Activity; import android.app.AlertDialog; import android.content.ClipData; import android.content.DialogInterface; import android.content.Intent; import android.content.pm.ActivityInfo; import android.graphics.PixelFormat; @@ -16,8 +14,8 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.annotation.RequiresApi; import wendu.dsbridge.DWebView; import android.util.Base64; import android.util.Log; import android.view.KeyEvent; import android.view.View; @@ -42,13 +40,14 @@ import android.widget.PopupWindow; import android.widget.ProgressBar; import android.widget.TextView; import android.widget.Toast; import com.ali.auth.third.ui.context.CallbackContext; import com.alibaba.baichuan.android.trade.model.AlibcShowParams; import com.alibaba.baichuan.trade.biz.AlibcConstants; import com.alibaba.baichuan.trade.biz.applink.adapter.AlibcFailModeType; import com.tejia.lijin.app.ui.recommend.GoodsDetailActivity; import com.tejia.lijin.app.util.web.RebateJavaInterfaceBS; import com.tejia.lijin.app.util.web.WebViewUtil; import com.umeng.analytics.MobclickAgent; import com.wpc.library.okhttp.OkHttpUtils; import com.wpc.library.util.JDLinkCutUtil; @@ -71,16 +70,12 @@ import com.tejia.lijin.app.ui.recommend.NoExtendPDDGoodsActivity; import com.tejia.lijin.app.ui.recommend.NoExtendTaoBaoGoodsActivity; import com.tejia.lijin.app.util.AndroidBug5497Workaround; import com.tejia.lijin.app.util.ApkUtil; import com.tejia.lijin.app.util.Constant; import com.tejia.lijin.app.util.KeFuUtil; import com.tejia.lijin.app.util.PermissionHelper; import com.tejia.lijin.app.util.RebateJavaInterface; import com.tejia.lijin.app.util.Tools; import com.tejia.lijin.app.util.web.RebateJavaInterface; import com.tejia.lijin.app.util.TopStatusSettings; import com.tejia.lijin.app.util.baichuan.AlibcTradeUtil; import com.tejia.lijin.app.util.clipboard.ClipboardUtil; import com.tejia.lijin.app.util.goods.GoodsDetailJumpUtil; import com.tejia.lijin.app.util.web.CustomNavigationJsObject; import org.apache.http.Header; @@ -101,7 +96,7 @@ private TextView tv_top_bar_left2; private ImageView iv_right; private Button tv_top_bar_middle; private WebView webview; private DWebView webview; private FrameLayout fl_webview; View v_cover_web; ProgressBar progressBar; @@ -118,14 +113,21 @@ private boolean interceptGoodsDetail; private String originalUrl = ""; //沉浸式网页 private boolean immersion = false; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); String immersionStr = getIntent().getStringExtra("immersion"); if (!StringUtils.isNullOrEmpty(immersionStr) && Boolean.parseBoolean(immersionStr)) { immersion = true; } setContentView(R.layout.browser_activity); AndroidBug5497Workaround.assistActivity(this); TopStatusSettings.setStatusViewAndDeepColor(this); String url = getIntent().getStringExtra("url"); String url = "http://192.168.3.122:8848/tejia-web/dsbridge-test.html";//getIntent().getStringExtra("url"); originalUrl = url; //是否允许粘贴板推荐 String clipboradStr = getIntent().getStringExtra("clipboard"); @@ -165,7 +167,7 @@ // tv_top_bar_middle.setText("奥术大师大所大所多奥术大师"); pd = new ShapeLoadingDialog.Builder(this).build(); webview = new WebView(ShareBrowserActivity.this); webview = new DWebView(ShareBrowserActivity.this); fl_webview.addView(webview, new FrameLayout.LayoutParams( FrameLayout.LayoutParams.MATCH_PARENT, @@ -214,6 +216,11 @@ webview.addJavascriptInterface(javaInterface, "yestv"); CustomNavigationJsObject customNavigation = new CustomNavigationJsObject(this); webview.addJavascriptInterface(customNavigation, "czb");//第二个参数czb不可更改, RebateJavaInterfaceBS javaInterface1 = new RebateJavaInterfaceBS(ShareBrowserActivity.this, tv_top_bar_middle, tv_top_bar_left2, new TextView(this), iv_right, webview, pd); webview.addJavascriptObject(javaInterface1, "yestv"); /*** * Android5.0开始,WebView默认不支持同时加载Https和Http混合模式 * WebView在微信网页中首先打开一个https网址,然后它会被重定向到一个http网址 @@ -297,85 +304,9 @@ return true; } } if (url != null && url.startsWith("yestv://copy")) { String murl = url.split("yestv://")[1]; String[] params = murl.split("#"); byte raw[] = Base64.decode(params[1], Base64.DEFAULT); ClipboardUtil.copy(getApplicationContext(), new String(raw)); Toast.makeText(ShareBrowserActivity.this, "复制成功", Toast.LENGTH_SHORT).show(); return true; } else if (url != null && url.startsWith("yestv://toast")) { String murl = url.split("yestv://")[1]; String[] params = murl.split("#"); byte raw[] = Base64.decode(params[1], Base64.DEFAULT); String content = new String(raw); Toast.makeText(ShareBrowserActivity.this, content, Toast.LENGTH_LONG).show(); return true; } if (url != null && !url.startsWith("http")) { if (url.startsWith("weixin://wap/pay?")) { if (Tools.isWeixinAvilible(ShareBrowserActivity.this) == 2) { Toast.makeText(ShareBrowserActivity.this, "尚未安装微信", Toast.LENGTH_LONG).show(); return true; } Intent intent = new Intent(); intent.setAction(Intent.ACTION_VIEW); intent.setData(Uri.parse(url)); startActivity(intent); } else if (url.startsWith("alipays:") || url.startsWith("alipay")) { try { startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url))); } catch (Exception e) { new AlertDialog.Builder(ShareBrowserActivity.this) .setMessage("未检测到支付宝客户端,请安装后重试。") .setPositiveButton("立即安装", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Uri alipayUrl = Uri.parse("https://d.alipay.com"); startActivity(new Intent("android.intent.action.VIEW", alipayUrl)); } }).setNegativeButton("取消", null).show(); } } else if (url.startsWith("pinduoduo://")) {//拦截拼多多页面 if (ApkUtil.checkAPP(getApplicationContext(), "com.xunmeng.pinduoduo")) { Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent); return true; } else { return true; } } else if (url.startsWith("suning://")) {//苏宁 if (ApkUtil.checkAPP(getApplicationContext(), "com.suning.mobile.ebuy")) { Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent); return true; } else return true; } else if (url.startsWith("vipshop://")) {//唯品会 if (ApkUtil.checkAPP(getApplicationContext(), "com.achievo.vipshop")) { Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent); return true; } else return true; } return true; } if (url.endsWith(".apk")) { Intent intent = new Intent(Intent.ACTION_VIEW); intent.addCategory(Intent.CATEGORY_BROWSABLE); intent.setData(Uri.parse(url)); startActivity(intent); } Boolean intercept = WebViewUtil.interceptUrl(getApplicationContext(), url); if (intercept != null) return intercept; return super.shouldOverrideUrlLoading(view, url); } app/src/main/java/com/tejia/lijin/app/ui/main/MainActivity.java
@@ -283,20 +283,6 @@ registeredOPPOId();//上传OPPO_RegId // onPush_OFF_NO();//检测是否打开推送 registeredVIVOId();//上传VIVO_RegId tv_msg_num2.postDelayed(new Runnable() { @Override public void run() { //测试 Bundle bundle = new Bundle(); bundle.putString("goodsId", "19711731038"); bundle.putString("goodsType", 1+""); startActivity(new Intent(getApplicationContext(), GoodsDetailActivity.class).putExtras(bundle)); } },5000); } private void choiceTab(Integer tab, Integer subTab) { app/src/main/java/com/tejia/lijin/app/ui/mine/LoginSelectActivity.java
@@ -71,7 +71,7 @@ private AliyunSmsOneKeyLoginManager aliyunSmsOneKeyLoginManager; private boolean showOnkeyLoginToast = true; private boolean showOnkeyLoginToast = false; @Override @@ -84,7 +84,7 @@ String from = getIntent().getStringExtra("from"); UserCustomEvent.userLogin(this, StringUtils.isEmpty(from) ? "其它" : from); EventBus.getDefault().register(this); aliyunSmsOneKeyLoginManager = new AliyunSmsOneKeyLoginManager(this, null); aliyunSmsOneKeyLoginManager = new AliyunSmsOneKeyLoginManager(this, "zTsQ9uC74C7EsD4h1II3+0CsxtXbz8VikP//49QvybqgZLOsv4pCQ4yW5fz1Ogt4QFuTqHdictmxHm7KvMAd+dl8peJL+xpGFZjjAMcqNkqcSLptS358E+EpbITK4yYjDS1gbQQKuPiODw88UUWlhcCMye7gm3eF9AWNuZ7fQKVONWl/0wube5iXegJ6ZOfhJiYQDZqsKzgmxU/MdPKWOlKCS9NtefDmgCYMM9S6GQODkxPZm+wDqJ89dXMtU5ejBhMMv63t7eug9SfEGfmEnG31JXD9MCQ00t7e8VLeCfanFoZTquLD5w=="); aliyunSmsOneKeyLoginManager.init(new AliyunSmsOneKeyLoginManager.IOneKeyLoginListener() { @Override @@ -97,7 +97,7 @@ @Override public void onCancel() { showOnkeyLoginToast = false; showOnkeyLoginToast = true; } @Override @@ -189,6 +189,7 @@ *添加监听 */ private void addListener() { tv_login_gain_sms.setOnClickListener(this); tv_user_agreement.setOnClickListener(this); tv_other_login.setOnClickListener(this); tv_privacy_policies.setOnClickListener(this); @@ -211,8 +212,8 @@ @Override public void afterTextChanged(Editable editable) { // fl_login_gain_sms.setEnabled(editable.length() == 13 ? true : false); // fl_login_gain_sms.setBackgroundResource(editable.length() == 13 ? tv_login_gain_sms.setEnabled(editable.length() == 13 ? true : false); // tv_login_gain_sms.setBackgroundResource(editable.length() == 13 ? // R.drawable.shape_mobile_login_light : R.drawable.shape_login_gain_sms); } }); app/src/main/java/com/tejia/lijin/app/ui/recommend/GoodsDetailActivity.java
@@ -1,5 +1,6 @@ package com.tejia.lijin.app.ui.recommend; import android.app.Dialog; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; @@ -42,6 +43,7 @@ import com.tejia.lijin.app.BasicTextHttpResponseHandler; import com.tejia.lijin.app.R; import com.tejia.lijin.app.ShoppingApi; import com.tejia.lijin.app.entity.CouponInfo; import com.tejia.lijin.app.entity.CouponUser; import com.tejia.lijin.app.entity.GoodsDetail; import com.tejia.lijin.app.entity.PushEventData; @@ -50,6 +52,8 @@ import com.tejia.lijin.app.entity.goods.GoodsDetailVO; import com.tejia.lijin.app.ui.BaseActivity; import com.tejia.lijin.app.ui.dialog.GoodsDetailHongBaoAndCouponSelectDialog; import com.tejia.lijin.app.ui.dialog.GoodsDetailJumpLoaingDialog; import com.tejia.lijin.app.ui.dialog.GoodsDetailNotifyDialog; import com.tejia.lijin.app.ui.dialog.JumpTaoBaoDialog; import com.tejia.lijin.app.ui.goods.GoodsDetailHongBaoListAdapter; import com.tejia.lijin.app.ui.goods.GoodsDetailPreEventManager; @@ -61,12 +65,15 @@ import com.tejia.lijin.app.util.FlowLayout; import com.tejia.lijin.app.util.GlideCircleTransform; import com.tejia.lijin.app.util.GlideRoundTransform; import com.tejia.lijin.app.util.GoodsBuyJumpUtil; import com.tejia.lijin.app.util.ImageUtil; import com.tejia.lijin.app.util.SetLabels; import com.tejia.lijin.app.util.Toast_Dialog; import com.tejia.lijin.app.util.TopStatusSettings; import com.tejia.lijin.app.util.clipboard.ClipboardUtil; import com.tejia.lijin.app.util.goods.GoodsBuyUtil; import com.tejia.lijin.app.util.ui.GoodsDetailUtil; import com.tejia.lijin.app.util.ui.dialog.DialogUtil; import com.tejia.lijin.app.util.umengCustomEvent.GoodsCustomEvent; import com.tejia.lijin.app.util.user.LoginAndInviteStatusUtil; import com.tejia.lijin.app.util.user.UserUtil; @@ -150,6 +157,7 @@ private LinearLayout ll_loading; private ImageView iv_loading; private TextView tv_loading; private View view_goods_imgs_tag;//用来标识导航栏选中 //猜你喜欢 private LinearLayout ll_guess_like; @@ -220,6 +228,7 @@ tv_loading = findViewById(R.id.tv_loading); iv_loading = findViewById(R.id.iv_loading); webView = findViewById(R.id.webView); view_goods_imgs_tag = findViewById(R.id.view_goods_imgs_tag); vp_goods_detail = findViewById(R.id.vp_goods_img); @@ -307,7 +316,6 @@ avLoadingIndicatorView.setVisibility(View.VISIBLE); Animation ani = AnimationUtils.loadAnimation(this, R.anim.touming); //申明一个动画 avLoadingIndicatorView.setAnimation(ani);//为图片绑定动画 ll_content.setVisibility(View.GONE); fl_face.setVisibility(View.VISIBLE); bannerAdapter = new ImageAdapter(mBanners, this); vp_goods_detail.setAdapter(bannerAdapter); @@ -402,10 +410,8 @@ if (scrollY < fl_goods_detail.getTop()) {//头部 setPosition(1); } else if (scrollY >= (fl_goods_detail.getTop() - titleHeight) && scrollY < ll_guess_like.getTop()) {//详情图片 && scrollY < view_goods_imgs_tag.getTop()) {//详情图片 setPosition(2); } else if (scrollY >= ll_guess_like.getTop() - titleHeight) {//猜你喜欢 setPosition(4); } else { setPosition(4); } @@ -554,6 +560,8 @@ } GoodsDetailNotifyDialog notifyDialog; @Override protected void onCreate(Bundle arg0) { super.onCreate(arg0); @@ -565,6 +573,30 @@ initView(); initData(); getAppPageNotification(); // new GoodsDetailJumpLoaingDialog.Builder(this).setHasAd(true).setAdPid("").setNotify("铂金会员免广告,礼金提高100%", "http://www.baidu.com").setPlatform(Constant.GOODS_TYPE_TB).setOnCloseListener(new GoodsDetailJumpLoaingDialog.Builder.IDialogClose() { // @Override // public void onClose(boolean auto) { // } // }).create().show(); } public void showNotifyDialog() { if (notifyDialog == null) notifyDialog = new GoodsDetailNotifyDialog.Builder(this).setOnButtonClickListener(new GoodsDetailNotifyDialog.Builder.IDialogButtonClick() { @Override public void onLeftClick() { DialogUtil.dismiss(notifyDialog); } @Override public void onRightClick() { DialogUtil.dismiss(notifyDialog); goFanli(); } }).create(); DialogUtil.show(notifyDialog); } @@ -710,7 +742,10 @@ tv_name.setText(mInfo.getGoods().getTitle()); webView.loadUrl(mInfo.getExtra().getDetailUrl()); tv_sales_num.setText(GoodsDetailUtil.getSalesTypeDesc(mInfo.getGoods().getSalesType()) + " " + mInfo.getGoods().getSalesCount()); if (StringUtils.isNullOrEmpty(mInfo.getGoods().getSalesCount())) { tv_sales_num.setText(""); } else tv_sales_num.setText(GoodsDetailUtil.getSalesTypeDesc(mInfo.getGoods().getSalesType()) + " " + mInfo.getGoods().getSalesCount()); if (mInfo.getGoods().getShopInfo() != null) { ll_shop.setVisibility(View.VISIBLE); @@ -722,7 +757,7 @@ tv_shop_name.setText(mInfo.getGoods().getShopInfo().getShopName()); try { GoodsDetailUtil.fillShopType(tv_shop_type, mInfo.getGoods().getShopInfo().getUserType()); GoodsDetailUtil.fillShopType(tv_shop_type, mInfo.getGoods().getShopType()); if (!StringUtils.isNullOrEmpty(mInfo.getGoods().getShopInfo().getScoreGoods())) { tv_shop_des.setText("宝贝描述: " + mInfo.getGoods().getShopInfo().getScoreGoods()); @@ -781,10 +816,7 @@ initFanliAndBuyBtn(mInfo.getExtra().isBuyValid(), mInfo.getExtra().isFanliValid()); requestState(0); sv_goods.scrollTo(0, 0); // ll_content.setVisibility(View.VISIBLE); // fl_face.setVisibility(View.GONE); } else if (jsonObject.optString("code").equalsIgnoreCase("2")) { ll_content.setVisibility(View.GONE); findViewById(R.id.ll_goods_nothing).setVisibility(View.VISIBLE); fl_face.setVisibility(View.VISIBLE); } @@ -1101,10 +1133,15 @@ * @param state */ private void requestState(int state) { ll_content.setVisibility(state == 0 ? View.VISIBLE : View.GONE); // fl_face.setVisibility(state != 0 ? View.VISIBLE : View.GONE); ll_no_data.setVisibility(state == 1 ? View.VISIBLE : View.GONE); ll_request_failture.setVisibility(state == 2 ? View.VISIBLE : View.GONE); ll_no_net.setVisibility(state == 3 ? View.VISIBLE : View.GONE); if (mInfo == null) { fl_face.setVisibility(View.VISIBLE); } else { fl_face.setVisibility(View.GONE); } } @Override @@ -1125,43 +1162,56 @@ private void goFanli() { new GoodsDetailHongBaoAndCouponSelectDialog.Builder(this).setCouponList(mInfo.getGoods().getCouponInfoList()).setItemClickListener(new GoodsDetailHongBaoAndCouponSelectDialog.OnItemClickListener() { @Override public void onClick(int p) { goodsDetailPreEventManager.startClick(0, new GoodsDetailPreEventManager.IPreEventListener() { @Override public void onPreSuccess() { //TODO 返利 } }); } }).create().show(); if (mInfo.getGoods().getCouponInfoList() != null && mInfo.getGoods().getCouponInfoList().size() > 1) { new GoodsDetailHongBaoAndCouponSelectDialog.Builder(this).setCouponList(mInfo.getGoods().getCouponInfoList()).setItemClickListener(new GoodsDetailHongBaoAndCouponSelectDialog.OnItemClickListener() { @Override public void onClick(int p) { goFanli(mInfo.getGoods().getCouponInfoList().get(p)); } }).create().show(); } else { goFanli(null); } //判断是否有多张券情况 } private void goFanli(final CouponInfo couponInfo) { goodsDetailPreEventManager.startClick(0, new GoodsDetailPreEventManager.IPreEventListener() { @Override public void onPreSuccess() { fanliRequest(couponInfo); } }); } private void goBuy() { List<GoodsDetailVO.GoodsHongBaoListVO> hongBaoList = new ArrayList<>(); final List<GoodsDetailVO.GoodsHongBaoListVO> hongBaoList = new ArrayList<>(); hongBaoList.addAll(mInfo.getGoods().getPriceList()); for (int i = 0; i < hongBaoList.size(); i++) { if (hongBaoList.get(i).getType() != 2) { hongBaoList.remove(i--); } } if (hongBaoList.size() > 1) { new GoodsDetailHongBaoAndCouponSelectDialog.Builder(this).setHongBaoList(hongBaoList).setItemClickListener(new GoodsDetailHongBaoAndCouponSelectDialog.OnItemClickListener() { @Override public void onClick(int p) { goBuy(hongBaoList.get(p)); } }).create().show(); } else { if (hongBaoList.size() > 0) goBuy(hongBaoList.get(0)); } } new GoodsDetailHongBaoAndCouponSelectDialog.Builder(this).setHongBaoList(hongBaoList).setItemClickListener(new GoodsDetailHongBaoAndCouponSelectDialog.OnItemClickListener() { private void goBuy(final GoodsDetailVO.GoodsHongBaoListVO lijinVO) { goodsDetailPreEventManager.startClick(1, new GoodsDetailPreEventManager.IPreEventListener() { @Override public void onClick(int p) { goodsDetailPreEventManager.startClick(1, new GoodsDetailPreEventManager.IPreEventListener() { @Override public void onPreSuccess() { //TODO 购买 } }); public void onPreSuccess() { buyRequest(lijinVO); } }).create().show(); }); } @@ -1239,7 +1289,11 @@ @Override public void onHongBaoClick(int p, GoodsDetailVO.GoodsHongBaoListVO info) { if (info.getType() == 4) { goFanli(null); } else { goBuy(info); } } @Override @@ -1292,4 +1346,145 @@ }); } private void buyRequest(GoodsDetailVO.GoodsHongBaoListVO goodsHongBaoListVO) { ShoppingApi.buyWithLijin(getApplicationContext(), mInfo.getGoods().getGoodsId(), mInfo.getGoods().getGoodsType(), goodsHongBaoListVO.getId(), UserUtil.getUid(getApplicationContext()), from, new BasicTextHttpResponseHandler() { @Override public void onStart() { super.onStart(); if (loadingDialog != null && !loadingDialog.isShowing()) loadingDialog.show(); } @Override public void onSuccessPerfect(int statusCode, Header[] headers, JSONObject jsonObject) throws Exception { super.onSuccessPerfect(statusCode, headers, jsonObject); int code = jsonObject.optInt("code"); if (code == 0) { JSONObject data = jsonObject.optJSONObject("data"); JSONObject link = data.optJSONObject("link"); if (link != null) { GoodsBuyJumpUtil.jumpTB(GoodsDetailActivity.this, null, link.optString("clickUrl"), null, new GoodsBuyUtil.IBuyGoodsResultListener() { @Override public void onConvertLinkStart() { } @Override public void onConvertLinkSuccess() { } @Override public void onConvertLinkFail(String msg) { } @Override public void onConvertLinkComplete() { } @Override public void onJumpThirdAppStart() { } @Override public void onJumpThirdAppSuccess() { } @Override public void onJumpThirdAppFail() { } }); } } else { if (code == 2001) { //用户机会已经用完了 showNotifyDialog(); } else Toast.makeText(GoodsDetailActivity.this, jsonObject.optString("msg"), Toast.LENGTH_SHORT).show(); } } @Override public void onFailure(int statusCode, Header[] headers, String jsonObject, Throwable e) { super.onFailure(statusCode, headers, jsonObject, e); } @Override public void onFinish() { super.onFinish(); if (loadingDialog != null && loadingDialog.isShowing()) loadingDialog.dismiss(); } }); } private void fanliRequest(CouponInfo couponInfo) { GoodsBuyUtil.GoodsBuyRequestInfo requestInfo = new GoodsBuyUtil.GoodsBuyRequestInfo(); requestInfo.setGoodsId(mInfo.getGoods().getGoodsId()); requestInfo.setGoodsType(mInfo.getGoods().getGoodsType()); if (couponInfo != null) requestInfo.setCouponLink(couponInfo.getLink()); requestInfo.setUid(UserUtil.getUid(getApplicationContext())); requestInfo.setFrom(from); //返利 GoodsBuyUtil.fanli(this, getApplicationContext(), requestInfo, new GoodsBuyUtil.IBuyGoodsResultListener() { @Override public void onConvertLinkStart() { if (loadingDialog != null && !loadingDialog.isShowing()) loadingDialog.show(); } @Override public void onConvertLinkSuccess() { } @Override public void onConvertLinkFail(String msg) { } @Override public void onConvertLinkComplete() { if (loadingDialog != null && loadingDialog.isShowing()) loadingDialog.dismiss(); } @Override public void onJumpThirdAppStart() { } @Override public void onJumpThirdAppSuccess() { } @Override public void onJumpThirdAppFail() { } }); } /** * 获取购买机会信息 */ private void getBuyChanceInfoRequest() { //TODO 判断是否还有机会(返回当前剩余多少次,还能解锁多少次),如果有机会需要看激励视频广告 } } app/src/main/java/com/tejia/lijin/app/ui/trends/SendCircleAdapter.java
@@ -33,6 +33,8 @@ import com.nostra13.universalimageloader.core.assist.ImageScaleType; import com.nostra13.universalimageloader.core.display.RoundedBitmapDisplayer; import com.tejia.lijin.app.ui.recommend.GoodsDetailActivity; import com.tejia.lijin.app.util.goods.GoodsDetailListUtil; import com.tejia.lijin.app.util.ui.GoodsRightViewHolder; import com.viewpagerindicator.CirclePageIndicator; import com.wpc.library.util.SystemCommon; import com.wpc.library.util.common.DimenUtils; @@ -143,8 +145,8 @@ SendCircleImageGoods imageGoods = imageList.get(position).getGoods(); int goodsType = imageGoods.getGoodsType(); //跳转商品详情 Intent intent= new Intent(mContext, GoodsDetailActivity.class); intent.putExtra("goodsId",imageGoods.getGoodsId()); Intent intent = new Intent(mContext, GoodsDetailActivity.class); intent.putExtra("goodsId", imageGoods.getGoodsId()); intent.putExtra("goodsType", goodsType); intent.putExtra("from", "faquan"); mContext.startActivity(intent); @@ -323,10 +325,10 @@ if (circleContentHolder.rv_content.getItemDecorationCount() == 0) { circleContentHolder.rv_content.addItemDecoration(new SpaceItemDecoration(largeImageCount, smallImageCount + invalidImageCount, goodsCount, commentCount, circleContent.getLineNum(), DimenUtils.dip2px(mContext, 2))); circleContentHolder.rv_content.addItemDecoration(new SpaceItemDecoration(largeImageCount, smallImageCount + invalidImageCount, goodsCount, commentCount, circleContent.getLineNum(), DimenUtils.dip2px(mContext, 1))); } else { SpaceItemDecoration spaceItemDecoration = (SpaceItemDecoration) circleContentHolder.rv_content.getItemDecorationAt(0); spaceItemDecoration.initData(largeImageCount, smallImageCount + invalidImageCount, goodsCount, commentCount, circleContent.getLineNum(), DimenUtils.dip2px(mContext, 2)); spaceItemDecoration.initData(largeImageCount, smallImageCount + invalidImageCount, goodsCount, commentCount, circleContent.getLineNum(), DimenUtils.dip2px(mContext, 1)); } if (maxImgHeight == null) { @@ -599,7 +601,7 @@ if (imgInfo.isLarge()) width = maxImgWidth; else { width = (maxImgWidth - DimenUtils.dip2px(mContext, 2) * 8) / 3; width = (maxImgWidth - DimenUtils.dip2px(mContext, 2) * 3) / 3; } height = (int) (width * ratio); params.width = width; @@ -671,48 +673,11 @@ }); } else if (holder1 instanceof GoodsViewHolder) { GoodsViewHolder goodsViewHolder = (GoodsViewHolder) holder1; final TaoBaoGoodsBrief info = goods; String disCount; if (info.isHasCoupon()) { goodsViewHolder.ll_coupon_bg.setVisibility(View.VISIBLE); disCount = "¥ " + info.getCouponPrice(); goodsViewHolder.tv_coupon_price.setText("¥ " + info.getCouponInfo().getAmount()); } else { goodsViewHolder.ll_coupon_bg.setVisibility(View.GONE); disCount = "¥ " + info.getZkPrice(); } if (info.getShopType() == 11) {//天猫 goodsViewHolder.iv_shop_type.setImageResource(R.drawable.ic_tmall); } else if (info.getShopType() == 20 || info.getShopType() == 21) { goodsViewHolder.iv_shop_type.setImageResource(R.drawable.ic_jingdong); } else if (info.getShopType() == 30) { goodsViewHolder.iv_shop_type.setImageResource(R.drawable.ic_pinduoduo); } else { goodsViewHolder.iv_shop_type.setImageResource(R.drawable.icon); } int pos = disCount.indexOf("."); Spannable span = new SpannableString(disCount); span.setSpan(new RelativeSizeSpan(1.54f), 1, pos > 1 ? pos : disCount.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); goodsViewHolder.tv_price.setText(span); goodsViewHolder.tv_sales_num.setText(info.getSalesType() == 1 ? "月销 " + info.getSalesCount() : info.getSalesType() == 2 ? "2小时销量 " + info.getSalesCount() : info.getSalesType() == 3 ? "今日销量 " + info.getSalesCount() : "总销量 " + info.getSalesCount()); goodsViewHolder.tv_zkprice.setText("¥" + info.getZkPrice()); goodsViewHolder.tv_zkprice.setPaintFlags(goodsViewHolder.tv_zkprice.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG); goodsViewHolder.tv_favourable.setBackgroundResource(R.drawable.shape_goods_list_price_fan); goodsViewHolder.tv_favourable.setText(" 奖 " + info.getMoneyInfo().getShareMoney()); goodsViewHolder.tv_favourable.setVisibility(View.GONE); if (info.getState() != 0) { GoodsDetailListUtil.setGoodsDetail(context, content.getGoods(), goodsViewHolder.goodsRightViewHolder); if (content.getGoods().getState() != 0) { goodsViewHolder.view.setOnClickListener(null); goodsViewHolder.iv_state_invalid.setVisibility(View.VISIBLE); } else { @@ -722,8 +687,8 @@ public void onClick(View v) { //跳转商品详情 Intent intent = new Intent(mContext, GoodsDetailActivity.class); intent.putExtra("goodsId", info.getGoodsId()); intent.putExtra("goodsType", info.getGoodsType()); intent.putExtra("goodsId", content.getGoods().getGoodsId()); intent.putExtra("goodsType", content.getGoods().getGoodsType()); intent.putExtra("from", "faquan"); mContext.startActivity(intent); } @@ -920,23 +885,15 @@ class GoodsViewHolder extends RecyclerView.ViewHolder { private View view; //商品信息控件 private TextView tv_price, tv_zkprice, tv_sales_num, tv_coupon_price, tv_favourable; private LinearLayout ll_coupon_bg; private GoodsRightViewHolder goodsRightViewHolder; //过期标识 private ImageView iv_state_invalid, iv_shop_type; private ImageView iv_state_invalid; public GoodsViewHolder(View view) { super(view); this.view = view; tv_price = view.findViewById(R.id.tv_price); tv_zkprice = view.findViewById(R.id.tv_zkprice); tv_sales_num = view.findViewById(R.id.tv_sales_num); tv_coupon_price = view.findViewById(R.id.tv_coupon_price1); tv_favourable = view.findViewById(R.id.tv_favourable); ll_coupon_bg = view.findViewById(R.id.ll_coupon_bg1); iv_state_invalid = view.findViewById(R.id.iv_state_invalid); iv_shop_type = view.findViewById(R.id.iv_shop_type); goodsRightViewHolder = new GoodsRightViewHolder(view); } } } @@ -971,7 +928,7 @@ public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) { int position = parent.getChildLayoutPosition(view); if (position < largeImgCount) { outRect.bottom = space * 3; outRect.bottom = space * 6; if (position == 0) outRect.top = 0; } else if (position < largeImgCount + smallImageCount) { @@ -990,14 +947,23 @@ outRect.left = space; outRect.right = space; } //判断是否为最后一行 int currentRow = cposition / lineNum; int totalRow=smallImageCount%lineNum==0?smallImageCount/lineNum:smallImageCount/lineNum+1; if(currentRow+1==totalRow){ outRect.bottom = space * 6; } } else if (position < largeImgCount + smallImageCount + goodsCount) { outRect.bottom = space; outRect.bottom = space * 3; outRect.top = 0; outRect.left = 0; outRect.right = 0; } else if (position < largeImgCount + smallImageCount + goodsCount + commentCount) { outRect.bottom = space * 2; outRect.top = space * 2; outRect.bottom = space * 3; outRect.top = space * 3; int cposition = position - (largeImgCount + smallImageCount + goodsCount + commentCount); if (cposition == 0 && goodsCount > 0) outRect.top = 0; app/src/main/java/com/tejia/lijin/app/util/Constant.java
@@ -24,4 +24,17 @@ } return ""; } public final static String WX_APP_ID = "wx8477d2bb1d68a1cc"; public final static String QQ_APP_ID = "1111732008"; public final static String CSJ_APP_ID = "5171164"; public final static String GDT_APP_ID = "1110527324"; public final static String JD_APP_KEY = "b66094a3c2ca85886804be182294be60"; public final static String JD_APP_SECRET = "57102d86629243e5845947d10db3fd57"; } app/src/main/java/com/tejia/lijin/app/util/GoodsBuyJumpUtil.java
@@ -7,19 +7,63 @@ import android.net.Uri; import android.util.Log; import android.view.View; import android.webkit.WebChromeClient; import android.webkit.WebViewClient; import com.alibaba.baichuan.android.trade.AlibcTradeSDK; import com.alibaba.baichuan.android.trade.model.AlibcShowParams; import com.alibaba.baichuan.android.trade.model.OpenType; import com.alibaba.baichuan.trade.biz.AlibcConstants; import com.alibaba.baichuan.trade.biz.applink.adapter.AlibcFailModeType; import com.alibaba.baichuan.trade.biz.core.taoke.AlibcTaokeParams; import com.kepler.jd.Listener.OpenAppAction; import com.kepler.jd.login.KeplerApiManager; import com.kepler.jd.sdk.bean.KeplerAttachParameter; import com.tejia.lijin.app.entity.TbPidInfo; import com.tejia.lijin.app.entity.common.GoodsConvertLinkJumpLink; import com.tejia.lijin.app.ui.invite.ShareBrowserActivity; import com.tejia.lijin.app.util.baichuan.AlibcTradeUtil; import com.tejia.lijin.app.util.downutil.StringUtils; import com.tejia.lijin.app.util.goods.GoodsBuyUtil; import java.util.HashMap; import java.util.Map; /** * 去购买的跳转链接 */ public class GoodsBuyJumpUtil { public static void jumpTB(Activity activity, TbPidInfo tInfo, String clickUrl, String couponUrl, final GoodsBuyUtil.IBuyGoodsResultListener buyGoodsResultListener) { AlibcShowParams alibcShowParams = new AlibcShowParams(); alibcShowParams.setOpenType(OpenType.Auto); alibcShowParams.setBackUrl("alisdk://"); alibcShowParams.setNativeOpenFailedMode(AlibcFailModeType.AlibcNativeFailModeJumpBROWER); AlibcTaokeParams alibcTaokeParams = new AlibcTaokeParams("", "", ""); if (tInfo != null) { alibcTaokeParams = new AlibcTaokeParams("", "", ""); alibcTaokeParams.setPid(tInfo.getPid()); alibcTaokeParams.setAdzoneid(tInfo.getAdZoneId()); alibcTaokeParams.pid = tInfo.getPid(); alibcTaokeParams.adzoneid = tInfo.getAdZoneId(); alibcTaokeParams.extraParams = new HashMap<>(); alibcTaokeParams.extraParams.put("taokeAppkey", tInfo.getAppKey()); } Map<String, String> exParams = new HashMap<>(); exParams.put(AlibcConstants.ISV_CODE, "appisvcode"); exParams.put("alibaba", "阿里巴巴");//自定义参数部分,可任意增删改 if (!com.wpc.library.util.common.StringUtils.isEmpty(clickUrl) || !com.wpc.library.util.common.StringUtils.isEmpty(couponUrl)) { String url = (!com.wpc.library.util.common.StringUtils.isEmpty(couponUrl)) ? couponUrl : clickUrl; AlibcTradeSDK.setTaokeParams(alibcTaokeParams); buyGoodsResultListener.onJumpThirdAppStart(); AlibcTradeUtil.openByUrl(activity, url, null, new WebViewClient(), new WebChromeClient(), alibcShowParams, alibcTaokeParams, null); } } public static void jumpPDD(Context context, GoodsConvertLinkJumpLink link) { if (context == null) return; app/src/main/java/com/tejia/lijin/app/util/ToastUtil.java
@@ -1,6 +1,8 @@ package com.tejia.lijin.app.util; import android.content.Context; import android.view.Gravity; import android.view.View; import android.widget.Toast; public class ToastUtil { @@ -36,4 +38,12 @@ showSingleToast(context, context.getString(resId)); } public static void showToast(View view,Context context,int duration, int gravity) { Toast toast = new Toast(context); toast.setView(view); toast.setDuration(Toast.LENGTH_SHORT); toast.setGravity(gravity,0,0); toast.show(); } } app/src/main/java/com/tejia/lijin/app/util/Tools.java
@@ -505,7 +505,7 @@ private static void gotoMeizuPermission(Context context) { Intent intent = new Intent("com.meizu.safe.security.SHOW_APPSEC"); intent.addCategory(Intent.CATEGORY_DEFAULT); intent.putExtra("packageName", BuildConfig.APPLICATION_ID); intent.putExtra("packageName", context.getPackageName()); try { context.startActivity(intent); } catch (Exception e) { app/src/main/java/com/tejia/lijin/app/util/WXUtil.java
@@ -2,6 +2,7 @@ import android.content.Context; import com.tejia.lijin.app.BuXinConstant; import com.tencent.mm.opensdk.modelbiz.WXLaunchMiniProgram; import com.tencent.mm.opensdk.openapi.IWXAPI; import com.tencent.mm.opensdk.openapi.WXAPIFactory; @@ -10,7 +11,7 @@ public class WXUtil { public static void jumpWXXCX(Context mContext,String userName,String path) { String appId =""; //BuXinConstant.WECHAT_ID; // 填应用AppId String appId = Constant.WX_APP_ID; // 填应用AppId IWXAPI api = WXAPIFactory.createWXAPI(mContext, appId); WXLaunchMiniProgram.Req req = new WXLaunchMiniProgram.Req(); req.userName = userName; app/src/main/java/com/tejia/lijin/app/util/ad/AdUtil.java
New file @@ -0,0 +1,16 @@ package com.tejia.lijin.app.util.ad; //广告帮助 public class AdUtil { public enum AD_TYPE { csj("穿山甲"), gdt2("广点通2.0"); private String name; private AD_TYPE(String name) { this.name = name; } } } app/src/main/java/com/tejia/lijin/app/util/ad/ExpressAdContainer.java
New file @@ -0,0 +1,55 @@ package com.tejia.lijin.app.util.ad; import com.bytedance.sdk.openadsdk.TTNativeExpressAd; import com.qq.e.ads.nativ.NativeExpressADView; import com.qq.e.ads.nativ.NativeUnifiedADData; import com.qq.e.ads.nativ.express2.NativeExpressADData2; //信息流原生广告容器 public class ExpressAdContainer { TTNativeExpressAd csj; NativeExpressADData2 gdt2;//2.0版广点通 NativeUnifiedADData gdt2Unfied;//2.0广点通自渲染 public NativeUnifiedADData getGdt2Unfied() { return gdt2Unfied; } public void setGdt2Unfied(NativeUnifiedADData gdt2Unfied) { this.gdt2Unfied = gdt2Unfied; } public ExpressAdContainer(TTNativeExpressAd csj) { this.csj = csj; } public ExpressAdContainer(NativeExpressADView gdt) { } public ExpressAdContainer(NativeExpressADData2 gdt2) { this.gdt2 = gdt2; } public ExpressAdContainer(NativeUnifiedADData gdt2Unfied) { this.gdt2Unfied = gdt2Unfied; } public TTNativeExpressAd getCsj() { return csj; } public void setCsj(TTNativeExpressAd csj) { this.csj = csj; } public NativeExpressADData2 getGdt2() { return gdt2; } public void setGdt2(NativeExpressADData2 gdt2) { this.gdt2 = gdt2; } } app/src/main/java/com/tejia/lijin/app/util/ad/ExpressAdManager.java
New file @@ -0,0 +1,553 @@ package com.tejia.lijin.app.util.ad; import android.app.Activity; import android.content.Context; import android.util.Log; import android.view.View; import android.view.ViewGroup; import android.widget.FrameLayout; import com.bytedance.sdk.openadsdk.AdSlot; import com.bytedance.sdk.openadsdk.TTAdDislike; import com.bytedance.sdk.openadsdk.TTAdManager; import com.bytedance.sdk.openadsdk.TTAdNative; import com.bytedance.sdk.openadsdk.TTNativeExpressAd; import com.qq.e.ads.nativ.NativeExpressADView; import com.qq.e.ads.nativ.express2.AdEventListener; import com.qq.e.ads.nativ.express2.NativeExpressAD2; import com.qq.e.ads.nativ.express2.NativeExpressADData2; import com.qq.e.ads.nativ.express2.VideoOption2; import com.qq.e.comm.util.AdError; import com.wpc.library.util.common.DimenUtils; import java.util.ArrayList; import java.util.List; /** * 信息流广告管理 */ public class ExpressAdManager { final static String TAG = "ExpressAdManager"; AdUtil.AD_TYPE sourceType = AdUtil.AD_TYPE.gdt2; private TTAdNative mTTAdNative; private Activity mContext; public ExpressAdManager(AdUtil.AD_TYPE adSource, Activity context) { sourceType = adSource; this.mContext = context; if (sourceType == AdUtil.AD_TYPE.csj) { TTAdManager ttAdManager = TTAdManagerHolder.get(); mTTAdNative = ttAdManager.createAdNative(context); // TTAdManagerHolder.get().requestPermissionIfNecessary(context); } } //加载小广告 /** * 加载广告 * * @param widthDP * @param heightDP * @param count * @param adLoadListener */ public void loadAd(int widthDP, int heightDP, String pid, int count, final IAdLoadListener adLoadListener) { if (sourceType == AdUtil.AD_TYPE.gdt2) { loadGDT2(pid, widthDP, heightDP, count, new IGDTAdLoadListener() { @Override public void onSuccess(List<NativeExpressADView> adList) { } @Override public void onSuccess2(List<NativeExpressADData2> adList) { List<ExpressAdContainer> adContainerList = new ArrayList<>(); if (adList != null) for (NativeExpressADData2 ad : adList) { adContainerList.add(new ExpressAdContainer(ad)); } adLoadListener.onSuccess(adContainerList); } }, mContext); } else if (sourceType == AdUtil.AD_TYPE.csj) { loadCSJ(pid, widthDP, heightDP, count, new ICSJAdLoadListener() { @Override public void onSuccess(List<TTNativeExpressAd> adList) { List<ExpressAdContainer> adContainerList = new ArrayList<>(); if (adList != null) { for (TTNativeExpressAd adView : adList) { adContainerList.add(new ExpressAdContainer(adView)); } } adLoadListener.onSuccess(adContainerList); } }); } } /** * 商品加载广告 * * @param adLoadListener */ public void loadGoodsJumpLoadingAd(String pid, final IAdLoadListener adLoadListener) { //获取屏幕的宽 int deviceWidth = DimenUtils.getScreenWidth(mContext); deviceWidth = DimenUtils.px2dip(mContext, deviceWidth); int width = deviceWidth * 3 / 4; int height = (int) (width / 1.78f); loadAd(width, height, pid, 1, adLoadListener); } /** * 2.0版本广点通原生 * * @param positionId * @param widthDP * @param heightDP * @param count * @param adLoadListener * @param context */ private void loadGDT2(String positionId, int widthDP, int heightDP, int count, final IGDTAdLoadListener adLoadListener, Context context) { Log.i(TAG, String.format("loadGDT2:positionId-%s widthDP-%s heightDP-%s", positionId, widthDP, heightDP)); NativeExpressAD2 nativeExpressAD2 = new NativeExpressAD2(context, positionId, new NativeExpressAD2.AdLoadListener() { @Override public void onLoadSuccess(List<NativeExpressADData2> list) { if (adLoadListener != null) adLoadListener.onSuccess2(list); } @Override public void onNoAD(AdError adError) { if (adLoadListener != null) adLoadListener.onSuccess2(null); } }); nativeExpressAD2.setAdSize(widthDP, heightDP); VideoOption2.Builder builder = new VideoOption2.Builder(); builder.setAutoPlayPolicy(VideoOption2.AutoPlayPolicy.WIFI) // WIFI 环境下可以自动播放视频 .setAutoPlayMuted(true) // 自动播放时为静音 .setDetailPageMuted(false) // 视频详情页播放时不静音 .setMaxVideoDuration(0) // 设置返回视频广告的最大视频时长(闭区间,可单独设置),单位:秒,默认为 0 代表无限制,合法输入为:5<=maxVideoDuration<=60. 此设置会影响广告填充,请谨慎设置 .setMinVideoDuration(0); // 设置返回视频广告的最小视频时长(闭区间,可单独设置),单位:秒,默认为 0 代表无限制, 此设置会影响广告填充,请谨慎设置 nativeExpressAD2.setVideoOption2(builder.build()); nativeExpressAD2.loadAd(count); } /** * 穿山甲广告 * * @param codeId * @param width * @param height * @param count * @param adLoadListener */ private void loadCSJ(String codeId, int width, int height, int count, final ICSJAdLoadListener adLoadListener) { count = count > 3 ? 3 : count; AdSlot adSlot = new AdSlot.Builder() .setCodeId(codeId) .setSupportDeepLink(true) .setExpressViewAcceptedSize(width, height) .setAdCount(count) //请求广告数量为1到3条 .build(); mTTAdNative.loadNativeExpressAd(adSlot, new TTAdNative.NativeExpressAdListener() { @Override public void onError(int i, String s) { adLoadListener.onSuccess(null); } @Override public void onNativeExpressAdLoad(List<TTNativeExpressAd> list) { adLoadListener.onSuccess(list); } }); } /** * 渲染模板和填充广告 * * @param activity * @param ad * @param fl_ad * @param adEventListener */ public static void renderAndFillAd(Activity activity, final ExpressAdContainer ad, final FrameLayout fl_ad, final IAdEventListener adEventListener) { if (ad == null) {//广告为空 fl_ad.setVisibility(View.GONE); } else { fl_ad.setVisibility(View.VISIBLE); if (ad.getGdt2() != null) { if (fl_ad.getChildCount() > 0 && fl_ad.getChildAt(0) == ad.getGdt2().getAdView()) { return; } fl_ad.removeAllViews(); ad.getGdt2().setAdEventListener(new AdEventListener() { @Override public void onClick() { } @Override public void onExposed() { } @Override public void onRenderSuccess() { if (ad.getGdt2().getAdView().getParent() != null) { ((ViewGroup) ad.getGdt2().getAdView().getParent()).removeAllViews(); } fl_ad.addView(ad.getGdt2().getAdView()); } @Override public void onRenderFail() { } @Override public void onAdClosed() { if (adEventListener != null) { adEventListener.closeAd(ad); } } }); ad.getGdt2().render(); } else if (ad.getCsj() != null) { if (fl_ad.getChildCount() > 0 && fl_ad.getChildAt(0) == ad.getCsj().getExpressAdView()) { return; } ad.getCsj().setDislikeCallback(activity, new TTAdDislike.DislikeInteractionCallback() { @Override public void onShow() { } @Override public void onSelected(int i, String s, boolean b) { if (adEventListener != null) { adEventListener.closeAd(ad); } } @Override public void onCancel() { } }); ad.getCsj().render(); if (ad.getCsj().getExpressAdView().getParent() != null) { ((ViewGroup) ad.getCsj().getExpressAdView().getParent()).removeAllViews(); } fl_ad.addView(ad.getCsj().getExpressAdView()); } } } /** * 渲染广告 * * @param activity * @param ad * @param adRenderListener * @param adEventListener */ public static void renderAd(Activity activity, final ExpressAdContainer ad, final IAdRenderListener adRenderListener, final IAdEventListener adEventListener) { if (ad == null) {//广告为空 return; } if (ad.getGdt2() != null) { ad.getGdt2().setAdEventListener(new AdEventListener() { @Override public void onClick() { } @Override public void onExposed() { } @Override public void onRenderSuccess() { List<ExpressAdContainer> list = new ArrayList<>(); list.add(ad); if (adRenderListener != null) adRenderListener.onRenderSuccess(list); } @Override public void onRenderFail() { List<ExpressAdContainer> list = new ArrayList<>(); list.add(ad); if (adRenderListener != null) adRenderListener.onRenderFail(list); } @Override public void onAdClosed() { if (adEventListener != null) adEventListener.closeAd(ad); } }); ad.getGdt2().render(); } else if (ad.getCsj() != null) { ad.getCsj().setExpressInteractionListener(new TTNativeExpressAd.ExpressAdInteractionListener() { @Override public void onAdClicked(View view, int i) { } @Override public void onAdShow(View view, int i) { } @Override public void onRenderFail(View view, String s, int i) { List<ExpressAdContainer> list = new ArrayList<>(); list.add(ad); if (adRenderListener != null) adRenderListener.onRenderFail(list); } @Override public void onRenderSuccess(View view, float v, float v1) { Log.d(TAG, "onRenderSuccess"); List<ExpressAdContainer> list = new ArrayList<>(); list.add(ad); if (adRenderListener != null) adRenderListener.onRenderSuccess(list); } }); if (activity != null) ad.getCsj().setDislikeCallback(activity, new TTAdDislike.DislikeInteractionCallback() { @Override public void onShow() { } @Override public void onSelected(int i, String s, boolean b) { if (adEventListener != null) { adEventListener.closeAd(ad); } } @Override public void onCancel() { } }); ad.getCsj().render(); } } /** * 为广告绑定关闭事件 * * @param activity * @param ad * @param adEventListener */ public static void bindCloseListener(Activity activity, final ExpressAdContainer ad, final IAdEventListener adEventListener) { if (ad == null) {//广告为空 return; } if (ad.getGdt2() != null) { ad.getGdt2().setAdEventListener(new AdEventListener() { @Override public void onClick() { } @Override public void onExposed() { } @Override public void onRenderSuccess() { } @Override public void onRenderFail() { } @Override public void onAdClosed() { if (adEventListener != null) adEventListener.closeAd(ad); } }); } else if (ad.getCsj() != null) { ad.getCsj().setExpressInteractionListener(new TTNativeExpressAd.ExpressAdInteractionListener() { @Override public void onAdClicked(View view, int i) { } @Override public void onAdShow(View view, int i) { } @Override public void onRenderFail(View view, String s, int i) { } @Override public void onRenderSuccess(View view, float v, float v1) { } }); ad.getCsj().setDislikeCallback(activity, new TTAdDislike.DislikeInteractionCallback() { @Override public void onShow() { } @Override public void onSelected(int i, String s, boolean b) { if (adEventListener != null) { adEventListener.closeAd(ad); } } @Override public void onCancel() { } }); } } /** * 填充广告 * * @param ad * @param fl_ad */ public static void fillAd(final ExpressAdContainer ad, final FrameLayout fl_ad) { fl_ad.post(new Runnable() { @Override public void run() { if (ad == null) {//广告为空 fl_ad.setVisibility(View.GONE); } else { fl_ad.setVisibility(View.VISIBLE); if (ad.getGdt2() != null) { if (fl_ad.getChildCount() > 0 && fl_ad.getChildAt(0) == ad.getGdt2().getAdView()) { return; } if (ad.getGdt2().getAdView().getParent() != null) { ((ViewGroup) ad.getGdt2().getAdView().getParent()).removeAllViews(); } fl_ad.removeAllViews(); fl_ad.addView(ad.getGdt2().getAdView()); } else if (ad.getCsj() != null) { if (fl_ad.getChildCount() > 0 && fl_ad.getChildAt(0) == ad.getCsj().getExpressAdView()) { return; } if (ad.getCsj().getExpressAdView().getParent() != null) { ((ViewGroup) ad.getCsj().getExpressAdView().getParent()).removeAllViews(); } fl_ad.removeAllViews(); fl_ad.addView(ad.getCsj().getExpressAdView()); } } if (fl_ad.getChildCount() > 0) { fl_ad.getChildAt(0).setVisibility(View.VISIBLE); fl_ad.getChildAt(0).post(new Runnable() { @Override public void run() { } }); } } }); } interface IGDTAdLoadListener { public void onSuccess(List<NativeExpressADView> adList); public void onSuccess2(List<NativeExpressADData2> adList); } interface ICSJAdLoadListener { public void onSuccess(List<TTNativeExpressAd> adList); } public interface IAdLoadListener { public void onSuccess(List<ExpressAdContainer> adList); } public interface IAdRenderListener { public void onRenderSuccess(List<ExpressAdContainer> adList); public void onRenderFail(List<ExpressAdContainer> adList); } public interface IAdEventListener { public void closeAd(ExpressAdContainer ad); } public interface IAdShowListener { public void show(); } } app/src/main/java/com/tejia/lijin/app/util/ad/TTAdManagerHolder.java
New file @@ -0,0 +1,59 @@ package com.tejia.lijin.app.util.ad; import android.content.Context; import com.bytedance.sdk.openadsdk.TTAdConfig; import com.bytedance.sdk.openadsdk.TTAdConstant; import com.bytedance.sdk.openadsdk.TTAdManager; import com.bytedance.sdk.openadsdk.TTAdSdk; import com.tejia.lijin.app.R; import com.tejia.lijin.app.util.Constant; /** * 可以用一个单例来保存TTAdManager实例,在需要初始化sdk的时候调用 */ public class TTAdManagerHolder { private static boolean sInit; public static TTAdManager get() { if (!sInit) { throw new RuntimeException("TTAdSdk is not init, please check."); } return TTAdSdk.getAdManager(); } public static void init(Context context) { doInit(context); } //step1:接入网盟广告sdk的初始化操作,详情见接入文档和穿山甲平台说明 private static void doInit(Context context) { if (!sInit) { try { TTAdSdk.init(context, buildConfig(context)); sInit = true; } catch (Exception e) { } } } private static TTAdConfig buildConfig(Context context) { return new TTAdConfig.Builder() .appId(Constant.CSJ_APP_ID) .useTextureView(true) //使用TextureView控件播放视频,默认为SurfaceView,当有SurfaceView冲突的场景,可以使用TextureView .appName(context.getString(R.string.app_name)) .titleBarTheme(TTAdConstant.TITLE_BAR_THEME_DARK) .allowShowNotify(true) //是否允许sdk展示通知栏提示 .allowShowPageWhenScreenLock(true) //是否在锁屏场景支持展示广告落地页 .debug(true) //测试阶段打开,可以通过日志排查问题,上线时去除该调用 .directDownloadNetworkType(TTAdConstant.NETWORK_STATE_WIFI) .supportMultiProcess(true)//是否支持多进程 .asyncInit(true) .needClearTaskReset() //.httpStack(new MyOkStack3())//自定义网络库,demo中给出了okhttp3版本的样例,其余请自行开发或者咨询工作人员。 .build(); } } app/src/main/java/com/tejia/lijin/app/util/goods/GoodsBuyUtil.java
@@ -39,7 +39,7 @@ * @param requestInfo * @param resultListener */ public static void buy(Activity activity, Context context, GoodsBuyRequestInfo requestInfo, IBuyGoodsResultListener resultListener) { public static void fanli(Activity activity, Context context, GoodsBuyRequestInfo requestInfo, IBuyGoodsResultListener resultListener) { switch (requestInfo.getGoodsType()) { case Constant.GOODS_TYPE_TB: @@ -65,7 +65,7 @@ /** * 打开指定链接 */ private static void jumpTB(Activity activity, TbPidInfo tInfo, String clickUrl, String couponUrl, final IBuyGoodsResultListener buyGoodsResultListener) { public static void jumpTB(Activity activity, TbPidInfo tInfo, String clickUrl, String couponUrl, final IBuyGoodsResultListener buyGoodsResultListener) { AlibcShowParams alibcShowParams = new AlibcShowParams(); alibcShowParams.setOpenType(OpenType.Auto); alibcShowParams.setBackUrl("alisdk://"); @@ -95,7 +95,7 @@ private static void buyTB(final Activity activity, final Context context, GoodsBuyRequestInfo requestInfo, final IBuyGoodsResultListener buyGoodsResultListener) { ShoppingApi.getTBLinkInfo(context,requestInfo.getUid(), requestInfo.getGoodsId(), requestInfo.getFrom(), "", new BasicTextHttpResponseHandler() { ShoppingApi.getTBLinkInfo(context, requestInfo.getUid(), requestInfo.getGoodsId(), requestInfo.getFrom(), "", new BasicTextHttpResponseHandler() { @Override public void onSuccessPerfect(int statusCode, Header[] headers, JSONObject jsonObject) throws Exception { if (jsonObject.optString("code").equalsIgnoreCase("0")) { @@ -289,7 +289,7 @@ /** * 商品购买请求参数 */ static class GoodsBuyRequestInfo { public static class GoodsBuyRequestInfo { private int goodsType; private String goodsId; private String couponLink; app/src/main/java/com/tejia/lijin/app/util/goods/GoodsDetailListUtil.java
@@ -1,11 +1,13 @@ package com.tejia.lijin.app.util.goods; import android.content.Context; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Typeface; import android.text.Spannable; import android.text.SpannableString; import android.text.Spanned; import android.text.style.ForegroundColorSpan; import android.text.style.RelativeSizeSpan; import android.text.style.StyleSpan; import android.view.View; @@ -15,6 +17,7 @@ import com.tejia.lijin.app.util.Constant; import com.tejia.lijin.app.util.ImageUtil; import com.tejia.lijin.app.util.SetLabels; import com.tejia.lijin.app.util.downutil.StringUtils; import com.tejia.lijin.app.util.ui.GoodsRightViewHolder; public class GoodsDetailListUtil { @@ -65,27 +68,45 @@ viewHolder.tv_fanli_amount.setVisibility(View.GONE); } String disCount; if (info.getMoneyInfo().getHongBaoMoney() != null) { viewHolder.tv_hongbao_amount.setText("-" + info.getMoneyInfo().getHongBaoMoney()); viewHolder.tv_hongbao_amount.setVisibility(View.VISIBLE); } else { viewHolder.tv_hongbao_amount.setVisibility(View.GONE); } String disCount = info.getMoneyInfo().getFinalMoney(); if (info.isHasCoupon()) { disCount = "¥ " + info.getCouponPrice(); if (StringUtils.isNullOrEmpty(disCount)) disCount = "¥ " + info.getCouponPrice(); viewHolder.tv_coupon_amount.setVisibility(View.VISIBLE); viewHolder.tv_coupon_amount.setText("-¥ " + info.getCouponInfo().getAmount()); } else { if (info.getGoodsType() == Constant.GOODS_TYPE_VIP) { disCount = "¥ " + info.getCouponPrice(); } else disCount = "¥ " + info.getZkPrice(); if (StringUtils.isNullOrEmpty(disCount)) if (info.getGoodsType() == Constant.GOODS_TYPE_VIP) { disCount = "¥ " + info.getCouponPrice(); } else disCount = "¥ " + info.getZkPrice(); viewHolder.tv_coupon_amount.setVisibility(View.GONE); } int startIndex = disCount.indexOf("."); if (startIndex > -1) { viewHolder.tv_actual_price1.setText(disCount.substring(0, startIndex + 1)); viewHolder.tv_actual_price2.setText(disCount.substring(startIndex + 1)); } else { viewHolder.tv_actual_price2.setText(""); viewHolder.tv_actual_price1.setText(disCount); } SpannableString spannableString = new SpannableString(viewHolder.tv_actual_price1.getText()); spannableString.setSpan(new RelativeSizeSpan(0.5f), 0, 1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); viewHolder.tv_actual_price1.setText(spannableString); viewHolder.tv_sale_num.setTextColor((info.getSalesType() == 1 || info.getSalesType() == 4) ? mContext.getResources().getColor(R.color.gray5) : info.getSalesType() == 2 ? mContext.getResources().getColor(R.color.goods_sale_num_text_color_orange) : app/src/main/java/com/tejia/lijin/app/util/ui/GoodsDetailUtil.java
@@ -135,11 +135,10 @@ return "2小时销"; case 3: return "今日销"; case 4: default: return "总销"; } return "销量"; } @@ -164,9 +163,14 @@ case 11: return "天猫"; case 20: case 21: return "京东"; case 30: return "拼多多"; case 40: return "唯品会"; case 50: return "苏宁易购"; } return ""; } @@ -183,4 +187,5 @@ } } app/src/main/java/com/tejia/lijin/app/util/ui/dialog/DialogUtil.java
New file @@ -0,0 +1,27 @@ package com.tejia.lijin.app.util.ui.dialog; import android.app.Dialog; public class DialogUtil { public static void show(Dialog dialog) { try { if (dialog != null && !dialog.isShowing()) { dialog.show(); } } catch (Exception e) { } } public static void dismiss(Dialog dialog) { try { if (dialog != null && dialog.isShowing()) { dialog.dismiss(); } } catch (Exception e) { } } } app/src/main/java/com/tejia/lijin/app/util/user/AliyunSmsOneKeyLoginManager.java
@@ -105,23 +105,23 @@ int width = DimenUtils.getScreenWidth(activity); int widthDP = DimenUtils.px2dip(activity, width); AuthUIConfig uiCOnfig = new AuthUIConfig.Builder() .setPageBackgroundPath("shape_login_onkey_bg") .setPageBackgroundPath("shape_login_onekey_bg") .setNavText("") .setNavColor(Color.WHITE) .setNavHidden(false) .setNavReturnImgPath("ic_login_close") .setNavReturnImgPath("icon_one_key_login_close") .setNavReturnImgWidth(22) .setNavReturnImgHeight(22) .setNavReturnScaleType(ImageView.ScaleType.FIT_XY) .setWebNavColor(Color.BLACK) .setWebNavReturnImgPath("ic_back_two") // .setWebNavReturnImgPath("ic_back_two") .setWebViewStatusBarColor(Color.WHITE) .setStatusBarColor(Color.WHITE) .setLogoWidth(147) .setLogoHeight(36) .setLogoImgPath("ic_login_logo") // .setLogoImgPath("ic_login_logo") .setLogoOffsetY(24 - 10) .setSloganOffsetY(171 - 10) app/src/main/java/com/tejia/lijin/app/util/web/BaseRebateJavaInterface.java
File was renamed from app/src/main/java/com/tejia/lijin/app/util/BaseRebateJavaInterface.java @@ -1,4 +1,4 @@ package com.tejia.lijin.app.util; package com.tejia.lijin.app.util.web; import android.app.Activity; import android.content.Intent; @@ -10,6 +10,9 @@ import com.alibaba.fastjson.JSON; import com.google.gson.Gson; import com.tejia.lijin.app.ui.recommend.GoodsDetailActivity; import com.tejia.lijin.app.util.Constant; import com.tejia.lijin.app.util.JumpActivityUtil; import com.tejia.lijin.app.util.WXUtil; import com.umeng.analytics.MobclickAgent; import com.wpc.library.DeviceUuidFactory; import com.wpc.library.util.GetManifestDataUtil; app/src/main/java/com/tejia/lijin/app/util/web/BaseRebateJavaInterfaceBS.javacopy from app/src/main/java/com/tejia/lijin/app/util/BaseRebateJavaInterface.java copy to app/src/main/java/com/tejia/lijin/app/util/web/BaseRebateJavaInterfaceBS.java
File was copied from app/src/main/java/com/tejia/lijin/app/util/BaseRebateJavaInterface.java @@ -1,4 +1,4 @@ package com.tejia.lijin.app.util; package com.tejia.lijin.app.util.web; import android.app.Activity; import android.content.Intent; @@ -9,7 +9,15 @@ import com.alibaba.baichuan.android.trade.model.OpenType; import com.alibaba.fastjson.JSON; import com.google.gson.Gson; import com.tejia.lijin.app.BuXinConstant; import com.tejia.lijin.app.ui.recommend.GoodsDetailActivity; import com.tejia.lijin.app.ui.recommend.GoodsDetailBrowerActivity; import com.tejia.lijin.app.ui.recommend.SearchActivity; import com.tejia.lijin.app.util.Constant; import com.tejia.lijin.app.util.JumpActivityUtil; import com.tejia.lijin.app.util.WXUtil; import com.tejia.lijin.app.util.clipboard.ClipboardUtil; import com.tejia.lijin.app.util.user.UserUtil; import com.umeng.analytics.MobclickAgent; import com.wpc.library.DeviceUuidFactory; import com.wpc.library.util.GetManifestDataUtil; @@ -18,11 +26,6 @@ import com.wpc.library.util.common.PackageUtils2; import com.wpc.library.util.common.StringUtils; import com.wpc.library.util.security.MD5Utils; import com.tejia.lijin.app.BuXinConstant; import com.tejia.lijin.app.ui.recommend.GoodsDetailBrowerActivity; import com.tejia.lijin.app.ui.recommend.SearchActivity; import com.tejia.lijin.app.util.clipboard.ClipboardUtil; import com.tejia.lijin.app.util.user.UserUtil; import org.json.JSONException; import org.json.JSONObject; @@ -36,66 +39,67 @@ import static android.content.Context.MODE_PRIVATE; public class BaseRebateJavaInterface { public class BaseRebateJavaInterfaceBS { Activity mContext; public BaseRebateJavaInterface(Activity activity) { public BaseRebateJavaInterfaceBS(Activity activity) { mContext = activity; } @JavascriptInterface public String getUid() { public Object getUid() { return mContext.getSharedPreferences("user", MODE_PRIVATE).getString("uid", ""); } @JavascriptInterface public String getVersion() { public Object getVersion() { return PackageUtils2.getVersionCode(mContext) + ""; } @JavascriptInterface public void toast(String str) { Toast.makeText(mContext, str, Toast.LENGTH_LONG).show(); public void toast(Object str) { Toast.makeText(mContext, str.toString(), Toast.LENGTH_LONG).show(); } @JavascriptInterface public String getSign(String str) { public String getSign(Object str) { return MD5Utils.getMD532(str + "@?,223Hbb88lll"); } @JavascriptInterface public void jumpBaiChuan(String tbClientInfo, String url, String auctionId) { public void jumpBaiChuan(Object args) throws JSONException { JSONObject json = new JSONObject(args.toString()); final String tbClientInfo = json.optString("tbClientInfo"); final String url = json.optString("url"); final String auctionId = json.optString("auctionId"); AlibcShowParams alibcShowParams = new AlibcShowParams(); alibcShowParams.setOpenType(OpenType.Auto); JumpActivityUtil.jumpBaiChuan(mContext, tbClientInfo, url, auctionId, alibcShowParams); } @JavascriptInterface public void jumpSearch(String key) { public void jumpSearch(Object key) { Intent intent = new Intent(mContext, SearchActivity.class); intent.putExtra("key", key); intent.putExtra("key", key.toString()); mContext.startActivity(intent); } @JavascriptInterface public void jumpGoodsDetail(long id) { Intent intent = new Intent(mContext, GoodsDetailBrowerActivity.class); intent.putExtra("id", id + ""); intent.putExtra("isTrolley", true); mContext.startActivity(intent); } @JavascriptInterface public void copyText(String atr) { ClipboardUtil.copy(mContext, atr); public void copyText(Object atr) { ClipboardUtil.copy(mContext, atr.toString()); } @JavascriptInterface public void jumpPage(String pageClassName, String paramJson) { public void jumpPage(Object args) throws JSONException { JSONObject json = new JSONObject(args.toString()); String pageClassName = json.optString("pageClassName"); String paramJson = json.optString("paramJson"); Intent intent = null; JSONObject param = null; try { @@ -141,15 +145,15 @@ } @JavascriptInterface public String getRequestBaseParams(String json) { public String getRequestBaseParams(Object json) { LinkedHashMap<String, String> params = new LinkedHashMap<>(); int version = PackageUtils2.getVersionCode(mContext); long time = System.currentTimeMillis(); String deviceType = MobileUtil.getSystemModel(); if (!StringUtils.isEmpty(json)) { if (!StringUtils.isEmpty(json.toString())) { JSONObject jsonObject = null; try { jsonObject = new JSONObject(json); jsonObject = new JSONObject(json.toString()); Iterator<String> iterator = jsonObject.keys(); while (iterator.hasNext()) { String key = iterator.next(); @@ -194,64 +198,47 @@ } @JavascriptInterface public void umEventCount(String eventId, String paramsJSON) { public void umEventCount(Object args) throws JSONException { JSONObject json = new JSONObject(args.toString()); String eventId = json.optString("eventId"); String paramsJSON = json.optString("paramsJSON"); Map map = JSON.parseObject(paramsJSON); MobclickAgent.onEventObject(mContext, eventId, map); } @JavascriptInterface public void umEventCompute(String eventId, String paramsJSON, int du) { public void umEventCompute(Object args) throws JSONException { JSONObject json = new JSONObject(args.toString()); String eventId = json.optString("eventId"); String paramsJSON = json.optString("paramsJSON"); int du = json.optInt("du"); Map map = JSON.parseObject(paramsJSON); MobclickAgent.onEventValue(mContext, eventId, map, du); } /*********移进来的方法****/ @JavascriptInterface public void jumpGoodsSplashWithFrom(long id, String from) { Intent intent = new Intent(mContext, GoodsDetailActivity.class); intent.putExtra("id", id + ""); intent.putExtra("from", from); mContext.startActivity(intent); } @JavascriptInterface public void jumpGoodsDetail(String id, int goodsType) { public void jumpGoodsDetail(Object args) throws JSONException { JSONObject json = new JSONObject(args.toString()); String id = json.optString("id"); String goodsType = json.optString("goodsType"); String from = json.optString("from"); Intent intent = new Intent(mContext, GoodsDetailActivity.class); intent.putExtra("goodsId", id); intent.putExtra("goodsType", goodsType); if(!StringUtils.isNullOrEmpty(from)) intent.putExtra("from", from); mContext.startActivity(intent); } @JavascriptInterface public void jumpGoodsSplash(long id) { Intent intent = new Intent(mContext, GoodsDetailActivity.class); intent.putExtra("goodsId", id); intent.putExtra("goodsType", Constant.GOODS_TYPE_TB); mContext.startActivity(intent); } @JavascriptInterface public void jumpPDDGoodsDetailWithFrom(long id, String from) { Intent intent = new Intent(mContext, GoodsDetailActivity.class); intent.putExtra("goodsId", id); intent.putExtra("goodsType", Constant.GOODS_TYPE_PDD); intent.putExtra("from", from); mContext.startActivity(intent); } @JavascriptInterface public void jumpJDGoodsDetailWithFrom(long id, String from) { Intent intent = new Intent(mContext, GoodsDetailActivity.class); intent.putExtra("goodsId", id); intent.putExtra("goodsType", Constant.GOODS_TYPE_JD); intent.putExtra("from", from); mContext.startActivity(intent); } @JavascriptInterface public void jumpWXXCX(String userName, String path) { public void jumpWXXCX(Object args) throws JSONException { JSONObject json = new JSONObject(args.toString()); String userName = json.optString("userName"); String path = json.optString("path"); WXUtil.jumpWXXCX(mContext, userName, path); } app/src/main/java/com/tejia/lijin/app/util/web/RebateJavaInterface.java
File was renamed from app/src/main/java/com/tejia/lijin/app/util/RebateJavaInterface.java @@ -1,4 +1,4 @@ package com.tejia.lijin.app.util; package com.tejia.lijin.app.util.web; import android.Manifest; import android.app.Activity; @@ -28,6 +28,10 @@ import com.kepler.jd.Listener.OpenAppAction; import com.kepler.jd.login.KeplerApiManager; import com.kepler.jd.sdk.bean.KeplerAttachParameter; import com.tejia.lijin.app.util.JumpActivityUtil; import com.tejia.lijin.app.util.PermissionHelper; import com.tejia.lijin.app.util.Tools; import com.tejia.lijin.app.util.web.BaseRebateJavaInterface; import com.wpc.library.util.common.StringUtils; import com.wpc.library.util.security.MD5Utils; import com.tejia.lijin.app.Interface.WebInterface; app/src/main/java/com/tejia/lijin/app/util/web/RebateJavaInterfaceBS.javacopy from app/src/main/java/com/tejia/lijin/app/util/RebateJavaInterface.java copy to app/src/main/java/com/tejia/lijin/app/util/web/RebateJavaInterfaceBS.java
File was copied from app/src/main/java/com/tejia/lijin/app/util/RebateJavaInterface.java @@ -1,4 +1,4 @@ package com.tejia.lijin.app.util; package com.tejia.lijin.app.util.web; import android.Manifest; import android.app.Activity; @@ -12,34 +12,47 @@ import android.os.Environment; import android.os.Handler; import android.os.Message; import androidx.core.content.ContextCompat; import android.util.Log; import android.view.Gravity; import android.view.LayoutInflater; import android.view.View; import android.webkit.JavascriptInterface; import android.webkit.WebView; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; import android.widget.Toast; import com.bumptech.glide.Glide; import com.bytedance.sdk.openadsdk.AdSlot; import com.bytedance.sdk.openadsdk.TTAdConstant; import com.bytedance.sdk.openadsdk.TTAdNative; import com.bytedance.sdk.openadsdk.TTAdSdk; import com.bytedance.sdk.openadsdk.TTRewardVideoAd; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.gson.reflect.TypeToken; import com.kepler.jd.Listener.OpenAppAction; import com.kepler.jd.login.KeplerApiManager; import com.kepler.jd.sdk.bean.KeplerAttachParameter; import com.wpc.library.util.common.StringUtils; import com.wpc.library.util.security.MD5Utils; import com.tejia.lijin.app.Interface.WebInterface; import com.tejia.lijin.app.R; import com.tejia.lijin.app.callBack.GeneralBackCallback; import com.tejia.lijin.app.callBack.PermissionInterface; import com.tejia.lijin.app.entity.ImgText; import com.tejia.lijin.app.entity.share.ShareImageEntity; import com.tejia.lijin.app.ui.dialog.ShapeLoadingDialog; import com.tejia.lijin.app.ui.invite.ShareBrowserActivity; import com.tejia.lijin.app.util.JumpActivityUtil; import com.tejia.lijin.app.util.PermissionHelper; import com.tejia.lijin.app.util.ToastUtil; import com.tejia.lijin.app.util.Tools; import com.tejia.lijin.app.util.baichuan.AlibcTradeUtil; import com.tejia.lijin.app.util.share.ShareImageUtil; import com.tejia.lijin.app.util.share.ShareTextUtil; import com.wpc.library.util.common.DimenUtils; import com.wpc.library.util.common.StringUtils; import com.wpc.library.util.security.MD5Utils; import com.ysh.wpc.appupdate.download.DownLoadFile; import org.json.JSONArray; @@ -56,7 +69,10 @@ import java.util.Iterator; import java.util.List; public class RebateJavaInterface extends BaseRebateJavaInterface implements PermissionInterface { import androidx.core.content.ContextCompat; import wendu.dsbridge.CompletionHandler; public class RebateJavaInterfaceBS extends BaseRebateJavaInterfaceBS implements PermissionInterface { Activity mContext; TextView tv_top_bar_middle, tv_top_bar_left2, tv_top_bar_right; @@ -66,14 +82,14 @@ private boolean boo = false; private PermissionHelper mPermissionsChecker; // 权限检测器 public RebateJavaInterface(Activity activity, WebView webview) { public RebateJavaInterfaceBS(Activity activity, WebView webview) { super(activity); mContext = activity; this.webview = webview; boo = true; } public RebateJavaInterface(Activity activity, TextView tv_top_bar_middle public RebateJavaInterfaceBS(Activity activity, TextView tv_top_bar_middle , TextView tv_top_bar_left2, TextView tv_top_bar_right , ImageView iv_right, WebView webview, ShapeLoadingDialog pd) { super(activity); @@ -87,14 +103,14 @@ } @JavascriptInterface public void setTitle(final String title) { public void setTitle(final Object title) { // tv_top_bar_middle.setText(title); if (!boo) tv_top_bar_middle.post(new Runnable() { @Override public void run() { if (null != title && !StringUtils.isEmpty(title.trim())) tv_top_bar_middle.setText(title); if (null != title && !StringUtils.isEmpty((title + "").trim())) tv_top_bar_middle.setText(title + ""); } }); } @@ -103,22 +119,21 @@ * 保存网络图片 * * @param url * @param name */ @JavascriptInterface public void savePicture(String url, String name) { public void savePicture(Object url) { if (mPermissionsChecker == null) mPermissionsChecker = new PermissionHelper(mContext, this); if (mPermissionsChecker.lacksPermissions(getPermissions())) { //存储权限未开启 mPermissionsChecker.showNormalDialog(); } else {//存储权限已开 String md5 = MD5Utils.getMD532(url); String md5 = MD5Utils.getMD532(url.toString()); String path = com.wpc.library.util.Environment.getExternalStorageDirectory() + "/blksapp"; File file = new File(path + "/" + md5 + ".jpg"); if (!file.exists()) { try { File resultFile = Tools.saveImageFromPathToSdCard(mContext, url, path, md5 + ".jpg"); File resultFile = Tools.saveImageFromPathToSdCard(mContext, url.toString(), path, md5 + ".jpg"); if (resultFile != null) { Toast.makeText(mContext, "图片保存到相册成功", Toast.LENGTH_LONG).show(); } @@ -136,7 +151,7 @@ @JavascriptInterface public void savePictures(String urls) { public void savePictures(Object urls) { if (mPermissionsChecker == null) mPermissionsChecker = new PermissionHelper(mContext, this); if (mPermissionsChecker.lacksPermissions(getPermissions())) { //存储权限未开启 @@ -144,7 +159,7 @@ } else {//存储权限已开 List<String> urlList = new ArrayList<>(); try { JSONArray array = new JSONArray(urls); JSONArray array = new JSONArray(urls.toString()); for (int i = 0; i < array.length(); i++) { urlList.add(array.optString(i)); } @@ -162,7 +177,11 @@ @JavascriptInterface public void setTopMenuRightIcon(final String picUrl, final String jsCallback) { public void setTopMenuRightIcon(Object args) throws JSONException { JSONObject json = new JSONObject(args.toString()); final String picUrl = json.optString("picUrl"); final String jsCallback = json.optString("jsCallback"); if (!boo) iv_right.post(new Runnable() { @Override @@ -181,7 +200,12 @@ } @JavascriptInterface public void jumpPageWithFinishCurrentPage(String pageClassName, String paramJson) { public void jumpPageWithFinishCurrentPage(Object args) throws JSONException { JSONObject json = new JSONObject(args.toString()); final String pageClassName = json.optString("pageClassName"); final String paramJson = json.optString("paramJson"); Intent intent = null; JSONObject param = null; try { @@ -266,7 +290,11 @@ @JavascriptInterface public void setTopMenuRightText(final String text, final String callbackMethod) { public void setTopMenuRightText(Object args) throws JSONException { JSONObject json = new JSONObject(args.toString()); final String callbackMethod = json.optString("callbackMethod"); final String text = json.optString("text"); if (!boo) tv_top_bar_right.post(new Runnable() { @Override @@ -286,9 +314,9 @@ public List<ImgText> mList = new ArrayList<>(); @JavascriptInterface public void addMenu(String str) { public void addMenu(Object str) { Gson gson = new GsonBuilder().serializeNulls().create(); List<ImgText> list = gson.fromJson(str, new TypeToken<List<ImgText>>() { List<ImgText> list = gson.fromJson(str + "", new TypeToken<List<ImgText>>() { }.getType()); if (mList.size() > 0) mList.clear(); @@ -303,7 +331,11 @@ //文本分享 @JavascriptInterface public void shareText(int type, String text) { public void shareText(Object args) throws JSONException { JSONObject json = new JSONObject(args.toString()); int type = json.optInt("type"); final String text = json.optString("text"); if (type == 1) { ShareTextUtil.shareWXTextByIntent(mContext, text); } else if (type == 2) { @@ -319,7 +351,12 @@ //图片分享 "type":1,//1-微信 2-朋友圈 3-QQ 4-空间 5-微博 6-更多 @JavascriptInterface public void shareImg(int type, final String url) { public void shareImg(Object args) throws JSONException { JSONObject json = new JSONObject(args.toString()); int type = json.optInt("type"); final String url = json.optString("url"); //检测权限 String[] str = new String[]{Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE}; @@ -346,11 +383,15 @@ /** * 多图分享 * * @param type * @param urls * @param args */ @JavascriptInterface public void shareImgs(int type, final String urls) { public void shareImgs(Object args) throws JSONException { JSONObject json = new JSONObject(args.toString()); int type = json.optInt("type"); final String urls = json.optString("urls"); String[] str = new String[]{Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE}; if (lacksPermissions(str)) {//缺少权限 @@ -381,10 +422,10 @@ * @param url */ @JavascriptInterface public void tbAuth(String url) { if (StringUtils.isEmpty(url)) public void tbAuth(Object url) { if (StringUtils.isEmpty(url + "")) return; AlibcTradeUtil.openAuthLink(mContext, url); AlibcTradeUtil.openAuthLink(mContext, url + ""); } /** @@ -393,10 +434,10 @@ * @param url */ @JavascriptInterface public void jumpJD(String url) { if (StringUtils.isEmpty(url)) public void jumpJD(Object url) { if (StringUtils.isEmpty(url + "")) return; KeplerApiManager.getWebViewService().openAppWebViewPage(mContext, url, new KeplerAttachParameter(), new OpenAppAction() { KeplerApiManager.getWebViewService().openAppWebViewPage(mContext, url + "", new KeplerAttachParameter(), new OpenAppAction() { @Override public void onStatus(final int status, final String url) { mContext.runOnUiThread(new Runnable() { @@ -421,6 +462,133 @@ }); } private TTRewardVideoAd mttRewardVideoAd; @JavascriptInterface public void showAwardAd(Object args, final CompletionHandler handler) throws JSONException { JSONObject json = new JSONObject(args.toString()); String type = json.optString("type"); final String pid = json.optString("pid"); final com.alibaba.fastjson.JSONObject result = new com.alibaba.fastjson.JSONObject(); webview.post(new Runnable() { @Override public void run() { TTAdNative mTTAdNative = TTAdSdk.getAdManager().createAdNative(mContext); AdSlot adSlot = new AdSlot.Builder() .setCodeId(pid) .setRewardName("金币") //奖励的名称 选填 .setRewardAmount(3) //奖励的数量 选填 // .setUserID("tag123")//tag_id .setMediaExtra("media_extra") //附加参数 .setOrientation(TTAdConstant.VERTICAL) //必填参数,期望视频的播放方向:TTAdConstant.HORIZONTAL 或 TTAdConstant.VERTICAL .build(); mTTAdNative.loadRewardVideoAd(adSlot, new TTAdNative.RewardVideoAdListener() { //请求广告失败 @Override public void onError(int code, String message) { result.put("code", 1); result.put("msg", message); handler.complete(result); } //视频广告加载后,视频资源缓存到本地的回调,在此回调后,播放本地视频,流畅不阻塞。 @Override public void onRewardVideoCached() { //开发者做一个标识 if (mttRewardVideoAd != null) { mttRewardVideoAd.showRewardVideoAd(mContext, TTAdConstant.RitScenes.CUSTOMIZE_SCENES, "scenes_test"); mttRewardVideoAd = null; } } //视频广告的素材加载完毕,比如视频url等,在此回调后,可以播放在线视频,网络不好可能出现加载缓冲,影响体验。 @Override public void onRewardVideoAdLoad(TTRewardVideoAd ad) { //开发者做一个标识 mttRewardVideoAd = ad; mttRewardVideoAd.setRewardAdInteractionListener(new TTRewardVideoAd.RewardAdInteractionListener() { @Override public void onAdShow() { } @Override public void onAdVideoBarClick() { } @Override public void onAdClose() { } @Override public void onVideoComplete() { } @Override public void onVideoError() { result.put("code", 2); result.put("msg", "视频出错"); handler.complete(result); } @Override public void onRewardVerify(boolean b, int i, String s, int i1, String s1) { result.put("code", 0); result.put("msg", "广告展示完成"); handler.complete(result); } @Override public void onSkippedVideo() { } }); } }); } }); } @JavascriptInterface public void toastAwardSuccess(final Object msg) { webview.post(new Runnable() { @Override public void run() { View view = LayoutInflater.from(mContext).inflate(R.layout.item_reward_ad_success, null); TextView tv_content = view.findViewById(R.id.tv_content); tv_content.setText(msg + ""); ToastUtil.showToast(view, view.getContext(), Toast.LENGTH_SHORT, Gravity.CENTER); } }); } @JavascriptInterface public void toastAwardFail(final Object msg) { webview.post(new Runnable() { @Override public void run() { View view = LayoutInflater.from(mContext).inflate(R.layout.item_reward_ad_fail, null); LinearLayout.LayoutParams params=new LinearLayout.LayoutParams(DimenUtils.getScreenWidth(mContext)*4/5,LinearLayout.LayoutParams.WRAP_CONTENT); view.setLayoutParams(params); TextView tv_content = view.findViewById(R.id.tv_content); tv_content.setText(msg + ""); ToastUtil.showToast(view, view.getContext(), Toast.LENGTH_SHORT, Gravity.CENTER); } }); } int type; String imgurl; Handler handler = new Handler() { app/src/main/java/com/tejia/lijin/app/util/web/WebViewUtil.java
New file @@ -0,0 +1,104 @@ package com.tejia.lijin.app.util.web; import android.app.AlertDialog; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.net.Uri; import android.util.Base64; import android.widget.Toast; import com.tejia.lijin.app.ui.invite.ShareBrowserActivity; import com.tejia.lijin.app.util.ApkUtil; import com.tejia.lijin.app.util.Tools; import com.tejia.lijin.app.util.clipboard.ClipboardUtil; public class WebViewUtil { public static Boolean interceptUrl(final Context context, String url) { if (url != null && url.startsWith("yestv://copy")) { String murl = url.split("yestv://")[1]; String[] params = murl.split("#"); byte raw[] = Base64.decode(params[1], Base64.DEFAULT); ClipboardUtil.copy(context, new String(raw)); Toast.makeText(context, "复制成功", Toast.LENGTH_SHORT).show(); return true; } else if (url != null && url.startsWith("yestv://toast")) { String murl = url.split("yestv://")[1]; String[] params = murl.split("#"); byte raw[] = Base64.decode(params[1], Base64.DEFAULT); String content = new String(raw); Toast.makeText(context, content, Toast.LENGTH_LONG).show(); return true; } if (url != null && !url.startsWith("http")) { if (url.startsWith("weixin://wap/pay?")) { if (Tools.isWeixinAvilible(context) == 2) { Toast.makeText(context, "尚未安装微信", Toast.LENGTH_LONG).show(); return true; } Intent intent = new Intent(); intent.setAction(Intent.ACTION_VIEW); intent.setData(Uri.parse(url)); context.startActivity(intent); } else if (url.startsWith("alipays:") || url.startsWith("alipay")) { try { context.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url))); } catch (Exception e) { new AlertDialog.Builder(context) .setMessage("未检测到支付宝客户端,请安装后重试。") .setPositiveButton("立即安装", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Uri alipayUrl = Uri.parse("https://d.alipay.com"); context.startActivity(new Intent("android.intent.action.VIEW", alipayUrl)); } }).setNegativeButton("取消", null).show(); } } else if (url.startsWith("pinduoduo://")) {//拦截拼多多页面 if (ApkUtil.checkAPP(context, "com.xunmeng.pinduoduo")) { Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(intent); return true; } else { return true; } } else if (url.startsWith("suning://")) {//苏宁 if (ApkUtil.checkAPP(context, "com.suning.mobile.ebuy")) { Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(intent); return true; } else return true; } else if (url.startsWith("vipshop://")) {//唯品会 if (ApkUtil.checkAPP(context, "com.achievo.vipshop")) { Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(intent); return true; } else return true; } return true; } if (url.endsWith(".apk")) { Intent intent = new Intent(Intent.ACTION_VIEW); intent.addCategory(Intent.CATEGORY_BROWSABLE); intent.setData(Uri.parse(url)); context.startActivity(intent); return true; } return null; } } app/src/main/res/drawable-xhdpi/icon_dialog_goods_detail_jump_input.png
app/src/main/res/drawable-xhdpi/icon_goods_detail_jump_loading_jd.png
app/src/main/res/drawable-xhdpi/icon_goods_detail_jump_loading_logo.png
app/src/main/res/drawable-xhdpi/icon_goods_detail_jump_loading_pdd.png
app/src/main/res/drawable-xhdpi/icon_goods_detail_jump_loading_suning.png
app/src/main/res/drawable-xhdpi/icon_goods_detail_jump_loading_taobao.png
app/src/main/res/drawable-xhdpi/icon_goods_detail_jump_loading_vipshop.png
app/src/main/res/drawable-xhdpi/icon_goods_detail_notify.png
app/src/main/res/drawable-xhdpi/icon_one_key_login_close.png
app/src/main/res/drawable-xhdpi/icon_rank_platinum.png
app/src/main/res/drawable-xhdpi/icon_rank_silver.pngapp/src/main/res/drawable-xhdpi/icon_reward_ad_fail.png
app/src/main/res/drawable-xhdpi/icon_reward_ad_success_happy_left.png
app/src/main/res/drawable-xhdpi/icon_reward_ad_success_happy_right.png
app/src/main/res/drawable/shape_dialog_goods_detail_jump_loading_bottom.xml
New file @@ -0,0 +1,8 @@ <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <corners android:bottomLeftRadius="15dp" android:bottomRightRadius="15dp" /> <solid android:color="#ffffffff" /> </shape> app/src/main/res/drawable/shape_dialog_goods_detail_jump_loading_notify.xml
New file @@ -0,0 +1,14 @@ <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <gradient android:angle="135" android:centerColor="#fff6f6f6" android:endColor="#ffffd1d8" android:startColor="#ffc3f3ff" android:type="linear" android:useLevel="true" /> <corners android:radius="30dp" /> </shape> app/src/main/res/drawable/shape_dialog_goods_detail_jump_loading_top.xml
New file @@ -0,0 +1,8 @@ <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <corners android:topLeftRadius="15dp" android:topRightRadius="15dp" /> <solid android:color="#ffffffff" /> </shape> app/src/main/res/drawable/shape_dialog_goods_detail_jump_loading_top_common.xml
New file @@ -0,0 +1,16 @@ <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <gradient android:angle="180" android:endColor="#ffff246b" android:startColor="#ffff284a" android:type="linear" android:useLevel="true" /> <corners android:topLeftRadius="15dp" android:topRightRadius="15dp" /> </shape> app/src/main/res/drawable/shape_item_goods_coupon_bg.xml
@@ -1,10 +1,9 @@ <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <solid android:color="#fffffadd" /> <gradient android:angle="180" android:endColor="#ffffeb7d" android:startColor="#ffffffff" android:startColor="#0fffffff" android:type="linear" android:useLevel="true" /> <corners android:radius="16dp" /> app/src/main/res/drawable/shape_item_goods_fanli_bg.xml
@@ -1,10 +1,9 @@ <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <solid android:color="#FFEEF1" /> <gradient android:angle="180" android:endColor="#BFFF8C" android:startColor="#ffffffff" android:startColor="#0fffffff" android:type="linear" android:useLevel="true" /> <corners android:radius="16dp" /> app/src/main/res/drawable/shape_item_goods_hongbao_bg.xml
@@ -1,10 +1,9 @@ <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <solid android:color="#FFEEF1" /> <gradient android:angle="180" android:endColor="#FFD0D7" android:startColor="#ffffffff" android:startColor="#0fffffff" android:type="linear" android:useLevel="true" /> <corners android:radius="16dp" /> app/src/main/res/drawable/shape_login_onekey_bg.xml
New file @@ -0,0 +1,10 @@ <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <solid android:color="@color/white" /> <corners android:bottomLeftRadius="16dp" android:bottomRightRadius="16dp" android:topLeftRadius="16dp" android:topRightRadius="16dp" /> </shape> app/src/main/res/drawable/shape_reward_ad_fail_bg.xml
New file @@ -0,0 +1,17 @@ <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <corners android:bottomLeftRadius="15dp" android:bottomRightRadius="15dp" android:topLeftRadius="15dp" android:topRightRadius="15dp" /> <padding android:bottom="10dp" android:top="10dp"></padding> <gradient android:angle="180" android:endColor="#e0ff227b" android:startColor="#e07652ff" android:type="linear" android:useLevel="true" /> </shape> app/src/main/res/drawable/shape_reward_ad_success_bg.xml
New file @@ -0,0 +1,17 @@ <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <corners android:bottomLeftRadius="15dp" android:bottomRightRadius="15dp" android:topLeftRadius="15dp" android:topRightRadius="15dp" /> <padding android:bottom="10dp" android:top="10dp"></padding> <gradient android:angle="180" android:endColor="#e0ff227b" android:startColor="#e0ff2a3e" android:type="linear" android:useLevel="true" /> </shape> app/src/main/res/drawable/shape_send_circle_recommend_bg.xml
@@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <solid android:color="#F7F7F7" /> <solid android:color="#EAEAEA" /> <corners android:topLeftRadius="5dp" android:topRightRadius="5dp" android:bottomLeftRadius="5dp" android:bottomRightRadius="5dp" /> </shape> app/src/main/res/layout/activity_goods_detail_new.xml
@@ -9,910 +9,922 @@ <include layout="@layout/item_status_bar" /> <LinearLayout android:id="@+id/ll_content" <FrameLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:visibility="gone"> android:layout_height="0dp" android:layout_weight="1"> <FrameLayout <LinearLayout android:id="@+id/ll_content" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1"> android:layout_height="match_parent" android:orientation="vertical" android:visibility="visible"> <com.wpc.library.widget.MyScrollView android:id="@+id/lv_goods_pic" <FrameLayout android:layout_width="match_parent" android:layout_height="match_parent"> android:layout_height="0dp" android:layout_weight="1"> <LinearLayout <com.wpc.library.widget.MyScrollView android:id="@+id/lv_goods_pic" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> android:layout_height="match_parent"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_height="match_parent" android:orientation="vertical"> <com.wpc.library.widget.RatioLayout android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/white" app:ratio="1"> <FrameLayout android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center"> <androidx.viewpager.widget.ViewPager android:id="@+id/vp_goods_img" android:layout_width="match_parent" android:layout_height="match_parent"></androidx.viewpager.widget.ViewPager> <TextView android:id="@+id/tv_page_num" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="bottom|right" android:layout_margin="20dp" android:background="@drawable/shape_black_corner" android:paddingLeft="10dp" android:paddingTop="2dp" android:paddingRight="10dp" android:paddingBottom="2dp" android:textColor="@color/white" /> </FrameLayout> </com.wpc.library.widget.RatioLayout> <include layout="@layout/item_yellow_notice" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginLeft="10dp" android:layout_marginTop="12dp" android:layout_marginRight="10dp" android:background="@drawable/shape_goods_detail_item_bg" android:orientation="vertical"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content"> android:layout_height="wrap_content" android:orientation="vertical"> <com.wpc.library.widget.RatioLayout android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/white" app:ratio="1"> <FrameLayout android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center"> <androidx.viewpager.widget.ViewPager android:id="@+id/vp_goods_img" android:layout_width="match_parent" android:layout_height="match_parent"></androidx.viewpager.widget.ViewPager> <TextView android:id="@+id/tv_page_num" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="bottom|right" android:layout_margin="20dp" android:background="@drawable/shape_black_corner" android:paddingLeft="10dp" android:paddingTop="2dp" android:paddingRight="10dp" android:paddingBottom="2dp" android:textColor="@color/white" /> </FrameLayout> </com.wpc.library.widget.RatioLayout> <include layout="@layout/item_yellow_notice" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginLeft="10dp" android:layout_marginTop="12dp" android:layout_marginRight="10dp" android:background="@drawable/shape_goods_detail_item_bg" android:orientation="vertical"> <LinearLayout android:id="@+id/ll_labels" android:layout_width="0dp" android:orientation="horizontal" android:layout_height="wrap_content" android:layout_gravity="left|center_vertical" android:layout_weight="1"> android:layout_width="match_parent" android:layout_height="wrap_content"> <LinearLayout android:id="@+id/ll_labels" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_gravity="left|center_vertical" android:layout_weight="1" android:orientation="horizontal"> </LinearLayout> <TextView android:id="@+id/tv_sales_num" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="right|center_vertical" android:text="" android:textColor="#ff888888" android:textSize="13sp" /> </LinearLayout> <TextView android:id="@+id/tv_sales_num" android:id="@+id/tv_name" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="10dp" android:text="" android:textColor="#ff000000" android:textSize="16sp" /> <!-- 权益类型 --> <LinearLayout android:id="@+id/ll_rights_type" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="4dp"> <com.tejia.lijin.app.util.FlowLayout android:id="@+id/fl_rights_type" android:layout_width="match_parent" android:layout_height="wrap_content"></com.tejia.lijin.app.util.FlowLayout> </LinearLayout> </LinearLayout> <!-- 价格信息 --> <RelativeLayout android:id="@+id/rl_price" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginLeft="10dp" android:layout_marginTop="12dp" android:layout_marginRight="10dp" android:background="@drawable/shape_goods_detail_item_bg" android:descendantFocusability="blocksDescendants" android:focusable="true" android:focusableInTouchMode="true"> <androidx.recyclerview.widget.RecyclerView android:id="@+id/rv_price_info" android:layout_width="match_parent" android:layout_height="wrap_content" android:nestedScrollingEnabled="false"></androidx.recyclerview.widget.RecyclerView> </RelativeLayout> <LinearLayout android:id="@+id/ll_address" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginLeft="10dp" android:layout_marginTop="12dp" android:layout_marginRight="10dp" android:background="@drawable/shape_goods_detail_item_bg"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="right|center_vertical" android:text="月销 8569" android:text="发货地" android:textColor="#ff888888" android:textSize="13sp" /> </LinearLayout> <TextView android:id="@+id/tv_name" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="10dp" android:text="春装2021年新款女中袖上衣v领洋气半袖针织衫不规则百搭打底毛衣" android:textColor="#ff000000" android:textSize="16sp" /> <!-- 权益类型 --> <LinearLayout android:id="@+id/ll_rights_type" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="4dp"> <com.tejia.lijin.app.util.FlowLayout android:id="@+id/fl_rights_type" android:layout_width="match_parent" android:layout_height="wrap_content"></com.tejia.lijin.app.util.FlowLayout> </LinearLayout> </LinearLayout> <!-- 价格信息 --> <RelativeLayout android:id="@+id/rl_price" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginLeft="10dp" android:layout_marginTop="12dp" android:layout_marginRight="10dp" android:background="@drawable/shape_goods_detail_item_bg" android:descendantFocusability="blocksDescendants" android:focusable="true" android:focusableInTouchMode="true"> <androidx.recyclerview.widget.RecyclerView android:id="@+id/rv_price_info" android:layout_width="match_parent" android:layout_height="wrap_content" android:nestedScrollingEnabled="false"></androidx.recyclerview.widget.RecyclerView> </RelativeLayout> <LinearLayout android:id="@+id/ll_address" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginLeft="10dp" android:layout_marginTop="12dp" android:layout_marginRight="10dp" android:background="@drawable/shape_goods_detail_item_bg"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="发货地" android:textColor="#ff888888" android:textSize="13sp" /> <TextView android:id="@+id/tv_address" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="11dp" android:text="重庆市·江北区" android:textColor="#ff000000" android:textSize="13sp" /> </LinearLayout> <LinearLayout android:id="@+id/ll_shop" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="center" android:layout_marginLeft="10dp" android:layout_marginTop="10dp" android:layout_marginRight="10dp" android:background="@drawable/shape_goods_detail_item_bg" android:orientation="vertical"> <LinearLayout android:layout_width="match_parent" android:layout_height="50dp" android:layout_gravity="center" android:gravity="center_vertical" android:orientation="horizontal"> <FrameLayout android:layout_width="50dp" android:layout_height="50dp" android:layout_gravity="center_vertical" android:layout_marginRight="10dp" android:background="@drawable/shape_detail_shop_gray_corner"> <ImageView android:id="@+id/iv_shop_img" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_gravity="center" /> </FrameLayout> <LinearLayout android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:orientation="vertical"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content"> <TextView android:id="@+id/tv_shop_name" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:layout_weight="1" android:gravity="center_vertical" android:textColor="@color/text_black_1" android:textSize="14sp" /> <TextView android:id="@+id/tv_shop_see" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginRight="10dp" android:drawableRight="@drawable/ic_player_input" android:drawablePadding="8dp" android:text="查看店铺" android:textColor="@color/gray2" android:visibility="gone" /> </LinearLayout> <View android:layout_width="1dp" android:layout_height="0dp" android:layout_weight="1"></View> <TextView android:id="@+id/tv_shop_type" android:layout_width="wrap_content" android:layout_height="wrap_content"> </TextView> </LinearLayout> <LinearLayout <TextView android:id="@+id/tv_address" android:layout_width="wrap_content" android:layout_height="match_parent" android:orientation="vertical"> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal"> <TextView android:id="@+id/tv_shop_des" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:text="宝贝描述" android:textColor="@color/text_black_1" android:textSize="11sp" /> <TextView android:id="@+id/tv_shop_des_grade" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:layout_marginLeft="5dp" android:background="@drawable/shape_shop_score_grade" android:paddingLeft="3dp" android:paddingRight="3dp" android:textColor="@color/white" android:textSize="10sp" /> </LinearLayout> <View android:layout_width="1px" android:layout_height="0dp" android:layout_weight="1"></View> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal"> <TextView android:id="@+id/tv_shop_service" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:text="卖家服务" android:textColor="@color/text_black_1" android:textSize="11sp" /> <TextView android:id="@+id/tv_shop_service_grade" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:layout_marginLeft="5dp" android:background="@drawable/shape_shop_score_grade" android:paddingLeft="3dp" android:paddingRight="3dp" android:textColor="@color/white" android:textSize="10sp" /> </LinearLayout> <View android:layout_width="1px" android:layout_height="0dp" android:layout_weight="1"></View> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal"> <TextView android:id="@+id/tv_shop_logistics" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:text="物流服务" android:textColor="@color/text_black_1" android:textSize="11sp" /> <TextView android:id="@+id/tv_shop_logistics_grade" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:layout_marginLeft="5dp" android:background="@drawable/shape_shop_score_grade" android:paddingLeft="3dp" android:paddingRight="3dp" android:textColor="@color/white" android:textSize="10sp" /> </LinearLayout> </LinearLayout> android:layout_height="wrap_content" android:layout_marginLeft="11dp" android:text="" android:textColor="#ff000000" android:textSize="13sp" /> </LinearLayout> <LinearLayout android:id="@+id/ll_shop" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="center" android:layout_marginLeft="10dp" android:layout_marginTop="10dp" android:layout_marginRight="10dp" android:background="@drawable/shape_goods_detail_item_bg" android:orientation="vertical"> <LinearLayout android:layout_width="match_parent" android:layout_height="50dp" android:layout_gravity="center" android:gravity="center_vertical" android:orientation="horizontal"> <FrameLayout android:layout_width="50dp" android:layout_height="50dp" android:layout_gravity="center_vertical" android:layout_marginRight="10dp" android:background="@drawable/shape_detail_shop_gray_corner"> <ImageView android:id="@+id/iv_shop_img" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_gravity="center" /> </FrameLayout> <LinearLayout android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:orientation="vertical"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content"> <TextView android:id="@+id/tv_shop_name" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:layout_weight="1" android:gravity="center_vertical" android:textColor="@color/text_black_1" android:textSize="14sp" /> <TextView android:id="@+id/tv_shop_see" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginRight="10dp" android:drawableRight="@drawable/ic_player_input" android:drawablePadding="8dp" android:text="查看店铺" android:textColor="@color/gray2" android:visibility="gone" /> </LinearLayout> <View android:layout_width="1dp" android:layout_height="0dp" android:layout_weight="1"></View> <TextView android:id="@+id/tv_shop_type" android:layout_width="wrap_content" android:layout_height="wrap_content"> </TextView> </LinearLayout> <LinearLayout android:layout_width="wrap_content" android:layout_height="match_parent" android:orientation="vertical"> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal"> <TextView android:id="@+id/tv_shop_des" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:text="宝贝描述" android:textColor="@color/text_black_1" android:textSize="11sp" /> <TextView android:id="@+id/tv_shop_des_grade" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:layout_marginLeft="5dp" android:background="@drawable/shape_shop_score_grade" android:paddingLeft="3dp" android:paddingRight="3dp" android:textColor="@color/white" android:textSize="10sp" /> </LinearLayout> <View android:layout_width="1px" android:layout_height="0dp" android:layout_weight="1"></View> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal"> <TextView android:id="@+id/tv_shop_service" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:text="卖家服务" android:textColor="@color/text_black_1" android:textSize="11sp" /> <TextView android:id="@+id/tv_shop_service_grade" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:layout_marginLeft="5dp" android:background="@drawable/shape_shop_score_grade" android:paddingLeft="3dp" android:paddingRight="3dp" android:textColor="@color/white" android:textSize="10sp" /> </LinearLayout> <View android:layout_width="1px" android:layout_height="0dp" android:layout_weight="1"></View> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal"> <TextView android:id="@+id/tv_shop_logistics" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:text="物流服务" android:textColor="@color/text_black_1" android:textSize="11sp" /> <TextView android:id="@+id/tv_shop_logistics_grade" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:layout_marginLeft="5dp" android:background="@drawable/shape_shop_score_grade" android:paddingLeft="3dp" android:paddingRight="3dp" android:textColor="@color/white" android:textSize="10sp" /> </LinearLayout> </LinearLayout> </LinearLayout> </LinearLayout> <FrameLayout android:id="@+id/fl_goods_detail" android:layout_width="match_parent" android:layout_height="48dp" android:layout_gravity="center" android:layout_marginTop="10dp" android:background="@color/white"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical|left" android:layout_marginLeft="10dp" android:gravity="center" android:text="查看宝贝详情" android:textColor="#444444" android:textSize="16sp" /> <ImageView android:id="@+id/iv_imgtext_status" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical|right" android:layout_marginRight="10dp" android:src="@drawable/ic_detail_img_open" /> </FrameLayout> <WebView android:id="@+id/webView" android:layout_width="match_parent" android:layout_height="wrap_content" android:visibility="visible" /> <View android:id="@+id/view_goods_imgs_tag" android:layout_width="match_parent" android:layout_height="1px" android:background="@color/transparent" android:visibility="visible" /> <FrameLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="center_vertical"> <include layout="@layout/item_recyclerview_bottom" /> </FrameLayout> <LinearLayout android:id="@+id/ll_guess_like" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginTop="8dp" android:layout_marginBottom="8dp" android:background="@color/register_gray" android:orientation="vertical"> <TextView android:layout_width="match_parent" android:layout_height="46dp" android:background="#FFFFFF" android:gravity="center" android:text="猜你喜欢" android:textColor="#ff444444" android:textSize="15sp" /> <com.wpc.library.widget.MyGridView android:id="@+id/gv_guess_like" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginLeft="10dp" android:layout_marginTop="4dp" android:layout_marginRight="10dp" android:background="@color/register_gray" android:columnWidth="3dp" android:horizontalSpacing="5.5dp" android:numColumns="2" android:verticalSpacing="9dp"></com.wpc.library.widget.MyGridView> </LinearLayout> </LinearLayout> </com.wpc.library.widget.MyScrollView> <!--状态栏1--> <LinearLayout android:layout_width="match_parent" android:layout_height="48dp" android:gravity="center_vertical" android:orientation="horizontal"> <FrameLayout android:id="@+id/fl_goods_detail" android:layout_width="match_parent" android:layout_height="48dp" android:layout_gravity="center" android:layout_marginTop="10dp" android:background="@color/white"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical|left" android:layout_marginLeft="10dp" android:gravity="center" android:text="查看宝贝详情" android:textColor="#444444" android:textSize="16sp" /> android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1"> <ImageView android:id="@+id/iv_imgtext_status" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical|right" android:layout_marginRight="10dp" android:src="@drawable/ic_detail_img_open" /> android:id="@+id/iv_back" android:layout_width="30dp" android:layout_height="30dp" android:layout_gravity="center_vertical|left" android:layout_marginLeft="10dp" android:src="@drawable/icon_goods_detail_back" /> </FrameLayout> <WebView android:id="@+id/webView" android:layout_width="match_parent" android:layout_height="wrap_content" android:visibility="visible" /> <View android:layout_width="0dp" android:layout_height="1dp" android:layout_weight="3" /> </LinearLayout> <!--状态栏2--> <LinearLayout android:id="@+id/ll_top_title" android:layout_width="match_parent" android:layout_height="48dp" android:background="@color/white" android:gravity="center_vertical" android:orientation="horizontal" android:visibility="gone"> <FrameLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="center_vertical"> android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1"> <include layout="@layout/item_recyclerview_bottom" /> <ImageView android:id="@+id/iv_top_bar_left1" android:layout_width="30dp" android:layout_height="30dp" android:layout_gravity="center_vertical|left" android:layout_marginLeft="10dp" android:src="@drawable/ic_back3" /> </FrameLayout> <LinearLayout android:id="@+id/ll_guess_like" android:layout_width="match_parent" <FrameLayout android:id="@+id/fl_top_title1" android:layout_width="0dp" android:layout_height="match_parent" android:layout_marginTop="8dp" android:layout_marginBottom="8dp" android:background="@color/register_gray" android:orientation="vertical"> android:layout_weight="1"> <TextView android:layout_width="match_parent" android:layout_height="46dp" android:background="#FFFFFF" android:id="@+id/tv_top_title1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:gravity="center" android:text="猜你喜欢" android:textColor="#ff444444" android:textSize="15sp" /> android:padding="8dp" android:text="宝贝" android:textColor="@color/main_text_color" android:textSize="17sp" /> <View android:id="@+id/v_1" android:layout_width="30dp" android:layout_height="3dp" android:layout_gravity="bottom|center_horizontal" android:background="@color/main_text_color" /> </FrameLayout> <com.wpc.library.widget.MyGridView android:id="@+id/gv_guess_like" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginLeft="10dp" android:layout_marginTop="4dp" android:layout_marginRight="10dp" android:background="@color/register_gray" android:columnWidth="3dp" android:horizontalSpacing="5.5dp" android:numColumns="2" android:verticalSpacing="9dp"></com.wpc.library.widget.MyGridView> </LinearLayout> </LinearLayout> </com.wpc.library.widget.MyScrollView> <!--状态栏1--> <LinearLayout android:layout_width="match_parent" android:layout_height="48dp" android:gravity="center_vertical" android:orientation="horizontal"> <FrameLayout android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1"> <ImageView android:id="@+id/iv_back" android:layout_width="30dp" android:layout_height="30dp" android:layout_gravity="center_vertical|left" android:layout_marginLeft="10dp" android:src="@drawable/icon_goods_detail_back" /> </FrameLayout> <View android:layout_width="0dp" android:layout_height="1dp" android:layout_weight="3" /> </LinearLayout> <!--状态栏2--> <LinearLayout android:id="@+id/ll_top_title" android:layout_width="match_parent" android:layout_height="48dp" android:background="@color/white" android:gravity="center_vertical" android:orientation="horizontal" android:visibility="gone"> <FrameLayout android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1"> <ImageView android:id="@+id/iv_top_bar_left1" android:layout_width="30dp" android:layout_height="30dp" android:layout_gravity="center_vertical|left" android:layout_marginLeft="10dp" android:src="@drawable/ic_back3" /> </FrameLayout> <FrameLayout android:id="@+id/fl_top_title1" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1"> <TextView android:id="@+id/tv_top_title1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:gravity="center" android:padding="8dp" android:text="宝贝" android:textColor="@color/main_text_color" android:textSize="17sp" /> <View android:id="@+id/v_1" android:layout_width="30dp" android:layout_height="3dp" android:layout_gravity="bottom|center_horizontal" android:background="@color/main_text_color" /> </FrameLayout> <FrameLayout android:id="@+id/fl_top_title2" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1"> <TextView android:id="@+id/tv_top_title2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:gravity="center" android:paddingTop="8dp" android:paddingBottom="8dp" android:text="详情" android:textColor="@color/black2" android:textSize="17sp" /> <View android:id="@+id/v_2" android:layout_width="30dp" android:layout_height="3dp" android:layout_gravity="bottom|center_horizontal" android:background="@color/main_text_color" android:visibility="gone" /> </FrameLayout> <FrameLayout android:id="@+id/fl_top_title3" android:layout_width="0dp" android:layout_height="match_parent" android:layout_gravity="center" android:layout_weight="1" android:visibility="gone"> <TextView android:id="@+id/tv_top_title3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:ellipsize="end" android:gravity="center" android:text="喜欢" android:textColor="@color/black2" android:textSize="17sp" /> <View android:id="@+id/v_3" android:layout_width="30dp" android:layout_height="3dp" android:layout_gravity="bottom|center_horizontal" android:background="@color/main_text_color" android:visibility="gone" /> </FrameLayout> <FrameLayout android:id="@+id/fl_top_title4" android:layout_width="0dp" android:layout_height="match_parent" android:layout_gravity="center" android:layout_weight="1"> <TextView android:id="@+id/tv_top_title4" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:ellipsize="end" android:gravity="center" android:text="推荐" android:textColor="@color/black2" android:textSize="17sp" /> <View android:id="@+id/v_4" android:layout_width="30dp" android:layout_height="3dp" android:layout_gravity="bottom|center_horizontal" android:background="@color/main_text_color" android:visibility="gone" /> </FrameLayout> <FrameLayout android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:visibility="invisible"> <ImageView android:id="@+id/iv_top_bar_right" android:layout_width="30dp" android:layout_height="30dp" android:layout_gravity="center_vertical|right" android:layout_marginRight="10dp" android:src="@drawable/ic_des_top_right" /> </FrameLayout> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="30dp" android:layout_marginTop="57dp" android:orientation="horizontal"> <LinearLayout android:id="@+id/ll_notification" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_marginLeft="15dp" android:background="@drawable/shape_detail_notification" android:orientation="horizontal" android:paddingRight="10dp" android:visibility="gone"> <ImageView android:id="@+id/iv_notif_portrait" android:layout_width="25dp" android:layout_height="25dp" android:layout_gravity="center_vertical" android:layout_marginLeft="3dp" android:src="@drawable/ic_launcher" /> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:layout_marginLeft="10dp" android:orientation="horizontal"> <FrameLayout android:id="@+id/fl_top_title2" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1"> <TextView android:id="@+id/tv_notif_name" android:id="@+id/tv_top_title2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="@color/white" android:textSize="11sp" /> android:layout_gravity="center" android:gravity="center" android:paddingTop="8dp" android:paddingBottom="8dp" android:text="详情" android:textColor="@color/black2" android:textSize="17sp" /> <View android:id="@+id/v_2" android:layout_width="30dp" android:layout_height="3dp" android:layout_gravity="bottom|center_horizontal" android:background="@color/main_text_color" android:visibility="gone" /> </FrameLayout> <FrameLayout android:id="@+id/fl_top_title3" android:layout_width="0dp" android:layout_height="match_parent" android:layout_gravity="center" android:layout_weight="1" android:visibility="gone"> <TextView android:id="@+id/tv_notif_des" android:id="@+id/tv_top_title3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="10dp" android:layout_gravity="center" android:ellipsize="end" android:maxLines="1" android:textColor="@color/white" android:textSize="11sp" /> </LinearLayout> android:gravity="center" android:text="喜欢" android:textColor="@color/black2" android:textSize="17sp" /> <View android:id="@+id/v_3" android:layout_width="30dp" android:layout_height="3dp" android:layout_gravity="bottom|center_horizontal" android:background="@color/main_text_color" android:visibility="gone" /> </FrameLayout> <FrameLayout android:id="@+id/fl_top_title4" android:layout_width="0dp" android:layout_height="match_parent" android:layout_gravity="center" android:layout_weight="1"> <TextView android:id="@+id/tv_top_title4" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:ellipsize="end" android:gravity="center" android:text="推荐" android:textColor="@color/black2" android:textSize="17sp" /> <View android:id="@+id/v_4" android:layout_width="30dp" android:layout_height="3dp" android:layout_gravity="bottom|center_horizontal" android:background="@color/main_text_color" android:visibility="gone" /> </FrameLayout> <FrameLayout android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:visibility="invisible"> <ImageView android:id="@+id/iv_top_bar_right" android:layout_width="30dp" android:layout_height="30dp" android:layout_gravity="center_vertical|right" android:layout_marginRight="10dp" android:src="@drawable/ic_des_top_right" /> </FrameLayout> </LinearLayout> <View android:layout_width="0dp" android:layout_height="40dp" android:layout_weight="1" /> </LinearLayout> </FrameLayout> <View android:id="@+id/v_bottom_line" android:layout_width="match_parent" android:layout_height="1dp" android:layout_gravity="bottom" android:background="@color/register_gray" /> <FrameLayout android:layout_width="match_parent" android:layout_height="50dp" android:layout_gravity="bottom" android:background="@color/white"> <LinearLayout android:id="@+id/ll_bottom" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center_vertical" android:orientation="horizontal"> <LinearLayout android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:gravity="left"> android:layout_width="match_parent" android:layout_height="30dp" android:layout_marginTop="57dp" android:orientation="horizontal"> <LinearLayout android:id="@+id/ll_copy_link" android:id="@+id/ll_notification" android:layout_width="wrap_content" android:layout_height="match_parent" android:background="@drawable/bg_ripple" android:gravity="center" android:orientation="vertical" android:paddingLeft="10dp" android:layout_marginLeft="15dp" android:background="@drawable/shape_detail_notification" android:orientation="horizontal" android:paddingRight="10dp" android:visibility="gone"> <ImageView android:layout_width="wrap_content" android:layout_height="19dp" android:layout_gravity="center" android:gravity="center" android:src="@drawable/icon_copy_link" /> android:id="@+id/iv_notif_portrait" android:layout_width="25dp" android:layout_height="25dp" android:layout_gravity="center_vertical" android:layout_marginLeft="3dp" android:src="@drawable/ic_launcher" /> <TextView android:id="@+id/tv_copy_link" <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="4dp" android:text="复制链接" android:textColor="#333333" android:textSize="9sp" /> android:layout_gravity="center_vertical" android:layout_marginLeft="10dp" android:orientation="horizontal"> <TextView android:id="@+id/tv_notif_name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="@color/white" android:textSize="11sp" /> <TextView android:id="@+id/tv_notif_des" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="10dp" android:ellipsize="end" android:maxLines="1" android:textColor="@color/white" android:textSize="11sp" /> </LinearLayout> </LinearLayout> <View android:layout_width="0dp" android:layout_height="40dp" android:layout_weight="1" /> </LinearLayout> </FrameLayout> <View android:id="@+id/v_bottom_line" android:layout_width="match_parent" android:layout_height="1dp" android:layout_gravity="bottom" android:background="@color/register_gray" /> <FrameLayout android:layout_width="match_parent" android:layout_height="50dp" android:layout_gravity="bottom" android:background="@color/white"> <LinearLayout android:id="@+id/ll_bottom" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center_vertical" android:orientation="horizontal"> <LinearLayout android:id="@+id/ll_add_collect" android:layout_width="wrap_content" android:layout_width="0dp" android:layout_height="match_parent" android:layout_marginLeft="25dp" android:gravity="center" android:orientation="vertical" android:paddingLeft="10dp" android:paddingRight="10dp" android:visibility="visible"> android:layout_weight="1" android:gravity="left"> <ImageView android:id="@+id/iv_like_state" <LinearLayout android:id="@+id/ll_copy_link" android:layout_width="wrap_content" android:layout_height="19dp" android:layout_gravity="center" android:layout_height="match_parent" android:background="@drawable/bg_ripple" android:gravity="center" android:src="@drawable/icon_un_collected" /> android:orientation="vertical" android:paddingLeft="10dp" android:paddingRight="10dp" android:visibility="gone"> <TextView android:id="@+id/tv_like" <ImageView android:layout_width="wrap_content" android:layout_height="19dp" android:layout_gravity="center" android:gravity="center" android:src="@drawable/icon_copy_link" /> <TextView android:id="@+id/tv_copy_link" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="4dp" android:text="复制链接" android:textColor="#333333" android:textSize="9sp" /> </LinearLayout> <LinearLayout android:id="@+id/ll_add_collect" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="4dp" android:text="收藏" android:textColor="#333333" android:textSize="9sp" /> android:layout_height="match_parent" android:layout_marginLeft="25dp" android:gravity="center" android:orientation="vertical" android:paddingLeft="10dp" android:paddingRight="10dp" android:visibility="visible"> <ImageView android:id="@+id/iv_like_state" android:layout_width="wrap_content" android:layout_height="19dp" android:layout_gravity="center" android:gravity="center" android:src="@drawable/icon_un_collected" /> <TextView android:id="@+id/tv_like" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="4dp" android:text="收藏" android:textColor="#333333" android:textSize="9sp" /> </LinearLayout> </LinearLayout> <View android:id="@+id/view_share_buy_divider" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:visibility="gone"></View> <LinearLayout android:id="@+id/ll_fanli" android:layout_width="130dp" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:background="@drawable/shape_go_fanli" android:gravity="center" android:orientation="vertical"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:text="下单返利" android:textColor="@color/white" android:textSize="15sp" /> <TextView android:id="@+id/tv_fanli_money_num" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:text="" android:textColor="@color/white" android:textSize="12sp" /> </LinearLayout> <LinearLayout android:id="@+id/ll_buy" android:layout_width="130dp" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:background="@drawable/shape_go_buy" android:orientation="vertical"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:text="下单立减" android:textColor="@color/white" android:textSize="15sp" /> <TextView android:id="@+id/tv_buy" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:text="" android:textColor="@color/white" android:textSize="12sp" /> </LinearLayout> <View android:layout_width="5dp" android:layout_height="wrap_content"></View> </LinearLayout> <View android:id="@+id/view_share_buy_divider" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:visibility="gone"></View> <LinearLayout android:id="@+id/ll_fanli" android:layout_width="130dp" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:background="@drawable/shape_go_fanli" android:gravity="center" android:orientation="vertical"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:text="下单返利" android:textColor="@color/white" android:textSize="15sp" /> <TextView android:id="@+id/tv_fanli_money_num" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:text="12" android:textColor="@color/white" android:textSize="12sp" /> </LinearLayout> </FrameLayout> <LinearLayout android:id="@+id/ll_buy" android:layout_width="130dp" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:background="@drawable/shape_go_buy" android:orientation="vertical"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:text="下单立减" android:textColor="@color/white" android:textSize="15sp" /> <TextView android:id="@+id/tv_buy" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:text="12.00" android:textColor="@color/white" android:textSize="12sp" /> </LinearLayout> <View android:layout_width="5dp" android:layout_height="wrap_content"></View> </LinearLayout> </FrameLayout> </LinearLayout> <FrameLayout android:id="@+id/fl_face" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/white" android:visibility="visible"> <include layout="@layout/item_no_net" /> <include layout="@layout/item_error_net" /> <include layout="@layout/item_no_data" /> <LinearLayout android:id="@+id/ll_goods_nothing" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_gravity="center" android:gravity="center" android:orientation="vertical" android:visibility="gone"> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/ic_goods_nothing" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="8dp" android:text="该商品已经下架了~" android:textColor="@color/text_black_1" android:textSize="15sp" /> </LinearLayout> <FrameLayout android:id="@+id/fl_back_face" android:layout_width="60dp" android:layout_height="48dp"> <ImageView android:id="@+id/iv_back_face" android:layout_width="30dp" android:layout_height="30dp" android:layout_gravity="center|left" android:layout_marginLeft="10dp" android:src="@drawable/icon_goods_detail_back" /> <FrameLayout android:id="@+id/fl_face" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/white" android:visibility="visible"> <include layout="@layout/item_no_net" /> <include layout="@layout/item_error_net" /> <include layout="@layout/item_no_data" /> <LinearLayout android:id="@+id/ll_goods_nothing" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_gravity="center" android:gravity="center" android:orientation="vertical" android:visibility="gone"> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/ic_goods_nothing" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="8dp" android:text="该商品已经下架了~" android:textColor="@color/text_black_1" android:textSize="15sp" /> </LinearLayout> <FrameLayout android:id="@+id/fl_back_face" android:layout_width="60dp" android:layout_height="48dp"> <ImageView android:id="@+id/iv_back_face" android:layout_width="30dp" android:layout_height="30dp" android:layout_gravity="center|left" android:layout_marginLeft="10dp" android:src="@drawable/icon_goods_detail_back" /> </FrameLayout> <com.wang.avi.AVLoadingIndicatorView android:id="@+id/avi" style="@style/AVLoadingIndicatorView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:visibility="gone" app:indicatorColor="@color/theme" app:indicatorName="BallPulseIndicator" /> </FrameLayout> <com.wang.avi.AVLoadingIndicatorView android:id="@+id/avi" style="@style/AVLoadingIndicatorView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:visibility="gone" app:indicatorColor="@color/theme" app:indicatorName="BallPulseIndicator" /> </FrameLayout> </LinearLayout> app/src/main/res/layout/dialog_goods_detail_jump_loading.xml
New file @@ -0,0 +1,155 @@ <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"> <LinearLayout android:id="@+id/ll_top" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@drawable/shape_dialog_goods_detail_jump_loading_top" android:orientation="vertical"> <LinearLayout android:id="@+id/ll_notify" android:layout_width="match_parent" android:layout_height="30dp" android:layout_marginLeft="15dp" android:layout_marginTop="12dp" android:layout_marginRight="15dp" android:layout_marginBottom="12dp" android:background="@drawable/shape_dialog_goods_detail_jump_loading_notify" android:gravity="center"> <TextView android:id="@+id/tv_notify" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginRight="9dp" android:text="铂金会员免广告,礼金提高100%" android:textColor="#fffe4f68" android:textSize="13sp" /> <ImageView android:layout_width="5dp" android:layout_height="9dp" android:src="@drawable/icon_dialog_goods_detail_jump_input"></ImageView> </LinearLayout> <com.wpc.library.widget.RatioLayout android:layout_width="match_parent" android:layout_height="wrap_content" app:ratio="0.5457"> <FrameLayout android:id="@+id/fl_ad" android:layout_width="match_parent" android:layout_height="match_parent"> <FrameLayout android:id="@+id/fl_ad_content" android:layout_width="match_parent" android:layout_height="match_parent"></FrameLayout> <TextView android:id="@+id/tv_skip" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="right|top" android:layout_marginTop="7dp" android:layout_marginRight="11dp" android:background="@drawable/background_circle" android:paddingLeft="10dp" android:paddingTop="2dp" android:paddingRight="10dp" android:paddingBottom="2dp" android:text="跳过" android:textColor="#ffffffff" android:textSize="12sp" android:visibility="gone" /> </FrameLayout> <LinearLayout android:id="@+id/ll_loading" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:orientation="vertical"> <com.wang.avi.AVLoadingIndicatorView android:layout_width="60dp" android:layout_height="60dp" app:indicatorName="BallClipRotatePulseIndicator" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="20dp" android:text="省钱不用等,立减更省心" android:textColor="#ffffffff" android:textSize="15sp" /> </LinearLayout> </com.wpc.library.widget.RatioLayout> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@drawable/shape_dialog_goods_detail_jump_loading_bottom" android:gravity="center_horizontal|center_vertical" android:padding="15dp"> <ImageView android:layout_width="50dp" android:layout_height="50dp" android:layout_marginLeft="23dp" android:src="@drawable/icon_goods_detail_jump_loading_logo"> </ImageView> <LinearLayout android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center" android:orientation="vertical"> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content"></ImageView> <TextView android:id="@+id/tv_time" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="10dp" android:text="5秒后自动跳转" android:textColor="#fffa2446" android:textSize="13sp" /> </LinearLayout> <ImageView android:id="@+id/iv_source_type" android:layout_width="50dp" android:layout_height="50dp" android:layout_marginRight="23dp" android:src="@drawable/icon_goods_detail_jump_loading_jd"></ImageView> </LinearLayout> </LinearLayout> app/src/main/res/layout/dialog_goods_detail_notify.xml
New file @@ -0,0 +1,94 @@ <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"> <LinearLayout android:id="@+id/ll_top" android:layout_width="match_parent" android:layout_height="58dp" android:background="@drawable/shape_dialog_goods_detail_jump_loading_top_common" android:gravity="center" android:orientation="vertical"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="温馨提示" android:textColor="#ffffff" android:textSize="18sp" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@drawable/shape_dialog_goods_detail_jump_loading_bottom" android:gravity="center_horizontal" android:orientation="vertical" android:padding="22dp"> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/icon_goods_detail_notify"></ImageView> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="10dp" android:gravity="center" android:text="你今天的立减机会\n已经用光!" android:textColor="#fff73547" android:textSize="16sp" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="16dp" android:text="1.确认购买后创建2.看广告增加创建次数" android:textColor="#ff666666" android:textSize="12sp" /> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="20dp" android:gravity="center"> <TextView android:id="@+id/tv_create" android:layout_width="0dp" android:layout_height="36dp" android:layout_weight="1" android:gravity="center" android:text="仍要创建" android:textColor="#fff53245" android:textSize="15sp" /> <TextView android:id="@+id/tv_fanli" android:layout_width="0dp" android:layout_height="36dp" android:layout_marginLeft="8dp" android:layout_weight="1" android:gravity="center" android:text="去返利" android:textColor="#ffffffff" android:textSize="15sp" /> </LinearLayout> </LinearLayout> </LinearLayout> app/src/main/res/layout/item_goods.xml
@@ -72,6 +72,7 @@ android:layout_height="wrap_content" android:ellipsize="end" android:maxLines="2" android:lineSpacingMultiplier="1.1" android:text="牛仔外套女ins潮春秋装韩版宽松百搭春季2019新款123123牛仔外套女ins潮春秋装韩版宽松百搭春季2019新款123123" android:textColor="#ff333333" android:textSize="15sp" /> app/src/main/res/layout/item_recommend_gv.xml
@@ -45,45 +45,11 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:ellipsize="end" android:lineSpacingMultiplier="1.1" android:maxLines="2" android:text="牛仔外套女ins潮春秋装韩版宽松百搭春季2019新款123123牛仔外套女ins潮春秋装韩版宽松百搭春季2019新款123123" android:textColor="#ff333333" android:textSize="12sp" /> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="8dp" android:gravity="center_vertical"> <TextView android:id="@+id/tv_hongbao_amount" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/shape_item_goods_hongbao_bg" android:drawableLeft="@drawable/icon_item_goods_hongbao" android:drawablePadding="3dp" android:text="-¥10" android:textColor="#ffff2b4b" android:textSize="12sp" android:visibility="visible" /> <View android:layout_width="0dp" android:layout_height="1dp" android:layout_weight="1"></View> <TextView android:id="@+id/tv_sale_num" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="月销 8968" android:textColor="#ffaaaaaa" android:textSize="12sp" android:visibility="visible" /> </LinearLayout> <LinearLayout android:id="@+id/ll_labels" @@ -95,53 +61,80 @@ <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="5dp" android:gravity="center_vertical"> <TextView android:id="@+id/tv_coupon_amount" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/shape_item_goods_coupon_bg" android:drawableLeft="@drawable/icon_item_goods_coupon" android:drawablePadding="3dp" android:gravity="center_vertical" android:text="-¥100" android:textColor="#ffffac00" android:textSize="12sp"></TextView> android:layout_height="70dp" android:orientation="vertical"> <View android:layout_width="0dp" android:layout_height="1dp" android:layout_width="1dp" android:layout_height="0dp" android:layout_weight="1"></View> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="8dp" android:gravity="center_vertical"> <TextView android:id="@+id/tv_hongbao_amount" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/shape_item_goods_hongbao_bg" android:drawableLeft="@drawable/icon_item_goods_hongbao" android:drawablePadding="3dp" android:text="-¥10" android:textColor="#ffff2b4b" android:textSize="12sp" android:visibility="gone" /> <View android:layout_width="0dp" android:layout_height="1dp" android:layout_weight="1"></View> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="5dp" android:gravity="center_vertical"> <TextView android:id="@+id/tv_coupon_amount" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/shape_item_goods_coupon_bg" android:drawableLeft="@drawable/icon_item_goods_coupon" android:drawablePadding="3dp" android:gravity="center_vertical" android:text="-¥100" android:textColor="#ffffac00" android:textSize="12sp"></TextView> </LinearLayout> <TextView android:id="@+id/tv_price" android:id="@+id/tv_fanli_amount" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="¥128.9" android:textColor="#ffa1a0a0" android:textSize="12sp" /> android:layout_marginTop="5dp" android:background="@drawable/shape_item_goods_fanli_bg" android:drawableLeft="@drawable/icon_item_goods_fanli" android:drawablePadding="3dp" android:text="-¥10" android:textColor="#ff55be00" android:textSize="12sp" android:visibility="visible" /> </LinearLayout> <TextView android:id="@+id/tv_fanli_amount" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="5dp" android:background="@drawable/shape_item_goods_fanli_bg" android:drawableLeft="@drawable/icon_item_goods_fanli" android:drawablePadding="3dp" android:text="-¥10" android:textColor="#ff55be00" android:textSize="12sp" android:visibility="visible" /> </LinearLayout> <LinearLayout @@ -153,6 +146,23 @@ android:orientation="vertical" android:padding="0dp"> <TextView android:id="@+id/tv_sale_num" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="月销 8968" android:textColor="#ffaaaaaa" android:textSize="12sp" android:visibility="visible" /> <TextView android:id="@+id/tv_price" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="2dp" android:text="¥128.9" android:textColor="#ffa1a0a0" android:textSize="12sp" /> <LinearLayout android:layout_width="wrap_content" app/src/main/res/layout/item_reward_ad_fail.xml
New file @@ -0,0 +1,35 @@ <?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="wrap_content" android:background="@drawable/shape_reward_ad_fail_bg" android:gravity="center_horizontal" android:orientation="vertical"> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/icon_reward_ad_fail"></ImageView> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="10dp" android:text="很抱歉!" android:textColor="#ffffffff" android:textSize="18sp" /> <TextView android:id="@+id/tv_content" android:layout_width="233dp" android:layout_height="wrap_content" android:layout_marginTop="18dp" android:layout_marginBottom="12dp" android:gravity="center" android:text="激励视频没看完\n 未获得铂金会员权益" android:textColor="#ffffffff" android:textSize="15sp" /> </LinearLayout> app/src/main/res/layout/item_reward_ad_success.xml
New file @@ -0,0 +1,33 @@ <?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="wrap_content" android:background="@drawable/shape_reward_ad_success_bg" android:gravity="center_horizontal" android:orientation="vertical"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:drawableLeft="@drawable/icon_reward_ad_success_happy_left" android:drawableRight="@drawable/icon_reward_ad_success_happy_right" android:drawablePadding="10dp" android:gravity="bottom" android:text=" 恭喜你!" android:textColor="#ffffffff" android:textSize="18sp" /> <TextView android:id="@+id/tv_content" android:layout_width="233dp" android:gravity="center" android:layout_height="wrap_content" android:layout_marginTop="20dp" android:layout_marginBottom="10dp" android:text="成功获得1天铂金会员权益" android:textColor="#ffffffff" android:textSize="15sp" /> </LinearLayout> app/src/main/res/layout/item_send_circle_content.xml
@@ -9,202 +9,205 @@ android:paddingRight="15dp" android:paddingBottom="15dp"> <LinearLayout <FrameLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center_vertical"> android:layout_height="wrap_content"> <LinearLayout android:id="@+id/ll_user" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginLeft="10dp" android:orientation="vertical"> <!--用户信息区域 --> android:gravity="center_vertical"> <LinearLayout android:id="@+id/ll_user" android:layout_width="match_parent" android:layout_height="39dp"> <!-- 头像--> <ImageView android:id="@+id/iv_portrait" android:layout_width="39dp" android:layout_height="39dp" android:src="@drawable/ic_defaultavatar"></ImageView> android:layout_height="wrap_content" android:orientation="vertical"> <!--用户信息区域 --> <LinearLayout android:layout_width="0dp" android:layout_height="match_parent" android:layout_marginLeft="10dp" android:layout_weight="1" android:orientation="vertical"> android:layout_width="match_parent" android:layout_height="39dp"> <!-- 头像--> <ImageView android:id="@+id/iv_portrait" android:layout_width="39dp" android:layout_height="39dp" android:src="@drawable/ic_defaultavatar"></ImageView> <FrameLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center_vertical"> <LinearLayout android:layout_width="0dp" android:layout_height="match_parent" android:layout_marginLeft="10dp" android:layout_weight="1" android:orientation="vertical"> <TextView android:id="@+id/tv_nickname" android:layout_width="wrap_content" <FrameLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="left" android:text="小编精选" android:textColor="#ff000000" android:textSize="17sp"></TextView> <LinearLayout android:id="@+id/ll_share" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="right" android:layout_marginLeft="5dp" android:background="@drawable/shape_send_circle_btn" android:gravity="center" android:paddingLeft="3dp" android:paddingTop="1dp" android:paddingRight="5.5dp" android:paddingBottom="1dp"> <ImageView android:layout_width="wrap_content" android:layout_height="15.5dp" android:src="@drawable/icon_send_circle_share"> </ImageView> android:gravity="center_vertical"> <TextView android:id="@+id/tv_share_count" android:id="@+id/tv_nickname" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="4.5dp" android:text="1875" android:textColor="@color/white" android:textSize="15sp"></TextView> </LinearLayout> android:layout_gravity="left" android:text="小编精选" android:textColor="#ff000000" android:textSize="17sp"></TextView> </FrameLayout> <LinearLayout android:id="@+id/ll_share" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="right" android:layout_marginLeft="5dp" android:background="@drawable/shape_send_circle_btn" android:gravity="center" android:paddingLeft="3dp" android:paddingTop="1dp" android:paddingRight="5.5dp" android:paddingBottom="1dp" android:visibility="gone"> <View android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1"></View> <ImageView android:layout_width="wrap_content" android:layout_height="15.5dp" android:src="@drawable/icon_send_circle_share"> <!--分享信息区域 --> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center_vertical"> </ImageView> <TextView android:id="@+id/tv_publish_time" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="right|center_vertical" android:text="3天前" android:textColor="#999999" android:textSize="12sp"></TextView> <TextView android:id="@+id/tv_share_count" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="4.5dp" android:text="1875" android:textColor="@color/white" android:textSize="15sp"></TextView> </LinearLayout> <TextView android:id="@+id/tv_publish_time" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="right|center_vertical" android:text="3天前" android:textColor="#999999" android:textSize="12sp"></TextView> </FrameLayout> <!--分享信息区域 --> <LinearLayout android:id="@+id/ll_labels" android:layout_width="0dp" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginRight="3dp" android:layout_weight="1" android:orientation="horizontal"> android:gravity="center_vertical"> <LinearLayout android:id="@+id/ll_labels" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginRight="3dp" android:layout_weight="1" android:orientation="horizontal"> </LinearLayout> </LinearLayout> </LinearLayout> </LinearLayout> </LinearLayout> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="20dp"> <LinearLayout android:id="@+id/ll_content" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginLeft="50dp" android:layout_weight="1" android:orientation="vertical"> <!--推荐语 --> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="0dp" android:layout_marginBottom="10dp" android:gravity="right" android:orientation="vertical" android:paddingTop="5dp" android:paddingBottom="5dp"> <TextView android:id="@+id/tv_recommend" android:layout_width="match_parent" android:layout_height="wrap_content" android:ellipsize="end" android:gravity="left" android:maxLines="6" android:text="1231313221112123213" android:textColor="#000000" android:textSize="15sp"></TextView> <FrameLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="2dp"> <ImageView android:id="@+id/iv_recommend_more" android:layout_width="60dp" android:layout_height="11dp" android:layout_gravity="left|bottom" android:src="@drawable/icon_send_circle_more" android:visibility="gone"></ImageView> </FrameLayout> </LinearLayout> <androidx.recyclerview.widget.RecyclerView android:id="@+id/rv_content" android:layout_width="match_parent" android:layout_height="wrap_content"></androidx.recyclerview.widget.RecyclerView> </LinearLayout> </LinearLayout> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content"> <LinearLayout android:id="@+id/ll_content" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginLeft="10dp" android:layout_weight="1" android:orientation="vertical"> <!--推荐语 --> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="5dp" android:layout_marginBottom="10dp" android:gravity="right" android:orientation="vertical" android:paddingTop="5dp" android:paddingBottom="5dp"> <TextView android:id="@+id/tv_recommend" android:layout_width="match_parent" android:layout_height="wrap_content" android:ellipsize="end" android:gravity="left" android:maxLines="6" android:text="1231313221112123213" android:textColor="#000000" android:textSize="16sp"></TextView> <FrameLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="2dp"> <ImageView android:id="@+id/iv_recommend_more" android:layout_width="60dp" android:layout_height="11dp" android:layout_gravity="left|bottom" android:src="@drawable/icon_send_circle_more" android:visibility="gone"></ImageView> </FrameLayout> </LinearLayout> <androidx.recyclerview.widget.RecyclerView android:id="@+id/rv_content" android:layout_width="match_parent" android:layout_height="wrap_content"></androidx.recyclerview.widget.RecyclerView> </LinearLayout> </LinearLayout> </FrameLayout> <!--操作面板 --> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="10dp" android:gravity="center"> android:gravity="center" android:visibility="gone"> <LinearLayout app/src/main/res/layout/item_send_circle_content_comment.xml
@@ -55,6 +55,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" android:background="@drawable/shape_send_circle_recommend_bg" android:padding="5dp"> <TextView @@ -65,8 +66,8 @@ android:ellipsize="end" android:maxLines="6" android:text="12321223" android:textColor="#000000" android:textSize="14sp"></TextView> android:textColor="#333333" android:textSize="13sp"></TextView> <FrameLayout android:layout_width="match_parent" app/src/main/res/layout/item_send_circle_goods.xml
@@ -7,94 +7,189 @@ android:orientation="vertical" android:padding="5dp"> <LinearLayout <FrameLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"> android:layout_height="94dp"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="-6sp"> <ImageView android:id="@+id/iv_shop_type" android:layout_width="wrap_content" android:layout_height="15.5dp" android:layout_marginTop="7sp"></ImageView> android:layout_height="match_parent" android:orientation="vertical"> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="bottom"> android:gravity="center_vertical"> <TextView android:id="@+id/tv_name" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:ellipsize="end" android:maxLines="2" android:lineSpacingMultiplier="1.2" android:text="牛仔外套女ins潮春秋装韩版宽松百搭春季2019新款123123牛仔外套女ins潮春秋装韩版宽松百搭春季2019新款123123" android:textColor="#666666" android:textSize="13sp" /> <ImageView android:layout_width="24dp" android:layout_height="24dp" android:layout_gravity="right|center_vertical" android:layout_marginLeft="10dp" android:layout_marginRight="5dp" android:src="@drawable/icon_send_circle_in"></ImageView> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="8dp" android:gravity="center_vertical" android:visibility="gone"> <TextView android:id="@+id/tv_shop_name" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:drawableLeft="@drawable/ic_item_goods_shop" android:drawablePadding="5dp" android:ellipsize="end" android:gravity="center_vertical" android:lines="1" android:text="三只松鼠官方旗舰店" android:textColor="#ffa1a0a0" android:textSize="12sp" android:visibility="gone" /> </LinearLayout> <LinearLayout android:id="@+id/ll_labels" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="2dp" android:orientation="horizontal" android:visibility="gone"></LinearLayout> <View android:layout_width="1dp" android:layout_height="0dp" android:layout_weight="1"> </View> <TextView android:id="@+id/tv_coupon_amount" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="5dp" android:background="@drawable/shape_item_goods_coupon_bg" android:drawableLeft="@drawable/icon_item_goods_coupon" android:drawablePadding="3dp" android:gravity="center_vertical" android:text="-¥100" android:textColor="#ffffac00" android:textSize="12sp"></TextView> <TextView android:id="@+id/tv_fanli_amount" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="5dp" android:background="@drawable/shape_item_goods_fanli_bg" android:drawableLeft="@drawable/icon_item_goods_fanli" android:drawablePadding="3dp" android:text="-¥10" android:textColor="#ff55be00" android:textSize="12sp" android:visibility="visible" /> <TextView android:id="@+id/tv_hongbao_amount" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="5dp" android:background="@drawable/shape_item_goods_hongbao_bg" android:drawableLeft="@drawable/icon_item_goods_hongbao" android:drawablePadding="3dp" android:text="-¥10" android:textColor="#ffff2b4b" android:textSize="12sp" android:visibility="gone" /> </LinearLayout> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="right|bottom" android:layout_marginBottom="-4dp" android:gravity="right|bottom" android:orientation="vertical" android:padding="0dp"> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content"> <TextView android:id="@+id/tv_sale_num" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="5dp" android:text="月销 8968" android:textColor="#A1A0A0" android:textSize="12sp" android:visibility="visible" /> <TextView android:id="@+id/tv_price" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="5dp" android:text="28.9" android:textColor="@color/theme" android:textSize="13sp" android:textStyle="bold"></TextView> <TextView android:id="@+id/tv_zkprice" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="9.5dp" android:text="¥78.9" android:textColor="#ffaaaaaa" android:layout_marginLeft="10dp" android:text="¥128.9" android:textColor="#A1A0A0" android:textSize="12sp" /> </LinearLayout> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content"> <TextView android:id="@+id/tv_sales_num" android:id="@+id/tv_actual_price1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="9.5dp" android:text="月销 8968" android:textColor="#ffaaaaaa" android:textSize="12sp" /> android:padding="0dp" android:text="¥28" android:textColor="#ffff2b4b" android:textSize="23sp" /> <TextView android:id="@+id/tv_actual_price2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="0dp" android:text="" android:textColor="#ffff2b4b" android:textSize="13sp" /> </LinearLayout> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="5dp"> <include layout="@layout/item_coupon_common"></include> <TextView android:id="@+id/tv_favourable" android:layout_width="wrap_content" android:layout_height="20dp" android:layout_gravity="center_vertical" android:background="@drawable/shape_goods_list_price_fan" android:ellipsize="end" android:gravity="center_vertical" android:lines="1" android:paddingLeft="1dp" android:paddingRight="9dp" android:text="分享奖金 ¥99.9" android:textColor="@color/white" android:textSize="12sp" /> </LinearLayout> </LinearLayout> <ImageView android:layout_width="24dp" android:layout_height="24dp" android:layout_gravity="right|center_vertical" android:layout_marginRight="5dp" android:src="@drawable/icon_send_circle_in"></ImageView> </FrameLayout> <ImageView app/src/main/res/xml/csj_file_paths.xml
New file @@ -0,0 +1,9 @@ <?xml version="1.0" encoding="utf-8"?> <paths> <!--为了适配所有路径可以设置 path = "." --> <external-path name="tt_external_root" path="." /> <external-path name="tt_external_download" path="Download" /> <external-files-path name="tt_external_files_download" path="Download" /> <files-path name="tt_internal_file_download" path="Download" /> <cache-path name="tt_internal_cache_download" path="Download" /> </paths> build.gradle
@@ -11,7 +11,7 @@ } dependencies { classpath 'com.android.tools.build:gradle:3.5.1' classpath 'com.android.tools.build:gradle:4.0.1' classpath 'com.neenbedankt.gradle.plugins:android-apt:1.4'//Added line // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files @@ -29,6 +29,8 @@ // maven { url "https://raw.github.com/bmob/bmob-android-sdk/master" } maven { url "https://jitpack.io" } google() } } task clean(type: Delete) { library-mine/src/com/wpc/library/upgrade/UpdateService.java
@@ -81,7 +81,7 @@ //判断是否是AndroidN以及更高的版本 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); Uri contentUri = FileProvider.getUriForFile(context.getApplicationContext(), BuildConfig.APPLICATION_ID + ".fileprovider", file); Uri contentUri = FileProvider.getUriForFile(context.getApplicationContext(), getPackageName() + ".fileprovider", file); intent.setDataAndType(contentUri, "application/vnd.android.package-archive"); } else { Uri uri = Uri.fromFile(file); social_sdk_library_project/build.gradle
@@ -10,7 +10,7 @@ api files('libs/umeng-sharetool-6.9.6.jar') // api files('libs/SocialSDK_sms.jar') api files('libs/open_sdk_r5990_lite.jar') api files('libs/core-4.3.1-openDefaultRelease.aar') provided files('libs/core-4.3.1-openDefaultRelease.aar') } android {