Commit d8da792a authored by mengcuiguang2's avatar mengcuiguang2

解决冲突

parent e2740935
Pipeline #219 failed with stages
......@@ -7,6 +7,7 @@ import com.bytedance.sdk.openadsdk.TTAdConstant;
import com.bytedance.sdk.openadsdk.TTAdNative;
import com.bytedance.sdk.openadsdk.TTAppDownloadListener;
import com.bytedance.sdk.openadsdk.TTRewardVideoAd;
import com.mingce.yuanbaby.ad.code.CsjCode;
import com.mints.goodnews.BuildConfig;
import com.mints.goodnews.ad.video.base.BaseVideoAd;
import com.mints.goodnews.ad.video.base.VideoAdStatusListener;
......@@ -82,61 +83,11 @@ public class CsjVideoAdManager extends BaseVideoAd {
isClickScreen = true;
this.curCoin = curCoin;
this.extraId = extraId;
String codeId = TtCsjAdManager.TT_AD_VEDIO_MAIN_DEV;
if (!BuildConfig.DEBUG) {
switch (carrierType) {
case Constant.CARRIER_VERSUS_VIDEO:// 每日任务视频
codeId = TtCsjAdManager.TT_AD_VEDIO_MAIN;
break;
case Constant.CARRIER_OFFLINE_DOUBLE:// 离线收益翻倍
codeId = TtCsjAdManager.TT_AD_VEDIO_OFFINELINE;
break;
case Constant.CARRIER_SIGNIN_HOMEPAGE_CARD:// 签到翻倍
codeId = TtCsjAdManager.TT_AD_VEDIO_SIGN;
break;
case Constant.CARRIER_WALK_BUBBLE:// 汽泡
codeId = TtCsjAdManager.TT_AD_VEDIO_MOREDIALOG;
break;
case Constant.CARRIER_HOMEWATER:// 喝水
codeId = TtCsjAdManager.TT_AD_VEDIO_DRINK;
break;
case Constant.CARRIER_WALK:// 走路
codeId = TtCsjAdManager.TT_AD_VEDIO_WALK;
break;
case Constant.CARRIER_CHALLENGE_TURN:// 大转盘
codeId = TtCsjAdManager.TT_AD_VEDIO_TURNABLE;
break;
case Constant.CARRIER_DRAWCASH:// 提现
codeId = TtCsjAdManager.TT_AD_VEDIO_DRAWCASH;
break;
case Constant.CARRIER_CHALLENGE_CARD:// 刮刮乐
codeId = TtCsjAdManager.TT_AD_VEDIO_ERASE;
break;
case Constant.CARRIER_BLESSINGBAG_DOUBLE:// 福袋
codeId = TtCsjAdManager.TT_AD_VEDIO_BLESSINGBAG;
break;
case Constant.CARRIER_HOMEVEDIO_DOUBLE:// 首页视频翻倍
codeId = TtCsjAdManager.TT_AD_VEDIO_HOMEVEDIO;
break;
case Constant.CARRIER_SMALLHOMEVEDIO_DOUBLE:// 短视频翻倍
codeId = TtCsjAdManager.TT_AD_VEDIO_SMALLHOMEVEDIO;
break;
case Constant.CARRIER_KUYINYUE_VEDIO:// 来电秀
codeId = TtCsjAdManager.TT_AD_VEDIO_KYLVEDIO;
break;
case Constant.CARRIER_EATMEAL_SUBSIDY:// 饭补
codeId = TtCsjAdManager.TT_AD_VEDIO_EAT;
break;
case Constant.CARRIER_HIGH_ACTIVITY:// 超级翻倍/高额任务
codeId = TtCsjAdManager.TT_AD_VEDIO_MOST;
break;
default:
codeId = TtCsjAdManager.TT_AD_VEDIO_MOREDIALOG;
break;
}
}
// showToast("穿山甲激励视频代码位:" + codeId);
String codeId = getCodeId(carrierType);
// ToastUtil.showLong(WenshuApplication.getContext(), "穿山甲激励视频代码位:" + codeId);
String userID = userManager.getUserID();
String tid = MD5.GetMD5Code(System.currentTimeMillis() + userID);
......@@ -277,6 +228,28 @@ public class CsjVideoAdManager extends BaseVideoAd {
}
}
/**
* 获取codeId
*
* @param carrierType
* @return
*/
private String getCodeId(String carrierType) {
String codeId = TtCsjAdManager.TT_AD_VEDIO_MAIN_DEV;
if (!BuildConfig.DEBUG) {
switch (carrierType) {
case Constant.CARRIER_BLESSINGBAG_DOUBLE:// 福袋
codeId = TtCsjAdManager.TT_AD_VEDIO_BLESSINGBAG;
break;
default:
codeId = CsjCode.INSTANCE.getCodeId();
break;
}
}
return codeId;
}
/**
* 封装广告数据,请求服务器
*
......
......@@ -2,6 +2,8 @@ package com.mints.goodnews.ad.video;
import android.app.Activity;
import android.os.SystemClock;
import com.mingce.yuanbaby.ad.code.YlhCode;
import com.mints.goodnews.ad.video.base.BaseVideoAd;
import com.mints.goodnews.ad.video.base.VideoAdStatusListener;
import com.mints.goodnews.common.AppConfig;
......@@ -13,6 +15,8 @@ import com.qq.e.ads.rewardvideo.RewardVideoAD;
import com.qq.e.ads.rewardvideo.RewardVideoADListener;
import com.qq.e.comm.util.AdError;
import java.util.Map;
/**
* 优量汇视频
*/
......@@ -46,58 +50,9 @@ public class YlhVideoAdManager extends BaseVideoAd {
public void loadAd(Activity activity, int curCoin, String carrierType, String extraId) {
isClickScreen = true;
String ylhPostId;
switch (carrierType) {
case Constant.CARRIER_VERSUS_VIDEO:// 每日任务视频
ylhPostId = YlhAdManager.INSTANCE.getYLH_AD_VEDIO_MAIN();
break;
case Constant.CARRIER_OFFLINE_DOUBLE:// 离线收益翻倍
ylhPostId = YlhAdManager.INSTANCE.getYLH_AD_VEDIO_OFFINELINE();
break;
case Constant.CARRIER_SIGNIN_HOMEPAGE_CARD:// 签到翻倍
ylhPostId = YlhAdManager.INSTANCE.getYLH_AD_VEDIO_SIGN();
break;
case Constant.CARRIER_WALK_BUBBLE:// 汽泡
ylhPostId = YlhAdManager.INSTANCE.getYLH_AD_VEDIO_MOREDIALOG();
break;
case Constant.CARRIER_HOMEWATER:// 喝水
ylhPostId = YlhAdManager.INSTANCE.getYLH_AD_VEDIO_DRINK();
break;
case Constant.CARRIER_WALK:// 走路
ylhPostId = YlhAdManager.INSTANCE.getYLH_AD_VEDIO_WALK();
break;
case Constant.CARRIER_CHALLENGE_TURN:// 大转盘
ylhPostId = YlhAdManager.INSTANCE.getYLH_AD_VEDIO_TURNABLE();
break;
case Constant.CARRIER_DRAWCASH:// 提现
ylhPostId = YlhAdManager.INSTANCE.getYLH_AD_VEDIO_DRAWCASH();
break;
case Constant.CARRIER_CHALLENGE_CARD:// 刮刮乐
ylhPostId = YlhAdManager.INSTANCE.getYLH_AD_VEDIO_ERASE();
break;
case Constant.CARRIER_BLESSINGBAG_DOUBLE:// 福袋
ylhPostId = YlhAdManager.INSTANCE.getYLH_AD_VEDIO_BLESSINGBAG();
break;
case Constant.CARRIER_HOMEVEDIO_DOUBLE:// 首页视频翻倍
ylhPostId = YlhAdManager.INSTANCE.getYLH_AD_VEDIO_HOMEVEDIO();
break;
case Constant.CARRIER_SMALLHOMEVEDIO_DOUBLE:// 短视频翻倍
ylhPostId = YlhAdManager.INSTANCE.getYLH_AD_VEDIO_SMALLHOMEVEDIO();
break;
case Constant.CARRIER_KUYINYUE_VEDIO:// 来电秀
ylhPostId = YlhAdManager.INSTANCE.getYLH_AD_VEDIO_KYLVEDIO();
break;
case Constant.CARRIER_EATMEAL_SUBSIDY:// 饭补
ylhPostId = YlhAdManager.INSTANCE.getYLH_AD_VEDIO_EAT();
break;
case Constant.CARRIER_HIGH_ACTIVITY:// 超级翻倍/高额任务
ylhPostId = YlhAdManager.INSTANCE.getYLH_AD_VEDIO_MOST();
break;
default:
ylhPostId = YlhAdManager.INSTANCE.getYLH_AD_VEDIO_MOREDIALOG();
break;
}
// ToastUtil.show(MintsApplication.getContext(), "ylh vedio:" + ylhPostId);
String ylhPostId = getCodeId(carrierType);
// ToastUtil.showLong(WenshuApplication.getContext(), "优量汇激励视频代码位:" + ylhPostId);
if (rewardVideoAD != null) {
rewardVideoAD = null;
}
......@@ -144,13 +99,6 @@ public class YlhVideoAdManager extends BaseVideoAd {
}
@Override
public void onReward() {//激励视频广告激励发放
// if (activity != null) {
// ylhVideoAdPresenter.reportAddCoinMsg(activity, getAdMapVO(carrierType));
// }
}
@Override
public void onADClick() {//激励视频广告被点击
if (AppConfig.needReportClickAdEvent) {
......@@ -198,11 +146,29 @@ public class YlhVideoAdManager extends BaseVideoAd {
videoAdStatusListener.adFail();
}
}
@Override
public void onReward() {
}
});
rewardVideoAD.loadAD();
}
private String getCodeId(String carrierType) {
String ylhPostId;
switch (carrierType) {
case Constant.CARRIER_BLESSINGBAG_DOUBLE:// 福袋
ylhPostId = YlhAdManager.INSTANCE.getYLH_AD_VEDIO_BLESSINGBAG();
break;
default:
ylhPostId = YlhCode.INSTANCE.getCodeId();
break;
}
return ylhPostId;
}
public void setVideoAdStatusListener(VideoAdStatusListener videoAdStatusListener) {
this.videoAdStatusListener = videoAdStatusListener;
}
......
package com.mints.goodnews.manager
import com.mints.goodnews.common.AppConfig
import com.mints.goodnews.mvp.model.AdcodeBean
import com.mints.goodnews.mvp.model.ServerAdBean
/**
* 渠道管理
*/
object ChannelManager {
const val CHANNEL_TOUTIAO = "toutiao"
/**
* 按用户注册渠道 动态时时更新代码位
*/
fun updataCodeIdForRegisterChannel(idBean: AdcodeBean?) {
TtCsjAdManager.updataIdByChannel(idBean)
YlhAdManager.updataIdByChannel(idBean)
}
/**
* 按渠道包 动态更新一次代码位
*/
fun updataCodeIdForPkgChannel(idBean: ServerAdBean?) {
if (idBean != null && !AppConfig.isUpdateForPkg) {
TtCsjAdManager.updataIdByPkg(idBean)
YlhAdManager.updataIdByPkg(idBean)
AppConfig.isUpdateForPkg = true
}
}
}
\ No newline at end of file
package com.mingce.yuanbaby.ad.code
import com.mints.goodnews.manager.TtCsjAdManager
import com.mints.goodnews.utils.LogUtil
/**
* 描述:穿山甲代码位策略
* 作者:孟崔广
* 时间:2021/4/1 14:02
*/
object CsjCode {
private val TAG = CsjCode::class.java.simpleName
var currentCodePosition = 0 //当前代码位位置
var codeSize = 0 // 代码位总数
private var listCode: MutableList<String>? = null
fun initListCode(listCode: MutableList<String>?) {
listCode?.let {
this.listCode = it
codeSize = it.size
}
}
/**
* 轮训获取列表中的代码位
*
* 一轮获取完成后,重新开始
*/
fun getCodeId(): String {
var codeId = TtCsjAdManager.TT_AD_VEDIO_MOREDIALOG//默认
if (codeSize > 0) {
listCode?.let {
// currentCodePosition == codeSize表示一轮获取完成,需重新开始
if (currentCodePosition == codeSize) {
currentCodePosition = 0
}
codeId = it[currentCodePosition]
LogUtil.d(TAG,"穿山甲激励视频-->总大小:${codeSize} 当前位置:${currentCodePosition} 当前位置codeId:${codeId}")
currentCodePosition++
}
}
return codeId
}
}
\ No newline at end of file
......@@ -77,52 +77,52 @@ public class LiebaoManager {
// 设置游戏的广告id
CmGameAppInfo.TTInfo ttInfo = new CmGameAppInfo.TTInfo();
// 游戏内广告有如下6种;
ttInfo.setGameLoad_EXADId(TtCsjAdManager.TT_AD_INSERT_LOADING_ID_LIEBAO); // 游戏加载时,插屏广告1:1,模板渲染
ttInfo.setRewardVideoId(TtCsjAdManager.TT_AD_VEDIO_GAME); // 激励视频
ttInfo.setFullVideoId(TtCsjAdManager.TT_AD_ALLVEDIO_ID_LIEBAO); // 全屏视频,插屏场景下展示
// ttInfo.setExpressInteractionId(TtCsjAdManager.TT_AD_INSERT_ID_LIEBAO); // 插屏广告,插屏场景下展示,模板渲染,2:3
// ttInfo.setExpressBannerId("901121159"); // Banner广告,模板渲染,尺寸:600*150,会导致游戏卡慢,暂时不用
ttInfo.setGameEndExpressFeedAdId(TtCsjAdManager.TT_AD_NATIVEEXPRESS_ID_LIEBAO_LISTEXIT); // 游戏退出弹框,信息流广告,模板渲染
// 游戏列表页面有如下2种:
ttInfo.setGameListExpressFeedId(TtCsjAdManager.TT_AD_NATIVEEXPRESS_ID_LIEBAO_LISTEXIT); // 游戏列表,信息流广告,模板渲染
// ttInfo.setGamelistExpressInteractionId("901121536"); // 模板渲染1:1,不能用于游戏tab页的入口
cmGameAppInfo.setTtInfo(ttInfo);
// 需要支持广点通广告时,才需下面代码
// 【设置广点通广告id】
CmGameAppInfo.GDTAdInfo gdtAdInfo = new CmGameAppInfo.GDTAdInfo();
gdtAdInfo.setAppId(YlhAdManager.YLH_AD_APPID); // 广点通的APPID
// 游戏内广告场景;
gdtAdInfo.setRewardVideoId(YlhAdManager.INSTANCE.getYLH_AD_VEDIO_GAME()); // 激励视频
gdtAdInfo.setGameLoadInterId(YlhAdManager.INSTANCE.getYLH_AD_INTERSTITIALAD_LIEBAO());//游戏加载中的插屏
// gdtAdInfo.setBannerId(YlhAdManager.YLH_AD_BANNER_LIEBAO); // banner广告
gdtAdInfo.setPlayGameInterId(YlhAdManager.INSTANCE.getYLH_AD_INTERSTITIALAD_LIEBAO());//游戏进行中关卡插屏
cmGameAppInfo.setGdtAdInfo(gdtAdInfo);
// CmGameAppInfo.TTInfo ttInfo = new CmGameAppInfo.TTInfo();
// // 游戏内广告有如下6种;
// ttInfo.setGameLoad_EXADId(TtCsjAdManager.TT_AD_INSERT_LOADING_ID_LIEBAO); // 游戏加载时,插屏广告1:1,模板渲染
// ttInfo.setRewardVideoId(TtCsjAdManager.TT_AD_VEDIO_GAME); // 激励视频
// ttInfo.setFullVideoId(TtCsjAdManager.TT_AD_ALLVEDIO_ID_LIEBAO); // 全屏视频,插屏场景下展示
//// ttInfo.setExpressInteractionId(TtCsjAdManager.TT_AD_INSERT_ID_LIEBAO); // 插屏广告,插屏场景下展示,模板渲染,2:3
//// ttInfo.setExpressBannerId("901121159"); // Banner广告,模板渲染,尺寸:600*150,会导致游戏卡慢,暂时不用
// ttInfo.setGameEndExpressFeedAdId(TtCsjAdManager.TT_AD_NATIVEEXPRESS_ID_LIEBAO_LISTEXIT); // 游戏退出弹框,信息流广告,模板渲染
// // 游戏列表页面有如下2种:
// ttInfo.setGameListExpressFeedId(TtCsjAdManager.TT_AD_NATIVEEXPRESS_ID_LIEBAO_LISTEXIT); // 游戏列表,信息流广告,模板渲染
//// ttInfo.setGamelistExpressInteractionId("901121536"); // 模板渲染1:1,不能用于游戏tab页的入口
// cmGameAppInfo.setTtInfo(ttInfo);
//
// // 需要支持广点通广告时,才需下面代码
// // 【设置广点通广告id】
// CmGameAppInfo.GDTAdInfo gdtAdInfo = new CmGameAppInfo.GDTAdInfo();
// gdtAdInfo.setAppId(YlhAdManager.YLH_AD_APPID); // 广点通的APPID
// // 游戏内广告场景;
// gdtAdInfo.setRewardVideoId(YlhAdManager.INSTANCE.getYLH_AD_VEDIO_GAME()); // 激励视频
// gdtAdInfo.setGameLoadInterId(YlhAdManager.INSTANCE.getYLH_AD_INTERSTITIALAD_LIEBAO());//游戏加载中的插屏
//// gdtAdInfo.setBannerId(YlhAdManager.YLH_AD_BANNER_LIEBAO); // banner广告
// gdtAdInfo.setPlayGameInterId(YlhAdManager.INSTANCE.getYLH_AD_INTERSTITIALAD_LIEBAO());//游戏进行中关卡插屏
// cmGameAppInfo.setGdtAdInfo(gdtAdInfo);
//
// // 【设置广点通和穿山甲广告占比】
// // 概率设置规则,如下:
// // 0: 全部使用穿山甲广告
// // 100: 全部采用广点通广告
// // 40:穿山甲广告命中概率是60%,广点通是40%,如果一方没广告,则用另一方补量。
cmGameAppInfo.setRewardAdProbability(40); // 默认值为0,全部采用穿山甲激励视频广告
////
//// // 【设置广点通和穿山甲广告占比】
//// // 概率设置规则,如下:
//// // 0: 全部使用穿山甲广告
//// // 100: 全部采用广点通广告
//// // 40:穿山甲广告命中概率是60%,广点通是40%,如果一方没广告,则用另一方补量。
// cmGameAppInfo.setRewardAdProbability(40); // 默认值为0,全部采用穿山甲激励视频广告
////
////
//// // 戏关卡间插屏广告概率设置建议,代码默认值为20
//// // 1)80%流量给穿山甲,20%给优量汇,原因:穿山甲全屏视频广告收益更高,优量汇收益低但体验 好
//// // 2)概率云端控制,媒体自行下发2种广告源占比
// cmGameAppInfo.setExpressInterAdProbability(60);
//
// // 功能默认开启,可使用如下方法来关闭
//// cmGameAppInfo.setShowLogin(false);
//
// // 戏关卡间插屏广告概率设置建议,代码默认值为20
// // 1)80%流量给穿山甲,20%给优量汇,原因:穿山甲全屏视频广告收益更高,优量汇收益低但体验 好
// // 2)概率云端控制,媒体自行下发2种广告源占比
cmGameAppInfo.setExpressInterAdProbability(60);
// 功能默认开启,可使用如下方法来关闭
// cmGameAppInfo.setShowLogin(false);
// 退出弹窗确认窗口,但不需要游戏推荐内容,该场景使用于网赚场景,因为需要退出后立即给用户奖励。
cmGameAppInfo.setQuitGameConfirmRecommand(false);
// 游戏退出确认弹窗,增加自定义文案,颜色也可以根据自己需要调整
cmGameAppInfo.setQuitGameConfirmTip("<font color=\"#ef0d12\">主人,下次可在“个人中心”找到我哦~</font>");
CmGameSdk.initCmGameSdk((MintsApplication) this.context, cmGameAppInfo, new CmGameImageLoader(), BuildConfig.DEBUG);
// // 退出弹窗确认窗口,但不需要游戏推荐内容,该场景使用于网赚场景,因为需要退出后立即给用户奖励。
// cmGameAppInfo.setQuitGameConfirmRecommand(false);
// // 游戏退出确认弹窗,增加自定义文案,颜色也可以根据自己需要调整
// cmGameAppInfo.setQuitGameConfirmTip("<font color=\"#ef0d12\">主人,下次可在“个人中心”找到我哦~</font>");
// CmGameSdk.initCmGameSdk((MintsApplication) this.context, cmGameAppInfo, new CmGameImageLoader(), BuildConfig.DEBUG);
}
/**
......
......@@ -115,13 +115,6 @@ public class TrackManager {
}
}
public void updataCodeIdForPkgChannel() {
if (trackPresenter != null
&& !AppConfig.isUpdateForPkg) {
trackPresenter.updataCodeIdForPkgChannel();
}
}
/**
* 穿山甲和珊瑚由回调发放奖励
*
......
......@@ -17,33 +17,27 @@ object YlhAdManager {
/* splash-postid */
var YLH_AD_SPLASH_POSTID = "1051659976719686"
var YLH_AD_SPLASH_POSTID = "9091481719572000"
/* 激励视频 */
var YLH_AD_VEDIO_DRINK = "7051055905193266" //喝水打卡
var YLH_AD_VEDIO_WALK = "7051055905193266" //走路打卡
var YLH_AD_VEDIO_MAIN = "7051055905193266" // 我的界面视频
var YLH_AD_VEDIO_ERASE = "7051055905193266" // 刮刮乐
var YLH_AD_VEDIO_TURNABLE = "7051055905193266" // 大转盘
var YLH_AD_VEDIO_MOREDIALOG = "7051055905193266" // 气泡
var YLH_AD_VEDIO_SIGN = "7051055905193266" // 签到
var YLH_AD_VEDIO_EAT = "7051055905193266" // 饭补
var YLH_AD_VEDIO_OFFINELINE = "7051055905193266" // 离线弹框
var YLH_AD_VEDIO_DRAWCASH = "7051055905193266" // 提现
var YLH_AD_VEDIO_MOST = "7051055905193266" // 超级翻倍/高额任务
var YLH_AD_VEDIO_GAME = "7051055905193266" // 猎豹
var YLH_AD_VEDIO_BLESSINGBAG = "7051055905193266" // 福袋
var YLH_AD_VEDIO_HOMEVEDIO = "7051055905193266" // 首页视频翻倍
var YLH_AD_VEDIO_SMALLHOMEVEDIO = "7051055905193266" // 短视频翻倍
var YLH_AD_VEDIO_KYLVEDIO = "7051055905193266" // 来电秀视频
var YLH_AD_VEDIO_DRINK = "3031485769978001" //喝水打卡
var YLH_AD_VEDIO_WALK = "3031485769978001" //走路打卡
var YLH_AD_VEDIO_MAIN = "3031485769978001" // 我的界面视频
var YLH_AD_VEDIO_ERASE = "3031485769978001" // 刮刮乐
var YLH_AD_VEDIO_TURNABLE = "3031485769978001" // 大转盘
var YLH_AD_VEDIO_MOREDIALOG = "3031485769978001" // 气泡
var YLH_AD_VEDIO_SIGN = "3031485769978001" // 签到
var YLH_AD_VEDIO_EAT = "3031485769978001" // 饭补
var YLH_AD_VEDIO_OFFINELINE = "3031485769978001" // 离线弹框
var YLH_AD_VEDIO_DRAWCASH = "3031485769978001" // 提现
var YLH_AD_VEDIO_MOST = "3031485769978001" // 超级翻倍/高额任务
var YLH_AD_VEDIO_BLESSINGBAG = "3031485769978001" // 福袋
var YLH_AD_VEDIO_HOMEVEDIO = "3031485769978001" // 首页视频翻倍
var YLH_AD_VEDIO_SMALLHOMEVEDIO = "3031485769978001" // 短视频翻倍
var YLH_AD_VEDIO_KYLVEDIO = "3031485769978001" // 来电秀视频
/*信息流*/
var YLH_AD_NATIVEEXPRESS_JULEYUN = "" //聚乐云
var YLH_AD_NATIVEEXPRESS_AWARD = "4081450906109922" //奖励弹窗
/* 插屏 */
var YLH_AD_INTERSTITIALAD_LIEBAO = "9071052926611922" //猎豹
var YLH_AD_INTERSTITIALAD_JULEYUN = "" //聚乐云
var YLH_AD_NATIVEEXPRESS_AWARD = "9001583709889121" //奖励弹窗
/**
* 广告初始化
......@@ -51,92 +45,4 @@ object YlhAdManager {
fun initYlhAd(context: Context) {
GDTADManager.getInstance().initWith(context, YLH_AD_APPID)
}
/**
* 按用户注册渠道更新代码位
*/
fun updataIdByChannel(idBean: AdcodeBean?) {
// 渠道对象不为空
if (idBean != null) {
// 后台返回 用户注册渠道
// 开屏
YLH_AD_SPLASH_POSTID = idBean.ylhv1
// 激励视频
YLH_AD_VEDIO_DRINK = idBean.ylhv2 //喝水打卡
YLH_AD_VEDIO_WALK = idBean.ylhv2 //走路打卡
YLH_AD_VEDIO_MAIN = idBean.ylhv2 // 我的界面视频
YLH_AD_VEDIO_ERASE = idBean.ylhv2 // 刮刮乐
YLH_AD_VEDIO_TURNABLE = idBean.ylhv2 // 大转盘
YLH_AD_VEDIO_MOREDIALOG = idBean.ylhv2 // 气泡
YLH_AD_VEDIO_SIGN = idBean.ylhv2 // 签到
YLH_AD_VEDIO_EAT = idBean.ylhv2 // 饭补
YLH_AD_VEDIO_OFFINELINE = idBean.ylhv2 // 离线弹框
YLH_AD_VEDIO_DRAWCASH = idBean.ylhv2 // 提现
YLH_AD_VEDIO_MOST = idBean.ylhv2 // 超级翻倍/高额任务
YLH_AD_VEDIO_GAME = idBean.ylhv2 // 猎豹
YLH_AD_VEDIO_BLESSINGBAG = idBean.ylhv2 // 福袋
YLH_AD_VEDIO_HOMEVEDIO = idBean.ylhv2 // 首页视频翻倍
YLH_AD_VEDIO_SMALLHOMEVEDIO = idBean.ylhv2 // 短视频翻倍
YLH_AD_VEDIO_KYLVEDIO = idBean.ylhv2 // 来电秀视频
}
}
/**
* 按包渠道更新代码位
*/
fun updataIdByPkg(adBean: ServerAdBean?) {
if (adBean != null && adBean.ylh != null && adBean.ylh.vedio != null) {
val idBean = adBean.ylh.vedio
// 激励视频
if(!TextUtils.isEmpty(idBean.homewater)){
YLH_AD_VEDIO_DRINK = idBean.homewater //喝水打卡
}
if(!TextUtils.isEmpty(idBean.walk)){
YLH_AD_VEDIO_WALK = idBean.walk //走路打卡
}
if(!TextUtils.isEmpty(idBean.challengE_VEDIO)){
YLH_AD_VEDIO_MAIN = idBean.challengE_VEDIO // 我的界面视频
}
if(!TextUtils.isEmpty(idBean.challengE_CARD)){
YLH_AD_VEDIO_ERASE = idBean.challengE_CARD // 刮刮乐
}
if(!TextUtils.isEmpty(idBean.challengE_TURN)){
YLH_AD_VEDIO_TURNABLE = idBean.challengE_TURN // 大转盘
}
if(!TextUtils.isEmpty(idBean.walK_BUBBLE)){
YLH_AD_VEDIO_MOREDIALOG = idBean.walK_BUBBLE // 气泡
}
if(!TextUtils.isEmpty(idBean.signiN_HOMEPAGE_CARD)){
YLH_AD_VEDIO_SIGN = idBean.signiN_HOMEPAGE_CARD // 签到
}
if(!TextUtils.isEmpty(idBean.eatmeaL_SUBSIDY)){
YLH_AD_VEDIO_EAT = idBean.eatmeaL_SUBSIDY // 饭补
}
if(!TextUtils.isEmpty(idBean.offlinE_DOUBLE)){
YLH_AD_VEDIO_OFFINELINE = idBean.offlinE_DOUBLE // 离线弹框
}
if(!TextUtils.isEmpty(idBean.drawcash)){
YLH_AD_VEDIO_DRAWCASH = idBean.drawcash // 提现
}
if(!TextUtils.isEmpty(idBean.higH_ACTIVITY)){
YLH_AD_VEDIO_MOST = idBean.higH_ACTIVITY // 超级翻倍/高额任务
}
if(!TextUtils.isEmpty(idBean.blessingbag)){
YLH_AD_VEDIO_BLESSINGBAG = idBean.blessingbag // 福袋
}
if(!TextUtils.isEmpty(idBean.homevediO_CHALLENGE)){
YLH_AD_VEDIO_HOMEVEDIO = idBean.homevediO_CHALLENGE // 首页视频翻倍
}
if(!TextUtils.isEmpty(idBean.smallhomevediO_DOUBLE)){
YLH_AD_VEDIO_SMALLHOMEVEDIO = idBean.smallhomevediO_DOUBLE // 短视频翻倍
}
if(!TextUtils.isEmpty(idBean.kuyinyuE_VEDIO)){
YLH_AD_VEDIO_KYLVEDIO = idBean.kuyinyuE_VEDIO // 来电秀视频
}
if(!TextUtils.isEmpty(adBean.ylh.express.expresS_DIALOG)){
YLH_AD_NATIVEEXPRESS_AWARD = adBean.ylh.express.expresS_DIALOG
}
}
}
}
\ No newline at end of file
package com.mingce.yuanbaby.ad.code
import com.mints.goodnews.manager.YlhAdManager
import com.mints.goodnews.utils.LogUtil
/**
* 描述:优量汇代码位策略
* 作者:孟崔广
* 时间:2021/4/1 14:30
*/
object YlhCode {
private val TAG = YlhCode::class.java.simpleName
var currentCodePosition = 0 //当前代码位位置
var codeSize = 0 // 代码位总数
private var listCode: MutableList<String>? = null
fun initListCode(listCode: MutableList<String>?) {
listCode?.let {
this.listCode = it
codeSize = it.size
}
}
/**
* 轮训获取列表中的代码位
*
* 一轮获取完成后,重新开始
*/
fun getCodeId(): String {
var codeId = YlhAdManager.YLH_AD_VEDIO_MOREDIALOG//默认
if (codeSize > 0) {
listCode?.let {
// currentCodePosition == codeSize表示一轮获取完成,需重新开始
if (currentCodePosition == codeSize) {
currentCodePosition = 0
}
codeId = it[currentCodePosition]
LogUtil.d(TAG, "优量汇激励视频-->总大小:${codeSize} 当前位置:${currentCodePosition} 当前位置codeId:${codeId}")
currentCodePosition++
}
}
return codeId
}
}
\ No newline at end of file
package com.mints.goodnews.mvp.model
import java.io.Serializable
data class CodeBean(
val csjArr: MutableList<String>? = null,
val ylhArr: MutableList<String>? = null
) : Serializable
\ No newline at end of file
package com.mints.goodnews.mvp.presenters
import android.text.TextUtils
import com.mingce.yuanbaby.ad.code.CsjCode
import com.mingce.yuanbaby.ad.code.YlhCode
import com.mints.goodnews.MintsApplication
import com.mints.goodnews.common.Constant
import com.mints.goodnews.common.DeviceInfo
import com.mints.goodnews.manager.AppHttpManager
import com.mints.goodnews.manager.ShumeiManager
import com.mints.goodnews.manager.UserManager
import com.mints.goodnews.mvp.model.BaseResponse
import com.mints.goodnews.mvp.model.MainVideoMsgBean
import com.mints.goodnews.mvp.model.UserBean
import com.mints.goodnews.mvp.model.UserTaskMsgBean
import com.mints.goodnews.mvp.model.*
import com.mints.goodnews.mvp.views.HomeView
import com.mints.goodnews.utils.DeviceUuidFactory
import com.mints.goodnews.utils.IPUtil
......@@ -94,6 +93,32 @@ class HomePresenter : BasePresenter<HomeView>() {
})
}
fun getAdcodesInOpenApp() {
AppHttpManager.getInstance(loanApplication)
.call(loanService.getAdcodesInOpenApp(),
object : BaseSubscriber<BaseResponse<CodeBean>>() {
override fun onCompleted() {
if (isLinkView) return
}
override fun onError(e: Throwable) {
if (isLinkView) return
}
override fun onNext(baseResponse: BaseResponse<CodeBean>) {
if (isLinkView) return
val code = baseResponse.getStatus()
when (code) {
200 -> {
val codeBean = baseResponse.data
CsjCode.initListCode(codeBean.csjArr)
YlhCode.initListCode(codeBean.ylhArr)
}
}
}
})
}
/**
* 游客登录
......
......@@ -10,9 +10,9 @@ import com.mints.library.net.neterror.Throwable
class HorizChannelPresenter : BasePresenter<HorizChannelView>() {
fun getHomeVedioMsg() {
fun getSmallHomeVedioBaseMsg() {
AppHttpManager.getInstance(loanApplication)
.call(loanService.getHomeVedioMsg(),
.call(loanService.smallHomeVedioBaseMsg,
object : BaseSubscriber<BaseResponse<MainVideoMsgBean>>() {
override fun onCompleted() {
if (isLinkView) return
......@@ -20,6 +20,7 @@ class HorizChannelPresenter : BasePresenter<HorizChannelView>() {
override fun onError(e: Throwable) {
if (isLinkView) return
view.getHomeVedioMsgFail()
}
override fun onNext(baseResponse: BaseResponse<MainVideoMsgBean>) {
......@@ -28,7 +29,7 @@ class HorizChannelPresenter : BasePresenter<HorizChannelView>() {
val code = baseResponse.getStatus()
val message = baseResponse.getMessage()
when (code) {
200 -> view.getHomeVedioMsgSuc(baseResponse.getData())
200 -> view.getHomeVedioMsgSuc(baseResponse.data)
else -> view.showToast(message)
}
}
......
......@@ -9,7 +9,6 @@ import com.mints.goodnews.common.AppConfig;
import com.mints.goodnews.common.Constant;
import com.mints.goodnews.common.DeviceInfo;
import com.mints.goodnews.manager.AppHttpManager;
import com.mints.goodnews.manager.ChannelManager;
import com.mints.goodnews.manager.SimulatorManager;
import com.mints.goodnews.manager.UserWeight;
import com.mints.goodnews.mvp.model.BaseResponse;
......@@ -264,30 +263,6 @@ public class TrackPresenter extends BaseTrackPresenter {
});
}
/**
* 首页是否显示微转
*/
public void updataCodeIdForPkgChannel() {
// HashMap<String, Object> vo = new HashMap<>();
// vo.put("pkg", Constant.MINTS_PKG_NAME);
AppHttpManager.getInstance(loanApplication)
.call(loanService.baseCarrierAdcodeConfig(),
new BaseSubscriber<BaseResponse<ServerAdBean>>() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
}
@Override
public void onNext(BaseResponse<ServerAdBean> baseResponse) {
ChannelManager.INSTANCE.updataCodeIdForPkgChannel(baseResponse.getData());
}
});
}
/**
* 上送金币信息
......
......@@ -3,7 +3,7 @@ package com.mints.goodnews.mvp.views
import com.mints.goodnews.mvp.model.MainVideoMsgBean
interface HorizChannelView : BaseView {
fun getHomeVedioMsgFail()
fun getHomeVedioMsgSuc(data: MainVideoMsgBean)
}
\ No newline at end of file
......@@ -9,6 +9,7 @@ import com.mints.goodnews.mvp.model.BannerBean;
import com.mints.goodnews.mvp.model.BaseResponse;
import com.mints.goodnews.mvp.model.CashoutChallengeBean;
import com.mints.goodnews.mvp.model.ClickTurnBean;
import com.mints.goodnews.mvp.model.CodeBean;
import com.mints.goodnews.mvp.model.CommonParamBean;
import com.mints.goodnews.mvp.model.DrawcashBean;
import com.mints.goodnews.mvp.model.DrawcashRecordBean;
......@@ -76,6 +77,14 @@ public interface LoanService {
@POST("api/visitorlogin")
Observable<BaseResponse<UserBean>> visitorlogin(@Body Map<String, Object> vo);
/**
* 获取adcode List
*
* @return
*/
@POST("na/getAdcodesInOpenApp")
Observable<BaseResponse<CodeBean>> getAdcodesInOpenApp();
/**
* 注册极光设备
*
......
......@@ -171,15 +171,15 @@ class MainActivity : BaseActivity(), MainView, View.OnClickListener {
}
fun selectVedio() {
moneyFragment?.let {
(it as MoneyFragment).selectVedio()
}
// moneyFragment?.let {
// (it as MoneyFragment).selectVedio()
// }
}
fun selectBook() {
moneyFragment?.let {
(it as MoneyFragment).selectBook()
}
// moneyFragment?.let {
// (it as MoneyFragment).selectBook()
// }
}
fun selectXmly() {
......
......@@ -40,7 +40,7 @@ import java.math.BigDecimal
* 时间:2020/9/20 17:30
*/
class FriendsFragment(private var isResume: Boolean = false) : BaseFragment(), FriendsView,
OnRefreshListener, View.OnClickListener, ProgressLayout.BoxListener {
OnRefreshListener, View.OnClickListener {
private val friendsPresenter by lazy { FriendsPresenter() }
......@@ -102,7 +102,8 @@ class FriendsFragment(private var isResume: Boolean = false) : BaseFragment(), F
tv_right_subtitle.setOnClickListener(this)
btn_invite.setOnClickListener(this)
tv_detail.setOnClickListener(this)
tv_invited_info.setOnClickListener(this)
tv_friends_directly.setOnClickListener(this)
tv_friends_indirect.setOnClickListener(this)
}
private fun initRecy() {
......@@ -259,6 +260,9 @@ class FriendsFragment(private var isResume: Boolean = false) : BaseFragment(), F
}
private fun generateData(data: FriendHallMsgBean) {
friends_sum.text = "" + data.friendCount
friends_directly_sum.text = "" + data.directFriendsCount
friends_indirect_sum.text = "" + data.indirectFriendsCount
btn_get_bonus.text = data.button
btn_get_bonus.isEnabled = data.status == 0 && data.cash > 0
......@@ -381,14 +385,18 @@ class FriendsFragment(private var isResume: Boolean = false) : BaseFragment(), F
override fun onClick(v: View?) {
when (v?.id) {
R.id.tv_friends_directly -> {
// 直接亲友弹框
hintDialog(true)
}
R.id.tv_friends_indirect -> {
// 间接亲友弹框
hintDialog(false)
}
R.id.tv_detail -> {
// 亲友团详情
readyGo(FriendsActivity::class.java)
}
R.id.tv_invited_info -> {
// 邀请好友提示
hintDialog(0, "每邀请1个人,并累计提现大于等于1元,算完成1个邀请", "知道了")
}
R.id.btn_invite -> {
// 邀请好友
inviteFriends()
......@@ -416,6 +424,34 @@ class FriendsFragment(private var isResume: Boolean = false) : BaseFragment(), F
}
}
private fun hintDialog(flag: Boolean) {
bonusDialog = BonusDialog(requireActivity(), object : DialogListener() {
override fun onClick(v: View) {
when (v.id) {
R.id.btn_submit -> {
if (activity != null && !activity!!.isFinishing &&
bonusDialog != null && bonusDialog!!.isShowing
) {
bonusDialog!!.dismiss()
}
}
}
}
})
bonusDialog?.let {
if (flag) {
it.setTitle("什么是直接亲友?")
it.setContent("经你本人直接邀请的亲友,就是你的直接亲友。")
it.setBtnStr("知道了")
} else {
it.setTitle("什么是间接亲友?")
it.setContent("经你直接亲友邀请的亲友,就是你的间接亲友。")
it.setBtnStr("知道了")
}
it.show()
}
}
// 总收益榜
override fun getContributionBigLeadersSuc(data: FriendHallMsgBean) {
srl_my.finishRefresh(true)
......@@ -475,42 +511,10 @@ class FriendsFragment(private var isResume: Boolean = false) : BaseFragment(), F
override fun getSonCashoutChallengeMsgSuc(data: CashoutChallengeBean) {
cashoutChallengeBean = data
tv_invited_info.text = "您已邀请" + data.complete + "人"
progress_layout.visibility = View.VISIBLE
progress_layout.setBoxListener(this)
progress_layout.setStatus(data.list)
progress_layout.setProgress(data.complete)
}
override fun getSonCashoutChallengeMsgFail() {}
override fun clickBox(position: Int, status: Int) {
when (status) {
0 -> {
hintDialog(
-1, "您还需邀请" +
(cashoutChallengeBean!!.list[position].needCount - cashoutChallengeBean?.complete!!) +
"位好友才可领取" + cashoutChallengeBean!!.list[position].cash + "元奖励",
"邀请好友"
)
}
1 -> {
hintDialog(
0, "恭喜您,已获得" + cashoutChallengeBean!!.list[position].cash +
"元奖励(已转为金币存入您的账户)",
"知道了"
)
}
2 -> {
hintDialog(
0, "您已经领取过本阶段奖励",
"知道了"
)
}
}
}
/**
* 图片分享
*/
......
......@@ -108,7 +108,7 @@ class HorizonChannelFragment : BaseFragment(), HorizChannelView, View.OnClickLis
if (AppConfig.fragmentClickFlag == Constant.FRAGMENT_CLICK_TWO) {
if (!TextUtils.isEmpty(userManager?.userID)) {
horizChannelPresenter.getHomeVedioMsg()
horizChannelPresenter.getSmallHomeVedioBaseMsg()
}
if (isToCreateReward) {
......@@ -190,6 +190,25 @@ class HorizonChannelFragment : BaseFragment(), HorizChannelView, View.OnClickLis
cdvvYilanTime?.stopRedbox()
stopDownloadTime()
}
data.blessingBigMsgBean?.let {
if (it.surplusCount > 0) {
if (rl_fragment_main_redbox.visibility == View.GONE) {
rl_fragment_main_redbox.visibility = View.VISIBLE
}
mRedBoxCoin = it.coin
mRedBoxCoinDouble = it.doubleCoin
startTimer(it.surplusSeconds.toLong())
} else {
stopRedbox()
rl_fragment_main_redbox.visibility = View.GONE
}
}
}
override fun getHomeVedioMsgFail() {
tv_fragment_main_redbox.text = "--:--"
rl_fragment_main_redbox.isClickable = false
}
override fun onClick(v: View) {
......@@ -428,20 +447,22 @@ class HorizonChannelFragment : BaseFragment(), HorizChannelView, View.OnClickLis
}
stopRedbox()
destroyTimerRedbox()
mRedBoxTimer = CountDownTimerSupport(time * 1000, 1000)
rl_fragment_main_redbox.isClickable = false
mRedBoxTimer?.setOnCountDownTimerListener(object : OnCountDownTimerListener {
override fun onTick(millisUntilFinished: Long) {
if (isAdded && !requireActivity().isFinishing) {
// stopRedbox()
if (!requireActivity().isFinishing) {
stopRedbox()
tv_fragment_main_redbox.text = TimeRender.ms2MS(millisUntilFinished.toInt())
}
}
override fun onFinish() {
if (isAdded && !requireActivity().isFinishing) {
if (!requireActivity().isFinishing) {
tv_fragment_main_redbox.text = "可拆开"
rl_fragment_main_redbox.isClickable = true
showRedbox(rl_fragment_main_redbox)
......
......@@ -110,6 +110,8 @@ class MainFragment : LazyLoadBaseFragment(), HomeView, View.OnClickListener {
homePresenter.comSaveTerminalInfo(ps)
baseApplication.initUm(context)
baseApplication.TalkingDataConfig()
homePresenter.getAdcodesInOpenApp()
// }
}
......@@ -158,7 +160,6 @@ class MainFragment : LazyLoadBaseFragment(), HomeView, View.OnClickListener {
if (data.adcode != null) {
AppConfig.user_channel_ad = data.adcode.key
}
ChannelManager.updataCodeIdForRegisterChannel(data.adcode)
// 设置视频权重
UserWeight.initAdWeight(data)
......
......@@ -158,7 +158,7 @@ class MoneyFragment : BaseFragment(), XTabLayout.OnTabSelectedListener {
}
4 -> {
if (mainFragment5 == null) {
mainFragment4 = NewsFragment()
mainFragment5 = NewsFragment()
}
addOrShowFragment(childFragmentManager, mainFragment5!!, FRAGMENT_TAG_MAIN5)
}
......
......@@ -322,7 +322,6 @@ class MyFragment : BaseFragment(),
if (data.adcode != null) {
AppConfig.user_channel_ad = data.adcode.key
}
ChannelManager.updataCodeIdForRegisterChannel(data.adcode)
// 是否上报点击广告
AppConfig.needReportClickAdEvent = data.isNeedReportClickAdEvent
......
......@@ -247,7 +247,6 @@
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/inviteLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="15dp"
......@@ -255,15 +254,14 @@
android:layout_marginBottom="10dp"
android:background="@drawable/shape_gold_card"
android:elevation="2dip"
android:padding="15dp"
android:visibility="visible">
android:padding="15dp">
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:text="邀请好友 奖励现金"
android:text="亲友团成员"
android:textColor="@color/black"
android:textSize="18sp"
app:layout_constraintBottom_toTopOf="@+id/line"
......@@ -283,30 +281,83 @@
android:id="@+id/line"
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_marginTop="10dp"
android:layout_marginTop="15dp"
android:background="@color/color_F8F8F8"
app:layout_constraintTop_toBottomOf="@id/textView" />
<TextView
android:id="@+id/tv_invited_info"
android:id="@+id/friends_sum"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:layout_marginTop="15dp"
android:gravity="center"
android:text="@string/dot"
android:textColor="@color/black"
android:textSize="20sp"
app:layout_constraintEnd_toStartOf="@id/friends_directly_sum"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/line" />
<TextView
android:id="@+id/friends_tv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="6dp"
android:text="总人数"
app:layout_constraintEnd_toEndOf="@+id/friends_sum"
app:layout_constraintStart_toStartOf="@+id/friends_sum"
app:layout_constraintTop_toBottomOf="@id/friends_sum" />
<TextView
android:id="@+id/friends_directly_sum"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:layout_marginTop="15dp"
android:gravity="center"
android:text="@string/dot"
android:textColor="@color/black"
android:textSize="20sp"
app:layout_constraintEnd_toStartOf="@id/friends_indirect_sum"
app:layout_constraintStart_toEndOf="@id/friends_sum"
app:layout_constraintTop_toBottomOf="@id/line" />
<TextView
android:id="@+id/tv_friends_directly"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="6dp"
android:drawableEnd="@mipmap/ic_question"
android:drawablePadding="6dp"
android:text="您已邀请-人"
android:text="直接亲友"
app:layout_constraintEnd_toEndOf="@+id/friends_directly_sum"
app:layout_constraintStart_toStartOf="@+id/friends_directly_sum"
app:layout_constraintTop_toBottomOf="@id/friends_directly_sum" />
<TextView
android:id="@+id/friends_indirect_sum"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:layout_marginTop="15dp"
android:gravity="center"
android:text="@string/dot"
android:textColor="@color/black"
app:drawableEndCompat="@mipmap/ic_question"
android:textSize="20sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintStart_toEndOf="@id/friends_directly_sum"
app:layout_constraintTop_toBottomOf="@id/line" />
<com.mints.goodnews.ui.widgets.ProgressLayout
android:id="@+id/progress_layout"
android:layout_width="match_parent"
<TextView
android:id="@+id/tv_friends_indirect"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:visibility="gone"
app:layout_constraintTop_toBottomOf="@id/tv_invited_info" />
android:layout_marginTop="6dp"
android:drawablePadding="6dp"
android:text="间接亲友"
app:drawableEndCompat="@mipmap/ic_question"
app:layout_constraintEnd_toEndOf="@+id/friends_indirect_sum"
app:layout_constraintStart_toStartOf="@+id/friends_indirect_sum"
app:layout_constraintTop_toBottomOf="@id/friends_indirect_sum" />
<Button
android:id="@+id/btn_invite"
......@@ -321,7 +372,7 @@
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/progress_layout" />
app:layout_constraintTop_toBottomOf="@id/tv_friends_directly" />
</androidx.constraintlayout.widget.ConstraintLayout>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment