Commit 28bb7bb7 authored by mengcuiguang's avatar mengcuiguang

开发网赚需求

parent 447910b6
...@@ -71,6 +71,7 @@ android { ...@@ -71,6 +71,7 @@ android {
buildConfigField "String", "GROMORE_FULL_CODE", GROMORE_FULL_CODE buildConfigField "String", "GROMORE_FULL_CODE", GROMORE_FULL_CODE
buildConfigField "String", "RELEASE_TALKING_DATA_KEY", RELEASE_TALKING_DATA_KEY buildConfigField "String", "RELEASE_TALKING_DATA_KEY", RELEASE_TALKING_DATA_KEY
buildConfigField "String", "WEIXIN_APP_PAY_ID", WEIXIN_APP_PAY_ID buildConfigField "String", "WEIXIN_APP_PAY_ID", WEIXIN_APP_PAY_ID
buildConfigField "String", "SM_APP_ID", SM_APP_ID
//混淆 //混淆
minifyEnabled false minifyEnabled false
...@@ -96,6 +97,7 @@ android { ...@@ -96,6 +97,7 @@ android {
buildConfigField "String", "GROMORE_FULL_CODE", GROMORE_FULL_CODE buildConfigField "String", "GROMORE_FULL_CODE", GROMORE_FULL_CODE
buildConfigField "String", "RELEASE_TALKING_DATA_KEY", RELEASE_TALKING_DATA_KEY buildConfigField "String", "RELEASE_TALKING_DATA_KEY", RELEASE_TALKING_DATA_KEY
buildConfigField "String", "WEIXIN_APP_PAY_ID", WEIXIN_APP_PAY_ID buildConfigField "String", "WEIXIN_APP_PAY_ID", WEIXIN_APP_PAY_ID
buildConfigField "String", "SM_APP_ID", SM_APP_ID
//混淆 //混淆
minifyEnabled true minifyEnabled true
...@@ -255,6 +257,9 @@ dependencies { ...@@ -255,6 +257,9 @@ dependencies {
// 腾讯播放器 // 腾讯播放器
implementation "com.tencent.liteav:LiteAVSDK_Player:11.3.0.13176" implementation "com.tencent.liteav:LiteAVSDK_Player:11.3.0.13176"
// 支付宝 SDK AAR 包所需的配置
implementation 'com.alipay.sdk:alipaysdk-android:+@aar'
testImplementation 'junit:junit:4.13.2' testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test.ext:junit:1.1.3' androidTestImplementation 'androidx.test.ext:junit:1.1.3'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0' androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
......
...@@ -8,18 +8,11 @@ ...@@ -8,18 +8,11 @@
android:name="android.permission.ACTIVITY_RECOGNITION" android:name="android.permission.ACTIVITY_RECOGNITION"
tools:node="remove" /> tools:node="remove" />
<!-- 日历 -->
<uses-permission
android:name="android.permission.WRITE_CALENDAR"
tools:node="remove" />
<uses-permission
android:name="android.permission.READ_CALENDAR"
tools:node="remove" />
<!-- 业务使用权限 --> <!-- 业务使用权限 -->
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" /> <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
<uses-permission android:name="android.permission.WRITE_CALENDAR"/>
<uses-permission android:name="android.permission.READ_CALENDAR"/>
<!-- 穿山甲 --> <!-- 穿山甲 -->
<uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" />
...@@ -138,7 +131,14 @@ ...@@ -138,7 +131,14 @@
android:name=".ui.activitys.AboutusActivity" android:name=".ui.activitys.AboutusActivity"
android:exported="false" android:exported="false"
android:screenOrientation="portrait" /> android:screenOrientation="portrait" />
<activity
android:name=".ui.activitys.AwardActivity"
android:exported="false"
android:theme="@style/TransparentTheme" />
<activity
android:name=".ui.activitys.TaskAwardActivity"
android:exported="false"
android:theme="@style/TransparentTheme" />
<activity <activity
android:name=".ui.activitys.RecommendActivity" android:name=".ui.activitys.RecommendActivity"
android:exported="false" android:exported="false"
......
package com.mints.helivideo; package com.mints.helivideo;
import android.app.ActivityManager;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.os.Build;
import android.webkit.WebView;
import androidx.localbroadcastmanager.content.LocalBroadcastManager; import androidx.localbroadcastmanager.content.LocalBroadcastManager;
import androidx.multidex.MultiDex; import androidx.multidex.MultiDex;
...@@ -11,6 +14,8 @@ import com.downloader.PRDownloader; ...@@ -11,6 +14,8 @@ import com.downloader.PRDownloader;
import com.downloader.PRDownloaderConfig; import com.downloader.PRDownloaderConfig;
import com.mints.helivideo.ad.TTAdManagerHolder; import com.mints.helivideo.ad.TTAdManagerHolder;
import com.mints.helivideo.common.Constant; import com.mints.helivideo.common.Constant;
import com.mints.helivideo.manager.MintsSign;
import com.mints.helivideo.manager.ShumeiManager;
import com.mints.helivideo.manager.TXCSDKService; import com.mints.helivideo.manager.TXCSDKService;
import com.mints.helivideo.manager.TalkingDataManager; import com.mints.helivideo.manager.TalkingDataManager;
import com.mints.helivideo.net.LoanService; import com.mints.helivideo.net.LoanService;
...@@ -54,15 +59,60 @@ public class MintsApplication extends MultiDexApplication { ...@@ -54,15 +59,60 @@ public class MintsApplication extends MultiDexApplication {
mContext = this.getApplicationContext(); mContext = this.getApplicationContext();
// 三方配置 // 三方配置
thirdConfig(); if (isMainProcess(this)) {
thirdConfig();
}
} }
@Override @Override
protected void attachBaseContext(Context base) { protected void attachBaseContext(Context base) {
super.attachBaseContext(base); super.attachBaseContext(base);
MultiDex.install(base); // 9.0之后不可多进程使用一个目录下的WebView,写在SDK初始化之前
androidPWebView();
MintsSign.INSTANCE.init(this);
}
private void androidPWebView() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
String processName = getProcessName(this);
String packageName = this.getPackageName();
if (!packageName.equals(processName)) {
try {
// 为不同进程webView设置不同目录
WebView.setDataDirectorySuffix("dds_" + processName);
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
public static boolean isMainProcess(Context context) {
String processName = getProcessName(context);
return processName != null && !processName.contains(":");
}
public static String getProcessName(Context context) {
if (context == null) return null;
try {
ActivityManager manager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
if (manager != null) {
for (ActivityManager.RunningAppProcessInfo processInfo : manager.getRunningAppProcesses()) {
if (processInfo.pid == android.os.Process.myPid()) {
return processInfo.processName;
}
}
}
} catch (Exception e) {
e.printStackTrace();
return null;
}
return null;
} }
/** /**
* 三方配置 * 三方配置
*/ */
...@@ -74,6 +124,9 @@ public class MintsApplication extends MultiDexApplication { ...@@ -74,6 +124,9 @@ public class MintsApplication extends MultiDexApplication {
// 判断应用是否在前台 // 判断应用是否在前台
ForegroundOrBackground.init(this); ForegroundOrBackground.init(this);
// 数美初始化
ShumeiManager.getInstance().initShumei();
initMiitHelper(); initMiitHelper();
TTAdManagerHolder.init(this); TTAdManagerHolder.init(this);
......
...@@ -3,13 +3,19 @@ package com.mints.helivideo.ad ...@@ -3,13 +3,19 @@ package com.mints.helivideo.ad
import android.app.Activity import android.app.Activity
import com.mints.helivideo.ad.full.FullScreenManager import com.mints.helivideo.ad.full.FullScreenManager
import com.mints.helivideo.ad.video.InMoneyVideo import com.mints.helivideo.ad.video.InMoneyVideo
import com.mints.helivideo.common.AppConfig
import com.mints.helivideo.utils.HitChanceKeeper
import com.mints.helivideo.utils.LogUtil
/** /**
* 预加载-全屏及激励视频管理类 * 预加载-全屏及激励视频管理类
*/ */
class AdManager { class AdManager {
private val TAG = AdManager::class.java.simpleName
companion object { companion object {
var adLoadType = 0 //预加载广告类型 0-激励视频 1-全屏
const val AD_NO_SHOWTIME_OUT = 50 // 广告请示成功但在规定时间内未展示 const val AD_NO_SHOWTIME_OUT = 50 // 广告请示成功但在规定时间内未展示
const val AD_REQUEST_TIME_OUT = 1 // 广告预加载时长超时 const val AD_REQUEST_TIME_OUT = 1 // 广告预加载时长超时
...@@ -20,51 +26,101 @@ class AdManager { ...@@ -20,51 +26,101 @@ class AdManager {
} }
/** /**
* 激励视频
*
* 根据服务器概率预加载广告 * 根据服务器概率预加载广告
* *
* isPreLoad:是否是预加载调用,需要躲避监听 * isPreLoad:是否是预加载调用,需要躲避监听
*/ */
fun preLoadAd(activity: Activity, isPreLoad: Boolean = false) { fun preLoadAd(activity: Activity, isPreLoad: Boolean = false) {
InMoneyVideo.getInstance().preLoadAd(activity, isPreLoad) if (HitChanceKeeper.isHitChance(AppConfig.csjAdRate)) {
adLoadType = 0
// 加载激励视频广告
this.loadRewardVideo(activity, isPreLoad)
LogUtil.d(
TAG,
"预加载激励视频的概率为:${AppConfig.csjAdRate} 当前为:激励视频"
)
} else {
adLoadType = 1
// 加载全屏广告
this.loadFullVideo(activity, isPreLoad)
LogUtil.d(
TAG,
"预加载激励视频的概率为:${AppConfig.csjAdRate} 当前为:全屏"
)
}
} }
/** /**
* 激励视频
*
* 根据预加载类型 展示广告 * 根据预加载类型 展示广告
*/ */
fun showAd( fun showAd(
activity: Activity, activity: Activity,
carrierType: String, carrierType: String,
AdStatusListener: AdStatusListener?, wifiAdStatusListener: AdStatusListener?
) {
if (adLoadType == 0) {
// 加载激励视频广告
showRewardVideo(activity, wifiAdStatusListener, carrierType)
LogUtil.d(TAG, "展示广告类型[0-激励视频 1-全屏]: 结果:${adLoadType} 当前为:激励视频")
} else {
// 加载全屏广告
showFullAd(activity, wifiAdStatusListener, carrierType)
LogUtil.d(TAG, "展示广告类型[0-激励视频 1-全屏]: 结果:${adLoadType} 当前为:全屏")
}
}
// 预加载全屏广告
private fun loadFullVideo(activity: Activity, isPreLoad: Boolean = false) {
FullScreenManager.getInstance().preLoadAd(activity, isPreLoad)
}
// 预加载激励视频广告
private fun loadRewardVideo(activity: Activity, isPreLoad: Boolean = false) {
InMoneyVideo.getInstance().preLoadAd(activity, isPreLoad)
}
// 展示全屏广告
private fun showFullAd(
activity: Activity,
wifiAdStatusListener: AdStatusListener?,
carrierType: String
) { ) {
InMoneyVideo.getInstance().showRewardAd(activity, AdStatusListener, carrierType) FullScreenManager.getInstance()
.showAd(activity, wifiAdStatusListener, carrierType)
} }
// 展示激励视频广告
private fun showRewardVideo(
activity: Activity,
wifiAdStatusListener: AdStatusListener?,
carrierType: String
) {
InMoneyVideo.getInstance()
.showRewardAd(
activity,
wifiAdStatusListener,
carrierType
)
}
/** /**
* 插全屏 * 0-激励视频 1-全屏
*
* 根据服务器概率预加载广告
*
* isPreLoad:是否是预加载调用,需要躲避监听
*/ */
fun preLoadFullAd(activity: Activity, isPreLoad: Boolean = false) { fun getAdLoadType() = adLoadType
FullScreenManager.getInstance().preLoadAd(activity, isPreLoad)
}
/** /**
* 插全屏 * 开屏页使用-预加载广告
*
* 根据预加载类型 展示广告
*/ */
fun showFullAd( fun splashPreLoadAll(activity: Activity) {
activity: Activity, this.loadRewardVideo(activity)
carrierType: String, // this.loadFullVideo(activity)
AdStatusListener: AdStatusListener?,
) {
FullScreenManager.getInstance().showAd(activity, AdStatusListener, carrierType)
} }
} }
\ No newline at end of file
...@@ -12,7 +12,9 @@ import com.bytedance.sdk.openadsdk.mediation.ad.MediationAdSlot; ...@@ -12,7 +12,9 @@ import com.bytedance.sdk.openadsdk.mediation.ad.MediationAdSlot;
import com.mints.helivideo.BuildConfig; import com.mints.helivideo.BuildConfig;
import com.mints.helivideo.ad.AdManager; import com.mints.helivideo.ad.AdManager;
import com.mints.helivideo.ad.AdStatusListener; import com.mints.helivideo.ad.AdStatusListener;
import com.mints.helivideo.common.AppConfig;
import com.mints.helivideo.common.Constant; import com.mints.helivideo.common.Constant;
import com.mints.helivideo.manager.TrackManager;
import com.mints.helivideo.utils.AppPreferencesManager; import com.mints.helivideo.utils.AppPreferencesManager;
import com.mints.helivideo.utils.LogUtil; import com.mints.helivideo.utils.LogUtil;
import com.mints.helivideo.utils.TimeRender; import com.mints.helivideo.utils.TimeRender;
...@@ -192,6 +194,12 @@ public class InMoneyVideo { ...@@ -192,6 +194,12 @@ public class InMoneyVideo {
nowAdcode = mttRewardAd.getMediationManager().getShowEcpm().getSlotId(); nowAdcode = mttRewardAd.getMediationManager().getShowEcpm().getSlotId();
nowEcpm = mttRewardAd.getMediationManager().getShowEcpm().getEcpm(); nowEcpm = mttRewardAd.getMediationManager().getShowEcpm().getEcpm();
nowAdSource = mttRewardAd.getMediationManager().getShowEcpm().getSdkName(); nowAdSource = mttRewardAd.getMediationManager().getShowEcpm().getSdkName();
HashMap<String, Object> vo = new HashMap<>();
vo.put("adcode", nowAdcode);
vo.put("ecpm", nowEcpm);
vo.put("adSource", nowAdSource);
TrackManager.getInstance().reporGromeEcpm(vo);
} }
} }
LogUtil.d(TAG, "gromore预加载 激励视频广告-->onAdShow"); LogUtil.d(TAG, "gromore预加载 激励视频广告-->onAdShow");
...@@ -211,17 +219,11 @@ public class InMoneyVideo { ...@@ -211,17 +219,11 @@ public class InMoneyVideo {
public void onAdClose() { public void onAdClose() {
LogUtil.d(TAG, "gromore预加载 激励视频广告-->onAdClose"); LogUtil.d(TAG, "gromore预加载 激励视频广告-->onAdClose");
int adCount = AppPreferencesManager.INSTANCE.get().getInt(Constant.VEDIO_AD_COUNT, 0);
if (adCount < 50) {
AppPreferencesManager.INSTANCE.get().put(Constant.VEDIO_AD_COUNT, adCount+1);
}
HashMap<String, Object> vo = new HashMap<>(); HashMap<String, Object> vo = new HashMap<>();
vo.put("adcode", nowAdcode);
vo.put("ecpm", nowEcpm);
vo.put("adSource", nowAdSource);
vo.put("carrierType", carrierType); vo.put("carrierType", carrierType);
vo.put("ecpmId", AppConfig.gromoreId);
vo.put("adid", BuildConfig.GROMORE_VIDEO_CODE); vo.put("adid", BuildConfig.GROMORE_VIDEO_CODE);
TrackManager.getInstance().reportAddCoinMsg(vo);
if (adStatusListener != null) { if (adStatusListener != null) {
adStatusListener.adClose(vo); adStatusListener.adClose(vo);
} }
......
...@@ -12,7 +12,9 @@ import com.bytedance.sdk.openadsdk.mediation.ad.MediationAdSlot; ...@@ -12,7 +12,9 @@ import com.bytedance.sdk.openadsdk.mediation.ad.MediationAdSlot;
import com.mints.helivideo.BuildConfig; import com.mints.helivideo.BuildConfig;
import com.mints.helivideo.ad.AdManager; import com.mints.helivideo.ad.AdManager;
import com.mints.helivideo.ad.AdStatusListener; import com.mints.helivideo.ad.AdStatusListener;
import com.mints.helivideo.common.AppConfig;
import com.mints.helivideo.common.Constant; import com.mints.helivideo.common.Constant;
import com.mints.helivideo.manager.TrackManager;
import com.mints.helivideo.utils.AppPreferencesManager; import com.mints.helivideo.utils.AppPreferencesManager;
import com.mints.helivideo.utils.LogUtil; import com.mints.helivideo.utils.LogUtil;
...@@ -131,6 +133,12 @@ public class InMoneyVideoNoPre { ...@@ -131,6 +133,12 @@ public class InMoneyVideoNoPre {
nowAdcode = mttRewardAd.getMediationManager().getShowEcpm().getSlotId(); nowAdcode = mttRewardAd.getMediationManager().getShowEcpm().getSlotId();
nowEcpm = mttRewardAd.getMediationManager().getShowEcpm().getEcpm(); nowEcpm = mttRewardAd.getMediationManager().getShowEcpm().getEcpm();
nowAdSource = mttRewardAd.getMediationManager().getShowEcpm().getSdkName(); nowAdSource = mttRewardAd.getMediationManager().getShowEcpm().getSdkName();
HashMap<String, Object> vo = new HashMap<>();
vo.put("adcode", nowAdcode);
vo.put("ecpm", nowEcpm);
vo.put("adSource", nowAdSource);
TrackManager.getInstance().reporGromeEcpm(vo);
} }
} }
LogUtil.d(TAG, "gromore实时加载 激励视频广告-->onAdShow"); LogUtil.d(TAG, "gromore实时加载 激励视频广告-->onAdShow");
...@@ -150,17 +158,12 @@ public class InMoneyVideoNoPre { ...@@ -150,17 +158,12 @@ public class InMoneyVideoNoPre {
public void onAdClose() { public void onAdClose() {
LogUtil.d(TAG, "gromore实时加载 激励视频广告-->onAdClose nowAdcode=" + nowAdcode); LogUtil.d(TAG, "gromore实时加载 激励视频广告-->onAdClose nowAdcode=" + nowAdcode);
int adCount = AppPreferencesManager.INSTANCE.get().getInt(Constant.VEDIO_AD_COUNT, 0);
if (adCount < 50) {
AppPreferencesManager.INSTANCE.get().put(Constant.VEDIO_AD_COUNT, adCount+1);
}
HashMap<String, Object> vo = new HashMap<>(); HashMap<String, Object> vo = new HashMap<>();
vo.put("adcode", nowAdcode);
vo.put("ecpm", nowEcpm);
vo.put("adSource", nowAdSource);
vo.put("carrierType", carrierType); vo.put("carrierType", carrierType);
vo.put("ecpmId", AppConfig.gromoreId);
vo.put("adid", BuildConfig.GROMORE_VIDEO_CODE); vo.put("adid", BuildConfig.GROMORE_VIDEO_CODE);
TrackManager.getInstance().reportAddCoinMsg(vo);
if (adStatusListener != null) { if (adStatusListener != null) {
adStatusListener.adClose(vo); adStatusListener.adClose(vo);
} }
......
...@@ -7,19 +7,10 @@ package com.mints.helivideo.common; ...@@ -7,19 +7,10 @@ package com.mints.helivideo.common;
*/ */
public class AppConfig { public class AppConfig {
/**
* 是否正在执行更新
*/
public static boolean app_updateing = false; public static boolean app_updateing = false;
/**
* app应用首页 0-主页 1-position 2-我
*/
public static int fragmentClickFlag = 0; public static int fragmentClickFlag = 0;
public static String gromoreId = "";
// 退出登录首页刷新 public static int awardRedpkg = 0;
public static boolean exitLoginMainRefresh = false; public static int awardYuanbao = 0;
public static int csjAdRate = 100;
// 进入过支付界面
public static boolean enterVipAct = false;
} }
package com.mints.helivideo.manager
import android.annotation.SuppressLint
import android.app.Activity
import android.os.Handler
import android.os.Message
import android.text.TextUtils
import com.alipay.sdk.app.AuthTask
import com.mints.helivideo.MintsApplication
import com.mints.helivideo.mvp.model.AuthResult
import com.mints.helivideo.mvp.model.BaseResponse
import com.mints.library.net.neterror.BaseSubscriber
import com.mints.library.net.neterror.Throwable
import java.lang.ref.WeakReference
/**
* 支付宝授权
*/
object AlipayAuthManager {
private const val SDK_AUTH_FLAG = 2
@SuppressLint("HandlerLeak")
private val mHandler: Handler = object : Handler() {
override fun handleMessage(msg: Message) {
when (msg.what) {
SDK_AUTH_FLAG -> {
val authResult = AuthResult(msg.obj as Map<String, String>, true)
val resultStatus: String = authResult.getResultStatus()
// 判断resultStatus 为“9000”且result_code
// 为“200”则代表授权成功,具体状态码代表含义可参考授权接口文档
if (TextUtils.equals(
resultStatus,
"9000"
) && TextUtils.equals(authResult.getResultCode(), "200")
) {
// 获取alipay_open_id,调支付时作为参数extern_token 的value
// 传入,则支付账户为该授权账户
authListener?.authSuccess()
} else {
// 其他状态值则为授权失败
authListener?.authFail(resultStatus)
}
}
else -> {}
}
}
}
private fun getAuthData() {
val baseApplication = MintsApplication.getContext() as MintsApplication
AppHttpManager.getInstance(baseApplication)
.call(baseApplication.loanService.homeV1Types,
object : BaseSubscriber<BaseResponse<Any>>() {
override fun onError(e: Throwable) {
}
override fun onNext(t: BaseResponse<Any>) {
if (t.status == 200) {
} else {
}
}
})
}
/**
* 支付宝账户授权业务示例
*/
fun authV2(authInfo: String, activity: Activity, listener: AuthListener?) {
authListener = listener
val weakReference = WeakReference(activity)
val authRunnable = Runnable { // 构造AuthTask 对象
val authTask = AuthTask(weakReference.get())
// 调用授权接口,获取授权结果
val result = authTask.authV2(authInfo, true)
val msg = Message()
msg.what = SDK_AUTH_FLAG
msg.obj = result
mHandler.sendMessage(msg)
}
// 必须异步调用
val authThread = Thread(authRunnable)
authThread.start()
}
private var authListener: AuthListener? = null
interface AuthListener {
fun authSuccess()
fun authFail(resultStatus: String)
}
}
\ No newline at end of file
...@@ -115,9 +115,7 @@ object LocalVedioManager { ...@@ -115,9 +115,7 @@ object LocalVedioManager {
requestDrama(activity, data) requestDrama(activity, data)
} }
if (!UserManager.getInstance().vipFlag) {
ExpressManager.instance.preLoadAd() ExpressManager.instance.preLoadAd()
}
} }
// 请求穿山甲数据 // 请求穿山甲数据
......
package com.mints.helivideo.manager
import android.app.Application
import com.goodc.c.CoolTools
/**
* 加密
*/
object MintsSign {
fun init(app: Application) {
CoolTools.method03(app)
}
fun check(channel: String, time: Long, sign: String) = CoolTools.method04(channel, time.toString(), sign)
}
\ No newline at end of file
package com.mints.helivideo.manager;
import android.content.Context;
import android.text.TextUtils;
import com.ishumei.smantifraud.SmAntiFraud;
import com.mints.helivideo.BuildConfig;
import com.mints.helivideo.MintsApplication;
/**
* 描述:数美反欺诈
* 作者:孟崔广
* 时间:2023/9/10 10:44
*/
public class ShumeiManager {
/**
* 组织标识,邮件中organization项。
*/
public static final String ORGANIZATION = "46Y91K7dU5utpc48P6JQ";
/**
* 应用标识,登录数美后台应用管理查看。
*/
public static final String APP_ID = BuildConfig.SM_APP_ID;
/**
* 加密 KEY。
*/
public static final String PUBLIC_KEY = "MIIDLzCCAhegAwIBAgIBMDANBgkqhkiG9w0BAQUFADAyMQswCQYDVQQGEwJDTjELMAkGA1UECwwCU00xFjAUBgNVBAMMDWUuaXNodW1laS5jb20wHhcNMjAwMTA2MDk1ODM4WhcNNDAwMTAxMDk1ODM5WjAyMQswCQYDVQQGEwJDTjELMAkGA1UECwwCU00xFjAUBgNVBAMMDWUuaXNodW1laS5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCAbaB3PszWA4FAqVfzZWsPchWK3rZPzb0XMb1O/7U5LkL25eY337rKY2UFz2NG2Lrimn3mnXZyFCFI3azSeR7Qh4IXJWlVMIQYQH49bKFPKMlJcdLB/J7xEDbvmAo3o7YEv4Z+VEplaH/QAtPjexLbfKP9VxLFtHDpqImxUprHat9OdmSzjaYZ7uB4aylGcBuDIRmqWri4t3r1li+EvHwx2OsyTXW12f9PwfuucWqTZ6ndxJ9xkUMKfFYmUhnuzudKzaly6C/14CZpc0GmS6QmXuy6uXxnjkmi1RUXX4q94BMfq/EyAp7OzEGh4D5kBljGYeadYoOKFSYkDvy/8qjbAgMBAAGjUDBOMB0GA1UdDgQWBBQEvkAQhyEi8TBS2TpBN0wbDTfVsTAfBgNVHSMEGDAWgBQEvkAQhyEi8TBS2TpBN0wbDTfVsTAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBBQUAA4IBAQBovJ9Eu3hpfBCkpuTsY8GZ5URKwbYTL8bRNa6SFDoRxsCr7f22YZxJ8/nRrRR+QT3dW7zmJyWyzjwlovRWrVPL/uNGdAx72X+0dE65n86CHdXxJgHlEyRej77p7xmTRsncxqUAnKi5w8O/jKJRhgMbHyo+xzA4OW0tk78sKxlEJut18BbCCmPxocQBSHlyeA8Yp+knakHWlbGp9MCuuj53djvi7Tb4b7brGGepJiJUxEbVNTJM4PSdJno9obXohOKEU3yCLTDebR1jWgp7VOTGl1bi4gyBBNGUCJ1H0xh8z2MMa+FqLqMB/wce+sRWiRYLRqw/VUI4q4JwuWrrWYdL";
/**
* 加密 KEY,邮件中 Android ainfo key 项。
*/
public static final String AINFO_KEY = "tbAlHLEBfOeCTrYtRYwmtEDCFLskFXQoLZSfBSPXymdSldhFwASaQJRMNHuPnTVV";
private static ShumeiManager _inst;
private Context context;
public static ShumeiManager getInstance() {
if (_inst != null) {
return _inst;
} else {
_inst = new ShumeiManager();
return _inst;
}
}
private ShumeiManager() {
init();
}
private void init() {
context = MintsApplication.getContext();
}
/**
* 初始化数美SDK
*/
public void initShumei() {
try {
//1.通用配置项
SmAntiFraud.SmOption option = new SmAntiFraud.SmOption();
option.setOrganization(ORGANIZATION); //必填,组织标识,邮件中organization项
option.setAppId(APP_ID); //必填,应用标识,登录数美后台应用管理查看
option.setPublicKey(PUBLIC_KEY); //必填,加密 KEY,邮件中 android_public_key 附件内容
option.setAinfoKey(AINFO_KEY); //必填,加密 KEY,邮件中 Android ainfo key 项
//2.连接海外机房特殊配置项,仅供设备数据上报海外机房客户使用
// option.setArea(SmAntiFraud.AREA_XJP); //连接新加坡机房客户使用此选项
// option.setArea(SmAntiFraud.AREA_FJNY); //连接美国机房客户使用此选项
//3.SDK 初始化
SmAntiFraud.create(context, option);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 获取数美id
*/
public String getShumeiDeviceId() {
String id = "";
try {
id = SmAntiFraud.getDeviceId();
} catch (Exception e) {
e.printStackTrace();
id = "";
}
if (TextUtils.isEmpty(id)) {
initShumei();
}
return id;
}
}
...@@ -74,4 +74,18 @@ public class TrackManager { ...@@ -74,4 +74,18 @@ public class TrackManager {
trackPresenter.commitCsjShotInfo(json); trackPresenter.commitCsjShotInfo(json);
} }
} }
public void reporGromeEcpm(HashMap<String, Object> vo) {
if (trackPresenter != null) {
trackPresenter.reporGromeEcpm(vo);
}
}
public void reportAddCoinMsg(HashMap<String, Object> vo) {
if (trackPresenter != null) {
trackPresenter.reportAddCoinMsg(vo);
}
}
} }
...@@ -11,7 +11,7 @@ import net.grandcentrix.tray.AppPreferences; ...@@ -11,7 +11,7 @@ import net.grandcentrix.tray.AppPreferences;
/** /**
* 描述:管理用户信息 * 描述:管理用户信息
* 作者:孟崔广 * 作者:孟崔广
* 时间:2022/12/22 13:54 * 时间:2023/8/22 13:54
*/ */
public class UserManager { public class UserManager {
...@@ -46,18 +46,10 @@ public class UserManager { ...@@ -46,18 +46,10 @@ public class UserManager {
* 头像 * 头像
*/ */
private static final String HEAD = "head"; private static final String HEAD = "head";
/**
* vip是否有效
*/
private static final String VIP_FLAG = "vipFlag";
/**
* vip是否永久
*/
private static final String VIP_FOREVER = "VIP_FOREVER";
private static final String VIP_DATE = "VIP_DATE";
private static final String CODE_ID = "codeId"; private static final String CODE_ID = "codeId";
// 匹配用户 = true private static final String YUANBAO = "yuanbao";
private static final String NEW_FLAG = "new_flag"; private static final String REDPKG = "redPkg";
private static final String ALIPAYSET = "alipaySet";
public static UserManager getInstance() { public static UserManager getInstance() {
if (_inst != null) { if (_inst != null) {
...@@ -93,29 +85,18 @@ public class UserManager { ...@@ -93,29 +85,18 @@ public class UserManager {
if (user != null) { if (user != null) {
String uid = String.valueOf(user.getPk_id()); String uid = String.valueOf(user.getPk_id());
String mobile = user.getMobile(); // String mobile = user.getMobile();
String openid = user.getOpenid(); // String openid = user.getOpenid();
if (!TextUtils.isEmpty(mobile) || !TextUtils.isEmpty(openid)) { // if (!TextUtils.isEmpty(mobile) || !TextUtils.isEmpty(openid)) {
ps.put(IS_TEMP_USER, uid); // ps.put(IS_TEMP_USER, uid);
} else { // } else {
ps.remove(IS_TEMP_USER); // ps.remove(IS_TEMP_USER);
} // }
if (user.getExpireTime() > 0) {
ps.put(VIP_FLAG, true);
} else {
ps.put(VIP_FLAG, false);
}
ps.put(VIP_FOREVER, user.isForever());
ps.put(REAL_NAME, user.getNickName());
ps.put(HEAD, user.getHead());
ps.put(USER_ID, uid); ps.put(USER_ID, uid);
ps.put(MOBILE, user.getMobile()); ps.put(REDPKG, user.getCoin());
ps.put(VIP_DATE, user.getExpireTime()); ps.put(YUANBAO, user.getDiamonds());
ps.put(WX_OPENID, openid); ps.put(ALIPAYSET, user.isAlipaySet());
ps.put(CODE_ID, user.getIdcode()); ps.put(CODE_ID, user.getIdcode());
ps.put(NEW_FLAG, user.getActiviteFlag() == 1);
} }
} }
...@@ -137,10 +118,33 @@ public class UserManager { ...@@ -137,10 +118,33 @@ public class UserManager {
return ps.getString(REAL_NAME, ""); return ps.getString(REAL_NAME, "");
} }
public long getVipDate() { public int getYuanbao() {
return ps.getLong(VIP_DATE, 0); if (ps == null) {
return 0;
}
return ps.getInt(YUANBAO, 0);
}
public void setYuanbao(int value) {
if (ps != null) {
ps.put(YUANBAO, value);
}
}
public void setRedpkg(int value) {
if (ps != null) {
ps.put(REDPKG, value);
}
}
public int getRedpkg() {
if (ps == null) {
return 0;
}
return ps.getInt(REDPKG, 0);
} }
/** /**
* 判断用户是否已登录 * 判断用户是否已登录
* *
...@@ -150,7 +154,7 @@ public class UserManager { ...@@ -150,7 +154,7 @@ public class UserManager {
if (ps == null) { if (ps == null) {
return false; return false;
} }
// return !TextUtils.isEmpty(ps.getString(TOKEN_ID)); // return !TextUtils.isEmpty(ps.getString(TOKEN_ID,""));
return !TextUtils.isEmpty(ps.getString(IS_TEMP_USER, "")); return !TextUtils.isEmpty(ps.getString(IS_TEMP_USER, ""));
} }
...@@ -164,19 +168,13 @@ public class UserManager { ...@@ -164,19 +168,13 @@ public class UserManager {
return ps.getString(USER_ID, ""); return ps.getString(USER_ID, "");
} }
public boolean getVipFlag() { public boolean getAlipaySet() {
if (ps == null) { if (ps == null) {
return false; return false;
} }
return ps.getBoolean(VIP_FLAG, false); return ps.getBoolean(ALIPAYSET, false);
} }
public boolean getNewFlag() {
if (ps == null) {
return false;
}
return ps.getBoolean(NEW_FLAG, false);
}
/** /**
* 获取用户登陆状态 * 获取用户登陆状态
...@@ -209,39 +207,33 @@ public class UserManager { ...@@ -209,39 +207,33 @@ public class UserManager {
return ps.getString(CODE_ID, ""); return ps.getString(CODE_ID, "");
} }
public boolean getVipForever() {
if (ps == null) {
return false;
}
return ps.getBoolean(VIP_FOREVER, false);
}
public void setVipFlag(boolean vipFlag) {
if (ps == null) {
return;
}
ps.put(VIP_FLAG, vipFlag);
}
public void userLogout() { public void userLogout() {
if (ps != null) { if (ps != null) {
ps.remove(USER_ID); ps.remove(USER_ID);
ps.remove(MOBILE);
ps.remove(TOKEN_ID); ps.remove(TOKEN_ID);
ps.remove(REAL_NAME);
ps.remove(HEAD);
ps.remove(IS_TEMP_USER);
ps.remove(VIP_FLAG);
ps.remove(VIP_FOREVER);
ps.remove(WX_OPENID);
ps.remove(CODE_ID); ps.remove(CODE_ID);
ps.remove(VIP_DATE); ps.remove(YUANBAO);
ps.remove(NEW_FLAG); ps.remove(REDPKG);
ps.remove(ALIPAYSET);
} }
_inst = null; _inst = null;
} }
public boolean getVipFlag() {
if (ps == null) {
return false;
}
return ps.getBoolean("", false);
}
public boolean getNewFlag() {
if (ps == null) {
return false;
}
return ps.getBoolean("", false);
}
} }
package com.mints.helivideo.mvp.model; import android.text.TextUtils; import java.io.Serializable;import java.util.Map; public class AuthResult implements Serializable { private String resultStatus; private String result; private String memo; private String resultCode; private String authCode; private String alipayOpenId; public AuthResult(Map<String, String> rawResult, boolean removeBrackets) { if (rawResult == null) { return; } for (String key : rawResult.keySet()) { if (TextUtils.equals(key, "resultStatus")) { resultStatus = rawResult.get(key); } else if (TextUtils.equals(key, "result")) { result = rawResult.get(key); } else if (TextUtils.equals(key, "memo")) { memo = rawResult.get(key); } } String[] resultValue = result.split("&"); for (String value : resultValue) { if (value.startsWith("alipay_open_id")) { alipayOpenId = removeBrackets(getValue("alipay_open_id=", value), removeBrackets); continue; } if (value.startsWith("auth_code")) { authCode = removeBrackets(getValue("auth_code=", value), removeBrackets); continue; } if (value.startsWith("result_code")) { resultCode = removeBrackets(getValue("result_code=", value), removeBrackets); continue; } } } private String removeBrackets(String str, boolean remove) { if (remove) { if (!TextUtils.isEmpty(str)) { if (str.startsWith("\"")) { str = str.replaceFirst("\"", ""); } if (str.endsWith("\"")) { str = str.substring(0, str.length() - 1); } } } return str; } @Override public String toString() { return "authCode={" + authCode + "}; resultStatus={" + resultStatus + "}; memo={" + memo + "}; result={" + result + "}"; } private String getValue(String header, String data) { return data.substring(header.length(), data.length()); } /** * @return the resultStatus */ public String getResultStatus() { return resultStatus; } /** * @return the memo */ public String getMemo() { return memo; } /** * @return the result */ public String getResult() { return result; } /** * @return the resultCode */ public String getResultCode() { return resultCode; } /** * @return the authCode */ public String getAuthCode() { return authCode; } /** * @return the alipayOpenId */ public String getAlipayOpenId() { return alipayOpenId; }}
\ No newline at end of file
package com.mints.helivideo.mvp.model;
import java.io.Serializable;
public class CoinMsgBean implements Serializable {
private int highCoin;//高额金币
private int highDi;//高额提现券
private int gromoreCoin;
private int gromoreDi;// 提现券
private int coin;
private int seconds;//高额秒数
private boolean showHigh;//高额标记
private boolean riskinfoRate;
private String cashoutText;
public String getCashoutText() {
return cashoutText;
}
public int getSeconds() {
return seconds;
}
public void setHighCoin(int highCoin) {
this.highCoin = highCoin;
}
public int getHighCoin() {
return highCoin;
}
public int getHighDi() {
return highDi;
}
public int getGromoreDi() {
return gromoreDi;
}
public int getGromoreCoin() {
return gromoreCoin;
}
public int getCoin() {
return coin;
}
public boolean isShowHigh() {
return showHigh;
}
public boolean isRiskinfoRate() {
return riskinfoRate;
}
}
...@@ -5,8 +5,7 @@ import java.io.Serializable; ...@@ -5,8 +5,7 @@ import java.io.Serializable;
/** /**
* 描述:用户信息 * 描述:用户信息
* 作者:孟崔广 * 作者:孟崔广
* 时间:2019/10/29 18:42 * 时间:2023/8/29 18:42
* 邮箱:mengcga@163.com
*/ */
public class UserBean implements Serializable { public class UserBean implements Serializable {
...@@ -15,12 +14,14 @@ public class UserBean implements Serializable { ...@@ -15,12 +14,14 @@ public class UserBean implements Serializable {
private String mobile; private String mobile;
private String idcode; private String idcode;
private String head; private String head;
private int activiteFlag=0;// 1-匹配用户
private String openid; private String openid;
private boolean isForever;//true-永久会员
private long expireTime;// vip到期时间 0-非vip
private long pk_id;// 用户id private long pk_id;// 用户id
private long createTime;// 用户id
private int diamonds;
private int coin;
private int rewardFirst;//是否弹出过领取奖励的框,0 没有, 1弹过了
private int rewardCoin;//领取奖励的金币
private boolean alipaySet;//支付宝授权状态
public String getToken() { public String getToken() {
return token; return token;
...@@ -46,13 +47,6 @@ public class UserBean implements Serializable { ...@@ -46,13 +47,6 @@ public class UserBean implements Serializable {
this.mobile = mobile; this.mobile = mobile;
} }
public long getExpireTime() {
return expireTime;
}
public void setExpireTime(long expireTime) {
this.expireTime = expireTime;
}
public long getPk_id() { public long getPk_id() {
return pk_id; return pk_id;
...@@ -62,13 +56,6 @@ public class UserBean implements Serializable { ...@@ -62,13 +56,6 @@ public class UserBean implements Serializable {
this.pk_id = pk_id; this.pk_id = pk_id;
} }
public boolean isForever() {
return isForever;
}
public void setForever(boolean forever) {
isForever = forever;
}
public String getIdcode() { public String getIdcode() {
return idcode; return idcode;
...@@ -86,15 +73,51 @@ public class UserBean implements Serializable { ...@@ -86,15 +73,51 @@ public class UserBean implements Serializable {
this.head = head; this.head = head;
} }
public long getCreateTime() { public void setToken(String token) {
return createTime; this.token = token;
}
public void setOpenid(String openid) {
this.openid = openid;
}
public int getDiamonds() {
return diamonds;
}
public void setDiamonds(int diamonds) {
this.diamonds = diamonds;
}
public int getCoin() {
return coin;
}
public void setCoin(int coin) {
this.coin = coin;
}
public int getRewardFirst() {
return rewardFirst;
}
public void setRewardFirst(int rewardFirst) {
this.rewardFirst = rewardFirst;
}
public int getRewardCoin() {
return rewardCoin;
}
public void setRewardCoin(int rewardCoin) {
this.rewardCoin = rewardCoin;
} }
public void setCreateTime(long createTime) { public boolean isAlipaySet() {
this.createTime = createTime; return alipaySet;
} }
public int getActiviteFlag() { public void setAlipaySet(boolean alipaySet) {
return activiteFlag; this.alipaySet = alipaySet;
} }
} }
package com.mints.helivideo.mvp.presenters;
import com.mints.helivideo.common.AppConfig;
import com.mints.helivideo.manager.AppHttpManager;
import com.mints.helivideo.mvp.model.BaseResponse;
import com.mints.helivideo.mvp.model.CoinMsgBean;
import com.mints.helivideo.mvp.views.AwardView;
import com.mints.library.net.neterror.BaseSubscriber;
import com.mints.library.net.neterror.Throwable;
import java.util.HashMap;
public class AwardPresenter extends BasePresenter<AwardView> {
public void getCoinMsg() {
if (!isLinkView()) {
view.showLoading("加载中...");
}
HashMap<String, Object> vo = new HashMap<>();
vo.put("ecpmId", AppConfig.gromoreId);
AppHttpManager.getInstance(loanApplication)
.call(loanService.getCoinMsg(vo),
new BaseSubscriber<BaseResponse<CoinMsgBean>>() {
@Override
public void onCompleted() {
if (isLinkView()) return;
view.hideLoading();
}
@Override
public void onError(Throwable e) {
if (isLinkView()) return;
view.hideLoading();
view.showToast(e.getMessage());
}
@Override
public void onNext(BaseResponse<CoinMsgBean> baseResponse) {
if (isLinkView()) return;
int code = baseResponse.getStatus();
String message = baseResponse.getMessage();
switch (code) {
case 200://成功
CoinMsgBean data = baseResponse.getData();
if (data != null) {
view.getUserTaskMsgSuc(data);
}
break;
default:
view.showToast(message);
break;
}
}
});
}
}
package com.mints.helivideo.mvp.presenters package com.mints.helivideo.mvp.presenters
import com.mints.helivideo.MintsApplication import com.mints.helivideo.MintsApplication
import com.mints.helivideo.common.Constant
import com.mints.helivideo.common.DeviceInfo import com.mints.helivideo.common.DeviceInfo
import com.mints.helivideo.manager.AppHttpManager import com.mints.helivideo.manager.AppHttpManager
import com.mints.helivideo.manager.ShumeiManager
import com.mints.helivideo.manager.UserManager import com.mints.helivideo.manager.UserManager
import com.mints.helivideo.mvp.model.* import com.mints.helivideo.mvp.model.BannerList
import com.mints.helivideo.mvp.model.BaseResponse
import com.mints.helivideo.mvp.model.HotStyleTypesList
import com.mints.helivideo.mvp.model.UserBean
import com.mints.helivideo.mvp.views.HomeView import com.mints.helivideo.mvp.views.HomeView
import com.mints.helivideo.utils.AppPreferencesManager
import com.mints.helivideo.utils.DeviceUuidFactory import com.mints.helivideo.utils.DeviceUuidFactory
import com.mints.library.net.neterror.BaseSubscriber import com.mints.library.net.neterror.BaseSubscriber
import com.mints.library.net.neterror.Throwable import com.mints.library.net.neterror.Throwable
import java.util.HashMap
class HomePresenter : BasePresenter<HomeView>() { class HomePresenter : BasePresenter<HomeView>() {
fun getMyInfo() {
AppHttpManager.getInstance(loanApplication)
.call(loanService.getMyInfo(),
object : BaseSubscriber<BaseResponse<UserBean>>() {
override fun onCompleted() {}
override fun onError(e: Throwable) {}
override fun onNext(baseResponse: BaseResponse<UserBean>) {
when (baseResponse.status) {
200 -> {
UserManager.getInstance().saveUserInfo(baseResponse.data)
view.getUserSuc(baseResponse.data)
}
}
}
})
}
fun getHomeV1Types() { fun getHomeV1Types() {
AppHttpManager.getInstance(loanApplication) AppHttpManager.getInstance(loanApplication)
.call(loanService.homeV1Types, .call(loanService.homeV1Types,
...@@ -112,43 +130,8 @@ class HomePresenter : BasePresenter<HomeView>() { ...@@ -112,43 +130,8 @@ class HomePresenter : BasePresenter<HomeView>() {
fun userLogin() { fun userLogin() {
val vo = HashMap<String, Any>() val vo = HashMap<String, Any>()
vo["device"] = DeviceUuidFactory().deviceUuid.toString() vo["device"] = DeviceUuidFactory().deviceUuid.toString()
AppHttpManager.getInstance(loanApplication) vo["shumeiId"] = ShumeiManager.getInstance().shumeiDeviceId
.call(loanService.visitorlogin(vo),
object : BaseSubscriber<BaseResponse<UserBean>>() {
override fun onCompleted() {
if (isLinkView) return
}
override fun onError(e: Throwable) {
if (isLinkView) return
}
override fun onNext(baseResponse: BaseResponse<UserBean>) {
if (isLinkView) return
view.hideLoading()
val code = baseResponse.getStatus()
val message = baseResponse.getMessage()
val data: UserBean? = baseResponse.getData()
when (code) {
200 -> if (data != null) {
UserManager.getInstance().saveUserInfo(data)
saveTerminalInfo()
}
else -> {
view.showToast(message)
}
}
}
})
}
/**
* 提交设备信息
*
* @param context
*/
fun saveTerminalInfo() {
val vo = HashMap<String, Any>()
val deviceInfo: DeviceInfo = DeviceInfo.instance val deviceInfo: DeviceInfo = DeviceInfo.instance
val macAddress: String = deviceInfo.getMacAddress() val macAddress: String = deviceInfo.getMacAddress()
val mac = macAddress.replace(":", "") val mac = macAddress.replace(":", "")
...@@ -163,8 +146,8 @@ class HomePresenter : BasePresenter<HomeView>() { ...@@ -163,8 +146,8 @@ class HomePresenter : BasePresenter<HomeView>() {
vo["osversion"] = deviceInfo.oSVersion vo["osversion"] = deviceInfo.oSVersion
vo["appversion"] = deviceInfo.versionName vo["appversion"] = deviceInfo.versionName
AppHttpManager.getInstance(loanApplication) AppHttpManager.getInstance(loanApplication)
.call(loanService.saveTerminalInfo(vo), .call(loanService.visitorlogin(vo),
object : BaseSubscriber<BaseResponse<Any>>() { object : BaseSubscriber<BaseResponse<UserBean>>() {
override fun onCompleted() { override fun onCompleted() {
if (isLinkView) return if (isLinkView) return
} }
...@@ -173,14 +156,23 @@ class HomePresenter : BasePresenter<HomeView>() { ...@@ -173,14 +156,23 @@ class HomePresenter : BasePresenter<HomeView>() {
if (isLinkView) return if (isLinkView) return
} }
override fun onNext(baseResponse: BaseResponse<Any>) { override fun onNext(baseResponse: BaseResponse<UserBean>) {
if (isLinkView) return if (isLinkView) return
val code = baseResponse.status view.hideLoading()
val code = baseResponse.getStatus()
val message = baseResponse.getMessage()
val data: UserBean? = baseResponse.getData()
when (code) { when (code) {
200 -> { 200 -> if (data != null) {
UserManager.getInstance().saveUserInfo(data)
topTabs() topTabs()
orders() orders()
getHomeV1Types() getHomeV1Types()
getMyInfo()
}
else -> {
view.showToast(message)
} }
} }
} }
......
...@@ -89,7 +89,6 @@ class LoginPresenter : BasePresenter<LoginView>() { ...@@ -89,7 +89,6 @@ class LoginPresenter : BasePresenter<LoginView>() {
when (code) { when (code) {
200 -> if (data != null) { 200 -> if (data != null) {
UserManager.getInstance().saveUserInfo(data) UserManager.getInstance().saveUserInfo(data)
saveTerminalInfo()
view.loginSuc() view.loginSuc()
} }
...@@ -132,7 +131,6 @@ class LoginPresenter : BasePresenter<LoginView>() { ...@@ -132,7 +131,6 @@ class LoginPresenter : BasePresenter<LoginView>() {
when (code) { when (code) {
200 -> if (data != null) { 200 -> if (data != null) {
UserManager.getInstance().saveUserInfo(data) UserManager.getInstance().saveUserInfo(data)
saveTerminalInfo()
view.loginSuc() view.loginSuc()
} }
...@@ -142,42 +140,5 @@ class LoginPresenter : BasePresenter<LoginView>() { ...@@ -142,42 +140,5 @@ class LoginPresenter : BasePresenter<LoginView>() {
}) })
} }
/**
* 提交设备信息
*
* @param context
*/
fun saveTerminalInfo() {
val deviceInfo: DeviceInfo = DeviceInfo.instance
val vo = HashMap<String, Any>()
val macAddress: String = deviceInfo.getMacAddress()
val mac = macAddress.replace(":", "")
vo["mac"] = mac
vo["mac1"] = macAddress
vo["androidid"] = deviceInfo.getAndroidId(null)
vo["imei"] = deviceInfo.iMEI
vo["oaid"] = MintsApplication.OAID
vo["os"] = if (deviceInfo.isHarmonyOS()) "android-HarmonyOS" else "android"
vo["model"] = deviceInfo.newModel
vo["uuid"] = DeviceUuidFactory().deviceUuid
vo["osversion"] = deviceInfo.oSVersion
vo["appversion"] = deviceInfo.versionName
AppHttpManager.getInstance(loanApplication)
.call(loanService.saveTerminalInfo(vo),
object : BaseSubscriber<BaseResponse<Any>>() {
override fun onCompleted() {
if (isLinkView) return
}
override fun onError(e: Throwable) {
if (isLinkView) return
}
override fun onNext(baseResponse: BaseResponse<Any>) {
if (isLinkView) return
}
})
}
} }
\ No newline at end of file
...@@ -3,6 +3,7 @@ package com.mints.helivideo.mvp.presenters ...@@ -3,6 +3,7 @@ package com.mints.helivideo.mvp.presenters
import com.mints.helivideo.MintsApplication import com.mints.helivideo.MintsApplication
import com.mints.helivideo.common.DeviceInfo import com.mints.helivideo.common.DeviceInfo
import com.mints.helivideo.manager.AppHttpManager import com.mints.helivideo.manager.AppHttpManager
import com.mints.helivideo.manager.ShumeiManager
import com.mints.helivideo.manager.UserManager import com.mints.helivideo.manager.UserManager
import com.mints.helivideo.mvp.model.* import com.mints.helivideo.mvp.model.*
import com.mints.helivideo.mvp.views.MyView import com.mints.helivideo.mvp.views.MyView
...@@ -18,41 +19,8 @@ class MyPresenter : BasePresenter<MyView>() { ...@@ -18,41 +19,8 @@ class MyPresenter : BasePresenter<MyView>() {
fun userLogin() { fun userLogin() {
val vo = HashMap<String, Any>() val vo = HashMap<String, Any>()
vo["device"] = DeviceUuidFactory().deviceUuid.toString() vo["device"] = DeviceUuidFactory().deviceUuid.toString()
AppHttpManager.getInstance(loanApplication) vo["shumeiId"] = ShumeiManager.getInstance().shumeiDeviceId
.call(loanService.visitorlogin(vo),
object : BaseSubscriber<BaseResponse<UserBean>>() {
override fun onCompleted() {
if (isLinkView) return
}
override fun onError(e: Throwable) {
if (isLinkView) return
}
override fun onNext(baseResponse: BaseResponse<UserBean>) {
if (isLinkView) return
view.hideLoading()
val code = baseResponse.getStatus()
val message = baseResponse.getMessage()
val data: UserBean? = baseResponse.getData()
when (code) {
200 -> if (data != null) {
UserManager.getInstance().saveUserInfo(data)
saveTerminalInfo()
}
else -> view.showToast(message)
}
}
})
}
/**
* 提交设备信息
*
* @param context
*/
fun saveTerminalInfo() {
val vo = HashMap<String, Any>()
val deviceInfo: DeviceInfo = DeviceInfo.instance val deviceInfo: DeviceInfo = DeviceInfo.instance
val macAddress: String = deviceInfo.getMacAddress() val macAddress: String = deviceInfo.getMacAddress()
val mac = macAddress.replace(":", "") val mac = macAddress.replace(":", "")
...@@ -67,8 +35,8 @@ class MyPresenter : BasePresenter<MyView>() { ...@@ -67,8 +35,8 @@ class MyPresenter : BasePresenter<MyView>() {
vo["osversion"] = deviceInfo.oSVersion vo["osversion"] = deviceInfo.oSVersion
vo["appversion"] = deviceInfo.versionName vo["appversion"] = deviceInfo.versionName
AppHttpManager.getInstance(loanApplication) AppHttpManager.getInstance(loanApplication)
.call(loanService.saveTerminalInfo(vo), .call(loanService.visitorlogin(vo),
object : BaseSubscriber<BaseResponse<Any>>() { object : BaseSubscriber<BaseResponse<UserBean>>() {
override fun onCompleted() { override fun onCompleted() {
if (isLinkView) return if (isLinkView) return
} }
...@@ -77,23 +45,26 @@ class MyPresenter : BasePresenter<MyView>() { ...@@ -77,23 +45,26 @@ class MyPresenter : BasePresenter<MyView>() {
if (isLinkView) return if (isLinkView) return
} }
override fun onNext(baseResponse: BaseResponse<Any>) { override fun onNext(baseResponse: BaseResponse<UserBean>) {
if (isLinkView) return if (isLinkView) return
val code = baseResponse.status view.hideLoading()
val code = baseResponse.getStatus()
val message = baseResponse.getMessage()
val data: UserBean? = baseResponse.getData()
when (code) { when (code) {
200 -> { 200 -> if (data != null) {
UserManager.getInstance().saveUserInfo(data)
getMyInfo() getMyInfo()
} }
else -> view.showToast(message)
} }
} }
}) })
} }
fun getMyInfo() { fun getMyInfo() {
val vo = HashMap<String, Any>()
vo["os"] = "android"
AppHttpManager.getInstance(loanApplication) AppHttpManager.getInstance(loanApplication)
.call(loanService.getMyInfo(vo), .call(loanService.getMyInfo(),
object : BaseSubscriber<BaseResponse<UserBean>>() { object : BaseSubscriber<BaseResponse<UserBean>>() {
override fun onCompleted() { override fun onCompleted() {
......
package com.mints.helivideo.mvp.presenters; package com.mints.helivideo.mvp.presenters;
import android.content.Context; import android.content.Context;
import android.os.Handler;
import android.os.Looper;
import android.util.Log; import android.util.Log;
import com.google.gson.JsonObject; import com.google.gson.JsonObject;
import com.mints.helivideo.common.Constant;
import com.mints.helivideo.manager.LocalVedioManager;
import com.mints.helivideo.mvp.model.IndexList;
import com.mints.helivideo.mvp.model.VedioBean;
import com.mints.helivideo.utils.AppPreferencesManager;
import com.mints.library.net.neterror.BaseSubscriber;
import com.mints.library.net.neterror.Throwable;
import com.mints.helivideo.MintsApplication; import com.mints.helivideo.MintsApplication;
import com.mints.helivideo.common.AppConfig;
import com.mints.helivideo.common.DeviceInfo; import com.mints.helivideo.common.DeviceInfo;
import com.mints.helivideo.manager.AppHttpManager; import com.mints.helivideo.manager.AppHttpManager;
import com.mints.helivideo.manager.ShumeiManager;
import com.mints.helivideo.manager.UserManager; import com.mints.helivideo.manager.UserManager;
import com.mints.helivideo.mvp.model.BaseResponse; import com.mints.helivideo.mvp.model.BaseResponse;
import com.mints.helivideo.mvp.model.UserBean; import com.mints.helivideo.mvp.model.UserBean;
import com.mints.helivideo.utils.DeviceUuidFactory; import com.mints.helivideo.utils.DeviceUuidFactory;
import com.mints.library.net.neterror.BaseSubscriber;
import com.mints.library.net.neterror.Throwable;
import java.util.HashMap; import java.util.HashMap;
...@@ -27,7 +22,23 @@ public class TrackPresenter extends BaseTrackPresenter { ...@@ -27,7 +22,23 @@ public class TrackPresenter extends BaseTrackPresenter {
public void visitorlogin() { public void visitorlogin() {
HashMap<String, Object> vo = new HashMap<>(); HashMap<String, Object> vo = new HashMap<>();
DeviceInfo deviceInfo = DeviceInfo.Companion.getInstance();
String macAddress = deviceInfo.getMacAddress();
vo.put("device", new DeviceUuidFactory().getDeviceUuid()); vo.put("device", new DeviceUuidFactory().getDeviceUuid());
vo.put("shumeiId", ShumeiManager.getInstance().getShumeiDeviceId());
String mac = macAddress.replace(":", "");
vo.put("androidid", deviceInfo.getAndroidId(null));
vo.put("mac", mac);
vo.put("mac1", macAddress);
vo.put("os", "android");
vo.put("model", deviceInfo.getBrand() + " " + deviceInfo.getMobileModel());
vo.put("uuid", new DeviceUuidFactory().getDeviceUuid());
vo.put("osversion", deviceInfo.getOSVersion());
vo.put("appversion", deviceInfo.getVersionName());
vo.put("oaid", MintsApplication.OAID);
vo.put("imei", deviceInfo.getIMEI());
saveV6Terminal(vo); saveV6Terminal(vo);
...@@ -47,8 +58,6 @@ public class TrackPresenter extends BaseTrackPresenter { ...@@ -47,8 +58,6 @@ public class TrackPresenter extends BaseTrackPresenter {
switch (baseResponse.getStatus()) { switch (baseResponse.getStatus()) {
case 200: { case 200: {
UserManager.getInstance().saveUserInfo(baseResponse.getData()); UserManager.getInstance().saveUserInfo(baseResponse.getData());
saveTerminalInfo();
} }
} }
} }
...@@ -56,10 +65,8 @@ public class TrackPresenter extends BaseTrackPresenter { ...@@ -56,10 +65,8 @@ public class TrackPresenter extends BaseTrackPresenter {
} }
public void getMyInfo() { public void getMyInfo() {
HashMap<String, Object> vo = new HashMap<>();
vo.put("os", "android");
AppHttpManager.getInstance(loanApplication) AppHttpManager.getInstance(loanApplication)
.call(loanService.getMyInfo(vo), .call(loanService.getMyInfo(),
new BaseSubscriber<BaseResponse<UserBean>>() { new BaseSubscriber<BaseResponse<UserBean>>() {
@Override @Override
public void onCompleted() { public void onCompleted() {
...@@ -95,6 +102,8 @@ public class TrackPresenter extends BaseTrackPresenter { ...@@ -95,6 +102,8 @@ public class TrackPresenter extends BaseTrackPresenter {
vo.put("appversion", deviceInfo.getVersionName()); vo.put("appversion", deviceInfo.getVersionName());
vo.put("oaid", MintsApplication.OAID); vo.put("oaid", MintsApplication.OAID);
vo.put("imei", deviceInfo.getIMEI()); vo.put("imei", deviceInfo.getIMEI());
vo.put("shumeiId", ShumeiManager.getInstance().getShumeiDeviceId());
AppHttpManager.getInstance(loanApplication) AppHttpManager.getInstance(loanApplication)
.call(loanService.saveTerminalInfo(vo), .call(loanService.saveTerminalInfo(vo),
new BaseSubscriber<BaseResponse<Object>>() { new BaseSubscriber<BaseResponse<Object>>() {
...@@ -225,4 +234,64 @@ public class TrackPresenter extends BaseTrackPresenter { ...@@ -225,4 +234,64 @@ public class TrackPresenter extends BaseTrackPresenter {
}); });
} }
public void reporGromeEcpm(HashMap<String, Object> vo) {
AppHttpManager.getInstance(loanApplication)
.call(loanService.reporGromeEcpm(vo),
new BaseSubscriber<BaseResponse<JsonObject>>() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
}
@Override
public void onNext(BaseResponse<JsonObject> baseResponse) {
try {
if (baseResponse.getStatus() == 200) {
JsonObject data = baseResponse.getData();
if (data != null) {
AppConfig.gromoreId = data.get("ecpmId").getAsString();
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* 上送金币信息
*/
public void reportAddCoinMsg(HashMap<String, Object> vo) {
AppHttpManager.getInstance(loanApplication)
.call(loanService.reportAddCoinMsg(vo),
new BaseSubscriber<BaseResponse<JsonObject>>() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
}
@Override
public void onNext(BaseResponse<JsonObject> baseResponse) {
try {
if (baseResponse.getStatus() == 200) {
JsonObject data = baseResponse.getData();
if (data != null) {
AppConfig.awardRedpkg = data.get("coin").getAsInt();
AppConfig.awardYuanbao = data.get("di").getAsInt();
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
} }
package com.mints.helivideo.mvp.views
import com.mints.helivideo.mvp.model.CoinMsgBean
interface AwardView : BaseView {
fun getUserTaskMsgSuc(data: CoinMsgBean)
}
\ No newline at end of file
...@@ -7,4 +7,6 @@ interface HomeView : BaseView { ...@@ -7,4 +7,6 @@ interface HomeView : BaseView {
fun getHomeV1MsgSuc(data: HotStyleTypesList) fun getHomeV1MsgSuc(data: HotStyleTypesList)
fun topTabsSuc(data: BannerList?) fun topTabsSuc(data: BannerList?)
fun ordersSuc(data: BannerList?) fun ordersSuc(data: BannerList?)
fun getUserSuc(data:UserBean)
} }
...@@ -7,18 +7,12 @@ import com.google.gson.JsonObject; ...@@ -7,18 +7,12 @@ import com.google.gson.JsonObject;
import com.mints.helivideo.BuildConfig; import com.mints.helivideo.BuildConfig;
import com.mints.helivideo.mvp.model.BannerList; import com.mints.helivideo.mvp.model.BannerList;
import com.mints.helivideo.mvp.model.BaseResponse; import com.mints.helivideo.mvp.model.BaseResponse;
import com.mints.helivideo.mvp.model.BannerList; import com.mints.helivideo.mvp.model.CoinMsgBean;
import com.mints.helivideo.mvp.model.HotStyleTypesList; import com.mints.helivideo.mvp.model.HotStyleTypesList;
import com.mints.helivideo.mvp.model.IndexList; import com.mints.helivideo.mvp.model.IndexList;
import com.mints.helivideo.mvp.model.NineListBean;
import com.mints.helivideo.mvp.model.NineShowBean; import com.mints.helivideo.mvp.model.NineShowBean;
import com.mints.helivideo.mvp.model.OrderRecordBean;
import com.mints.helivideo.mvp.model.RecoBean;
import com.mints.helivideo.mvp.model.UserBean; import com.mints.helivideo.mvp.model.UserBean;
import com.mints.helivideo.mvp.model.VedioBean;
import com.mints.helivideo.mvp.model.Version; import com.mints.helivideo.mvp.model.Version;
import com.mints.helivideo.mvp.model.VipBean;
import com.mints.helivideo.mvp.model.WxPayParamBean;
import com.mints.helivideo.utils.AESUtils; import com.mints.helivideo.utils.AESUtils;
import com.orhanobut.logger.Logger; import com.orhanobut.logger.Logger;
...@@ -87,67 +81,13 @@ public interface LoanService { ...@@ -87,67 +81,13 @@ public interface LoanService {
@POST("api/user/saveTerminalInfo") @POST("api/user/saveTerminalInfo")
Observable<BaseResponse<Object>> saveTerminalInfo(@Body Map<String, Object> vo); Observable<BaseResponse<Object>> saveTerminalInfo(@Body Map<String, Object> vo);
/**
* 查询vip产品
*/
@POST("api/vip/getVipProducts")
Observable<BaseResponse<VipBean>> getVipProducts(@Body Map<String, Object> vo);
/**
* 查询失败
*
* @return
*/
@POST("api/vip/payError")
Observable<BaseResponse<Object>> payError(@Body Map<String, Object> vo);
/**
* 获取支付参数
*
* @return
*/
@POST("api/vip/getVipPayParams")
Observable<BaseResponse<WxPayParamBean>> getVipPayParams(@Body Map<String, Object> vo);
/**
* 查询vip订单
*
* @return
*/
@POST("api/vip/queryVipOrder")
Observable<BaseResponse<Object>> queryVipOrder(@Body Map<String, Object> vo);
/**
* 订单记录
*
* @return
*/
@POST("api/vip/getOrderList")
Observable<BaseResponse<OrderRecordBean>> getCashOutRecords();
/** /**
* 我的 * 我的
* *
* @return * @return
*/ */
@POST("api/user/baseMsg") @POST("api/base/mostMsg")
Observable<BaseResponse<UserBean>> getMyInfo(@Body Map<String, Object> vo); Observable<BaseResponse<UserBean>> getMyInfo();
/**
* 申请退款
*
* @return
*/
@POST("api/vip/reqfundV1")
Observable<BaseResponse<JsonObject>> reqfundV1(@Body Map<String, Object> vo);
/**
* 取消自动续费
*
* @return
*/
@POST("api/vip/unSign")
Observable<BaseResponse<JsonObject>> unSign();
/** /**
* groMore激励视频展示广告提交数据 * groMore激励视频展示广告提交数据
...@@ -189,15 +129,6 @@ public interface LoanService { ...@@ -189,15 +129,6 @@ public interface LoanService {
@POST("api/vedio/topTabs/v0821") @POST("api/vedio/topTabs/v0821")
Observable<BaseResponse<BannerList>> topTabs(); Observable<BaseResponse<BannerList>> topTabs();
/**
* 排行榜
*
* @return
*/
@POST("api/vedio/orders")
Observable<BaseResponse<BannerList>> orders();
/** /**
* 剧情列表 * 剧情列表
* *
...@@ -214,14 +145,6 @@ public interface LoanService { ...@@ -214,14 +145,6 @@ public interface LoanService {
@POST("api/vedio/getIndexList/vedio3") @POST("api/vedio/getIndexList/vedio3")
Observable<BaseResponse<IndexList>> getIndexList2(@Body Map<String, Object> vo); Observable<BaseResponse<IndexList>> getIndexList2(@Body Map<String, Object> vo);
/**
* 播放链接
*
* @return
*/
@POST("api/vedio/getIndex")
Observable<BaseResponse<Object>> getIndex(@Body Map<String, Object> vo);
/** /**
* 收藏 * 收藏
* *
...@@ -246,14 +169,6 @@ public interface LoanService { ...@@ -246,14 +169,6 @@ public interface LoanService {
@POST("api/vedio/collectList") @POST("api/vedio/collectList")
Observable<BaseResponse<BannerList>> collectList(); Observable<BaseResponse<BannerList>> collectList();
/**
* 最新一条记录
*
* @return
*/
@POST("api/url/newestRecord")
Observable<BaseResponse<Object>> newestRecord();
/** /**
* 历史记录 * 历史记录
* *
...@@ -281,34 +196,34 @@ public interface LoanService { ...@@ -281,34 +196,34 @@ public interface LoanService {
Observable<BaseResponse<Object>> commitCsjShotInfo(@Body Map<String, Object> vo); Observable<BaseResponse<Object>> commitCsjShotInfo(@Body Map<String, Object> vo);
/** /**
* 推荐 * 是否展示9宫格
*/
@POST("api/vedio/firstVedio")
Observable<BaseResponse<IndexList>> getSoltVedio();
/**
* 匹配推荐
*/ */
@POST("api/vedio/vedio3Msg") @POST("api/vedio/showTurn")
Observable<BaseResponse<RecoBean>> getRecommendVedio(); Observable<BaseResponse<NineShowBean>> showTurn();
/** /**
* 9宫格信息 * groMore激励视频展示广告提交数据
*
* @return
*/ */
@POST("api/vedio/getTurnConfig") @POST("api/reporGromeEcpm")
Observable<BaseResponse<NineListBean>> getTurnConfig(); Observable<BaseResponse<JsonObject>> reporGromeEcpm(@Body Map<String, Object> vo);
/** /**
* 9宫格抽奖 * 获取用户配置信息
*
* @return
*/ */
@POST("api/vedio/toTurn") @POST("api/getCoinMsgWithGroMore")
Observable<BaseResponse<NineListBean.NineBean>> toTurn(); Observable<BaseResponse<CoinMsgBean>> getCoinMsg(@Body Map<String, Object> vo);
/** /**
* 是否展示9宫格 * 提交任务
*
* @return
*/ */
@POST("api/vedio/showTurn") @POST("api/reportAddCoinMsg")
Observable<BaseResponse<NineShowBean>> showTurn(); Observable<BaseResponse<JsonObject>> reportAddCoinMsg(@Body Map<String, Object> vo);
/** /**
* 默认http工厂 * 默认http工厂
......
...@@ -4,20 +4,17 @@ import android.text.TextUtils; ...@@ -4,20 +4,17 @@ import android.text.TextUtils;
import com.bytedance.hume.readapk.HumeSDK; import com.bytedance.hume.readapk.HumeSDK;
import com.google.gson.Gson; import com.google.gson.Gson;
import com.mints.helivideo.BuildConfig;
import com.mints.helivideo.utils.MateUtils;
import com.mints.helivideo.utils.rxutil.CommonUtils;
import com.mints.library.utils.ConstantUtil;
import com.mints.helivideo.MintsApplication; import com.mints.helivideo.MintsApplication;
import com.mints.helivideo.common.Constant; import com.mints.helivideo.common.Constant;
import com.mints.helivideo.common.DeviceInfo; import com.mints.helivideo.common.DeviceInfo;
import com.mints.helivideo.manager.MintsSign;
import com.mints.helivideo.manager.UserManager; import com.mints.helivideo.manager.UserManager;
import com.mints.helivideo.mvp.model.AppRequest; import com.mints.helivideo.mvp.model.AppRequest;
import com.mints.helivideo.utils.AESUtils; import com.mints.helivideo.utils.AESUtils;
import com.mints.helivideo.utils.Base64; import com.mints.helivideo.utils.Base64;
import com.mints.helivideo.utils.LogUtil; import com.mints.helivideo.utils.LogUtil;
import com.mints.helivideo.utils.MD5; import com.mints.helivideo.utils.MD5;
import com.mints.helivideo.utils.StringUtil; import com.mints.helivideo.utils.MateUtils;
import org.json.JSONObject; import org.json.JSONObject;
...@@ -145,8 +142,8 @@ public class OkHttpInterceptor implements Interceptor { ...@@ -145,8 +142,8 @@ public class OkHttpInterceptor implements Interceptor {
String requestSign = tokenID + ":" + channelName + ":" + time; String requestSign = tokenID + ":" + channelName + ":" + time;
String sign = MD5.GetMD5Code(requestSign); String sign = MD5.GetMD5Code(requestSign);
// 验证 // 验证
String check = MD5.GetMD5Code(requestSign + ":" + checkStr); // String check = MD5.GetMD5Code(requestSign + ":" + checkStr);
String check = MintsSign.INSTANCE.check(channelName, time, checkStr);
AppRequest appRequest = new AppRequest(); AppRequest appRequest = new AppRequest();
appRequest.setChannel(channelName); appRequest.setChannel(channelName);
appRequest.setSign(sign); appRequest.setSign(sign);
......
package com.mints.helivideo.ui.activitys
import android.os.Bundle
import android.view.KeyEvent
import android.view.View
import com.mints.helivideo.R
import com.mints.helivideo.common.AppConfig
import com.mints.helivideo.mvp.model.CoinMsgBean
import com.mints.helivideo.mvp.presenters.AwardPresenter
import com.mints.helivideo.mvp.views.AwardView
import com.mints.helivideo.ui.activitys.base.BaseActivity
import com.mints.helivideo.ui.widgets.countdowntimer.CountDownTimerSupport
import com.mints.helivideo.ui.widgets.countdowntimer.OnCountDownTimerListener
import com.mints.library.utils.nodoubleclick.AntiShake
import java.math.BigDecimal
/**
* 奖励弹窗
*/
class AwardActivity : BaseActivity(), AwardView, View.OnClickListener {
private val awardPresenter by lazy { AwardPresenter() }
private var mTimer: CountDownTimerSupport? = null
companion object {
const val REDPACKET = "REDPACKET"
const val YUANBAO = "YUANBAO"
const val CARRIERTYPE = "CARRIERTYPE"
}
private var redPacket = 0.0
private var yuanbao = 0
private var carrierType = ""
override fun getContentViewLayoutID() = R.layout.activity_award
override fun isApplyKitKatTranslucency() = false
override fun toggleOverridePendingTransition() = true
override fun getOverridePendingTransitionMode() = TransitionMode.SCALE
override fun getBundleExtras(extras: Bundle?) {
super.getBundleExtras(extras)
extras?.let {
redPacket = it.getDouble(REDPACKET, 0.0)
if (redPacket == 0.0) {
redPacket=AppConfig.awardRedpkg.toDouble()
}
yuanbao = it.getInt(YUANBAO, 0)
if (yuanbao == 0) {
yuanbao = AppConfig.awardYuanbao
}
carrierType = it.getString(carrierType, "")
}
}
override fun initViewsAndEvents() {
awardPresenter.attachView(this)
initListener()
startTime()
}
private fun initListener() {
// tv_nine_know_next.setOnClickListener(this)
}
override fun onResume() {
super.onResume()
if (!this@AwardActivity.isFinishing) {
// if (AntiShake.check(icAwardBg?.id)) return
awardPresenter.getCoinMsg()
}
}
override fun finish() {
super.finish()
hideLoading()
AppConfig.awardRedpkg = 0
AppConfig.awardYuanbao = 0
AppConfig.gromoreId = ""
overridePendingTransition(0, R.anim.scale_out)
}
override fun onDestroy() {
AppConfig.awardRedpkg = 0
AppConfig.awardYuanbao = 0
AppConfig.gromoreId = ""
mTimer?.stop()
mTimer = null
awardPresenter.detachView()
super.onDestroy()
}
override fun onKeyDown(keyCode: Int, event: KeyEvent): Boolean {
return if (keyCode == KeyEvent.KEYCODE_BACK) {
true
} else super.onKeyDown(
keyCode,
event
)
}
override fun onClick(v: View) {
if (AntiShake.check(v.id)) return
when (v.id) {
// R.id.tv_nine_know_next -> {
// finish()
// }
}
}
/**
* 弹窗倒计时
*/
private fun startTime() {
mTimer = CountDownTimerSupport(3000L, 1000L)
mTimer?.setOnCountDownTimerListener(object : OnCountDownTimerListener {
override fun onTick(millisUntilFinished: Long) {
if (!this@AwardActivity.isFinishing) {
// 防止时时获取不到金币 , 倒计时延迟展示
if (millisUntilFinished == 1000L && (AppConfig.awardRedpkg > 0 || AppConfig.awardYuanbao > 0)) {
//
}
}
}
override fun onFinish() {
if (!this@AwardActivity.isFinishing) {
}
}
})
mTimer?.start()
}
override fun getUserTaskMsgSuc(data: CoinMsgBean) {
if (!this@AwardActivity.isFinishing) {
val sumCoin = data.coin.toString()
val allcoinBig = BigDecimal(sumCoin)
val rateBig = BigDecimal("10000")
val cashStr = allcoinBig.divide(rateBig).setScale(2, BigDecimal.ROUND_DOWN).toString()
// 更新金币数
// UserManager.getInstance().userGold = data.coin.toString()
}
}
}
\ No newline at end of file
...@@ -38,18 +38,6 @@ class SettingsActivity : BaseActivity(), View.OnClickListener { ...@@ -38,18 +38,6 @@ class SettingsActivity : BaseActivity(), View.OnClickListener {
override fun onResume() { override fun onResume() {
super.onResume() super.onResume()
// if (userManager.vipFlag) {
// item_back.visibility = View.VISIBLE
// } else {
// item_back.visibility = View.GONE
// }
if (userManager.userIsLogin()) {
btn_switch.visibility = View.VISIBLE
} else {
btn_switch.visibility = View.GONE
}
} }
...@@ -227,7 +215,6 @@ class SettingsActivity : BaseActivity(), View.OnClickListener { ...@@ -227,7 +215,6 @@ class SettingsActivity : BaseActivity(), View.OnClickListener {
dialog?.dismiss() dialog?.dismiss()
when (v?.id) { when (v?.id) {
R.id.dialog_btn_left -> { R.id.dialog_btn_left -> {
AppConfig.exitLoginMainRefresh = true
userManager.userLogout() userManager.userLogout()
finish() finish()
......
package com.mints.helivideo.ui.activitys
import android.os.Bundle
import android.view.KeyEvent
import android.view.View
import com.mints.helivideo.R
import com.mints.helivideo.ui.activitys.base.BaseActivity
import com.mints.library.utils.nodoubleclick.AntiShake
/**
* 个人中心-任务奖励
*/
class TaskAwardActivity : BaseActivity(), View.OnClickListener {
companion object {
const val REDPACKET = "REDPACKET"
const val YUANBAO = "YUANBAO"
const val CARRIERTYPE = "CARRIERTYPE"
}
private var redPacket = 0.0
private var yuanbao = 0
private var carrierType = ""
override fun getContentViewLayoutID() = R.layout.activity_task_award
override fun isApplyKitKatTranslucency() = false
override fun toggleOverridePendingTransition() = true
override fun getOverridePendingTransitionMode() = TransitionMode.SCALE
override fun getBundleExtras(extras: Bundle?) {
super.getBundleExtras(extras)
extras?.let {
redPacket = it.getDouble(REDPACKET, 0.0)
yuanbao = it.getInt(YUANBAO, 0)
carrierType = it.getString(carrierType, "")
}
}
override fun initViewsAndEvents() {
initListener()
}
private fun initListener() {
// tv_nine_know_next.setOnClickListener(this)
}
override fun onResume() {
super.onResume()
if (!this@TaskAwardActivity.isFinishing) {
}
}
override fun finish() {
super.finish()
hideLoading()
overridePendingTransition(0, R.anim.scale_out)
}
override fun onDestroy() {
super.onDestroy()
}
override fun onKeyDown(keyCode: Int, event: KeyEvent): Boolean {
return if (keyCode == KeyEvent.KEYCODE_BACK) {
true
} else super.onKeyDown(
keyCode,
event
)
}
override fun onClick(v: View) {
if (AntiShake.check(v.id)) return
when (v.id) {
// R.id.tv_nine_know_next -> {
// finish()
// }
}
}
}
\ No newline at end of file
...@@ -38,7 +38,7 @@ class TopAdapter(val topList: MutableList<VedioBean>?) : ...@@ -38,7 +38,7 @@ class TopAdapter(val topList: MutableList<VedioBean>?) :
val topBean = topList?.get(position) val topBean = topList?.get(position)
if (topBean != null) { if (topBean != null) {
holder.tvTopItemTitle.text = "${topBean.title}" holder.tvTopItemTitle.text = "${topBean.title}"
holder.tvTopItemText.text = "共${topBean.freeIndex}集" holder.tvTopItemText.text = "共${topBean.vedioTotal}集"
holder.tvTopCurText.text = "观看至第${topBean.seeIndex}集" holder.tvTopCurText.text = "观看至第${topBean.seeIndex}集"
GlideUtils.loadImageViewGifForCenterCrop( GlideUtils.loadImageViewGifForCenterCrop(
context, context,
......
package com.mints.helivideo.ui.fragment package com.mints.helivideo.ui.fragment
import android.app.Dialog
import android.text.TextUtils import android.text.TextUtils
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
...@@ -12,6 +13,8 @@ import com.google.android.material.tabs.TabLayout ...@@ -12,6 +13,8 @@ import com.google.android.material.tabs.TabLayout
import com.google.android.material.tabs.TabLayoutMediator import com.google.android.material.tabs.TabLayoutMediator
import com.mints.helivideo.R import com.mints.helivideo.R
import com.mints.helivideo.ad.AdManager import com.mints.helivideo.ad.AdManager
import com.mints.helivideo.ad.AdStatusListener
import com.mints.helivideo.ad.NoPreAdManager
import com.mints.helivideo.ad.banner.BannerManager import com.mints.helivideo.ad.banner.BannerManager
import com.mints.helivideo.common.AppConfig import com.mints.helivideo.common.AppConfig
import com.mints.helivideo.common.Constant import com.mints.helivideo.common.Constant
...@@ -26,7 +29,10 @@ import com.mints.helivideo.ui.adapter.HomeVideoPageAdapter ...@@ -26,7 +29,10 @@ import com.mints.helivideo.ui.adapter.HomeVideoPageAdapter
import com.mints.helivideo.ui.adapter.ImageTitleAdapter import com.mints.helivideo.ui.adapter.ImageTitleAdapter
import com.mints.helivideo.ui.adapter.TopAdapter import com.mints.helivideo.ui.adapter.TopAdapter
import com.mints.helivideo.ui.fragment.base.LazyLoadBaseFragment import com.mints.helivideo.ui.fragment.base.LazyLoadBaseFragment
import com.mints.library.utils.GlideUtils import com.mints.helivideo.ui.widgets.DialogListener
import com.mints.helivideo.ui.widgets.DialogUtils
import com.mints.helivideo.ui.widgets.NewcomerDialog
import com.mints.helivideo.ui.widgets.SignDrawDialog
import com.mints.library.utils.nodoubleclick.AntiShake import com.mints.library.utils.nodoubleclick.AntiShake
import com.scwang.smartrefresh.layout.api.RefreshLayout import com.scwang.smartrefresh.layout.api.RefreshLayout
import com.scwang.smartrefresh.layout.listener.OnRefreshListener import com.scwang.smartrefresh.layout.listener.OnRefreshListener
...@@ -46,15 +52,21 @@ class MainFragment : LazyLoadBaseFragment(), HomeView, View.OnClickListener, OnR ...@@ -46,15 +52,21 @@ class MainFragment : LazyLoadBaseFragment(), HomeView, View.OnClickListener, OnR
var mSelectTabIndex = -1 var mSelectTabIndex = -1
} }
private val homePresenter by lazy { HomePresenter() }
private val userManager by lazy { UserManager.getInstance() }
private val tabsData = mutableListOf<HotStyleTypesBean>() private val tabsData = mutableListOf<HotStyleTypesBean>()
private val bannerList = mutableListOf<BannerBean>() private val bannerList = mutableListOf<BannerBean>()
private val topList = mutableListOf<VedioBean>() private val topList = mutableListOf<VedioBean>()
private var vpAdapter: HomeVideoPageAdapter? = null private var vpAdapter: HomeVideoPageAdapter? = null
private var topAdapter: TopAdapter? = null private var topAdapter: TopAdapter? = null
// 新人红包
var newcomerDialog: NewcomerDialog? = null
// 签到提现
var signDrawDialog: SignDrawDialog? = null
private val homePresenter by lazy { HomePresenter() }
private val userManager by lazy { UserManager.getInstance() }
override fun getContentViewLayoutID() = R.layout.fragment_main override fun getContentViewLayoutID() = R.layout.fragment_main
...@@ -66,13 +78,8 @@ class MainFragment : LazyLoadBaseFragment(), HomeView, View.OnClickListener, OnR ...@@ -66,13 +78,8 @@ class MainFragment : LazyLoadBaseFragment(), HomeView, View.OnClickListener, OnR
initVp() initVp()
initListener() initListener()
loadData() loadData()
if (!UserManager.getInstance().vipFlag) {
AdManager.instance.preLoadAd(requireActivity())
}
} }
override fun onDestroy() { override fun onDestroy() {
super.onDestroy() super.onDestroy()
homePresenter.detachView() homePresenter.detachView()
...@@ -82,13 +89,7 @@ class MainFragment : LazyLoadBaseFragment(), HomeView, View.OnClickListener, OnR ...@@ -82,13 +89,7 @@ class MainFragment : LazyLoadBaseFragment(), HomeView, View.OnClickListener, OnR
if (AppConfig.fragmentClickFlag == Constant.FRAGMENT_CLICK_ONE) { if (AppConfig.fragmentClickFlag == Constant.FRAGMENT_CLICK_ONE) {
if (AntiShake.check(banner?.id)) return if (AntiShake.check(banner?.id)) return
BannerManager.loadAd(requireActivity(), fl_main_banner) BannerManager.loadAd(requireActivity(), fl_main_banner)
if (AppConfig.exitLoginMainRefresh) {
AppConfig.exitLoginMainRefresh = false
loadData()
}
banner?.start() banner?.start()
// setWatchingStatus()
if (TextUtils.isEmpty(userManager?.userID)) { if (TextUtils.isEmpty(userManager?.userID)) {
//获取游客登录数据 //获取游客登录数据
...@@ -96,7 +97,7 @@ class MainFragment : LazyLoadBaseFragment(), HomeView, View.OnClickListener, OnR ...@@ -96,7 +97,7 @@ class MainFragment : LazyLoadBaseFragment(), HomeView, View.OnClickListener, OnR
} else { } else {
homePresenter.topTabs() homePresenter.topTabs()
homePresenter.orders() homePresenter.orders()
TrackManager.getInstance().getMyInfo() homePresenter.getMyInfo()
} }
} }
} }
...@@ -107,27 +108,20 @@ class MainFragment : LazyLoadBaseFragment(), HomeView, View.OnClickListener, OnR ...@@ -107,27 +108,20 @@ class MainFragment : LazyLoadBaseFragment(), HomeView, View.OnClickListener, OnR
private fun initListener() { private fun initListener() {
srlMainPage.setOnRefreshListener(this) srlMainPage.setOnRefreshListener(this)
iv_main_watching_close.setOnClickListener(this)
tv_main_watching_goto.setOnClickListener(this)
tv_main_watchmore.setOnClickListener(this) tv_main_watchmore.setOnClickListener(this)
iv_main_sign.setOnClickListener(this)
} }
override fun onClick(v: View?) { override fun onClick(v: View?) {
if (AntiShake.check(v?.id)) return if (AntiShake.check(v?.id)) return
when (v?.id) { when (v?.id) {
R.id.iv_main_watching_close -> {
LocalVedioManager.closeCacheVedio()
// ll_main_watching_root.visibility = View.GONE
}
R.id.tv_main_watchmore -> { R.id.tv_main_watchmore -> {
// showSignDrawDialog()
readyGo(WatchRecordActivity::class.java) readyGo(WatchRecordActivity::class.java)
} }
R.id.tv_main_watching_goto -> { R.id.iv_main_sign -> {
val cacheVedio = LocalVedioManager.getCacheVedio() showSignDialog(7)
if (cacheVedio != null) {
LocalVedioManager.startVedioDetailActivityForType(requireActivity(), cacheVedio)
}
} }
} }
} }
...@@ -218,32 +212,6 @@ class MainFragment : LazyLoadBaseFragment(), HomeView, View.OnClickListener, OnR ...@@ -218,32 +212,6 @@ class MainFragment : LazyLoadBaseFragment(), HomeView, View.OnClickListener, OnR
} }
} }
fun setWatchingStatus() {
if (LocalVedioManager.isCacheVedio()) {
// ll_main_watching_root.visibility = View.VISIBLE
// ll_main_watching_root.setOnClickListener { }
val cacheVedio = LocalVedioManager.getCacheVedio()
if (cacheVedio != null) {
GlideUtils.loadImageViewGifForCenterCrop(
requireContext(),
cacheVedio.coverImage,
iv_main_watching_pic
)
tv_main_watching_name.text = cacheVedio.title
tv_main_watching_text1.text = "上次观看至第${cacheVedio.seeIndex}集"
if (cacheVedio.orderTags != null && cacheVedio.orderTags.size > 0) {
val sb = StringBuilder()
for (i in 0 until cacheVedio.orderTags.size) {
sb.append(cacheVedio.orderTags.get(i) + " ")
}
tv_main_watching_text2.text = "${sb}"
}
}
} else {
// ll_main_watching_root.visibility = View.GONE
}
}
override fun getHomeV1MsgSuc(data: HotStyleTypesList) { override fun getHomeV1MsgSuc(data: HotStyleTypesList) {
tabsData.clear() tabsData.clear()
tabsData.addAll(data.list) tabsData.addAll(data.list)
...@@ -287,6 +255,16 @@ class MainFragment : LazyLoadBaseFragment(), HomeView, View.OnClickListener, OnR ...@@ -287,6 +255,16 @@ class MainFragment : LazyLoadBaseFragment(), HomeView, View.OnClickListener, OnR
topAdapter?.notifyDataSetChanged() topAdapter?.notifyDataSetChanged()
} }
override fun getUserSuc(data: UserBean) {
if (data.rewardFirst == 0) {
// 弹出
} else {
// 不弹
}
}
override fun onHiddenChanged(hidden: Boolean) { override fun onHiddenChanged(hidden: Boolean) {
super.onHiddenChanged(hidden) super.onHiddenChanged(hidden)
if (isHidden) { if (isHidden) {
...@@ -309,4 +287,82 @@ class MainFragment : LazyLoadBaseFragment(), HomeView, View.OnClickListener, OnR ...@@ -309,4 +287,82 @@ class MainFragment : LazyLoadBaseFragment(), HomeView, View.OnClickListener, OnR
} catch (ignore: java.lang.Exception) { } catch (ignore: java.lang.Exception) {
} }
} }
private fun showNewcomerDialog() {
newcomerDialog = NewcomerDialog(requireContext())
newcomerDialog?.setAdListener(object : NewcomerDialog.AdListener {
override fun showAd() {
showToast("123")
newcomerDialog?.dismiss()
// showAd("")
}
})
newcomerDialog!!.show()
}
private fun showSignDrawDialog() {
signDrawDialog = SignDrawDialog(requireContext(), true)
signDrawDialog?.setAdListener(object : SignDrawDialog.AdListener {
override fun showAd() {
showToast("123")
signDrawDialog?.dismiss()
// showAd("")
}
override fun click() {
}
})
signDrawDialog!!.show()
}
private fun showAd(carrierType: String) {
AdManager.instance.showAd(requireActivity(), carrierType,
object : AdStatusListener {
var canFail = false
override fun adSuccess() {
canFail = true
}
override fun adFail() {
if (canFail) return
showLoading("正在获取视频", false)
NoPreAdManager.loadVideoAd(
requireActivity(),
carrierType, object : AdStatusListener {
override fun adFail() {
hideLoading()
showToast("广告太火爆了,请稍候再试")
}
override fun adSuccess() {
hideLoading()
}
override fun adClose(vo: HashMap<String, Any>?) {
hideLoading()
}
})
}
override fun adClose(vo: HashMap<String, Any>?) {
}
})
}
private fun showSignDialog(signDay: Int) {
DialogUtils.showSignDialog(requireContext(), object : DialogListener() {
override fun onClick(dialog: Dialog?, v: View) {
dialog?.dismiss()
when (v.id) {
// R.id.tv_sign -> {
//
// }
}
}
}, signDay)
}
} }
\ No newline at end of file
...@@ -43,7 +43,6 @@ class RecommendFragment : BaseFragment(), View.OnClickListener { ...@@ -43,7 +43,6 @@ class RecommendFragment : BaseFragment(), View.OnClickListener {
override fun getContentViewLayoutID() = R.layout.fragment_recommend override fun getContentViewLayoutID() = R.layout.fragment_recommend
private fun initVp2() { private fun initVp2() {
mCurrentNewFlag = UserManager.getInstance().newFlag
fragments.clear() fragments.clear()
tabsData.add("追剧") tabsData.add("追剧")
tabsData.add("推荐") tabsData.add("推荐")
...@@ -142,11 +141,11 @@ class RecommendFragment : BaseFragment(), View.OnClickListener { ...@@ -142,11 +141,11 @@ class RecommendFragment : BaseFragment(), View.OnClickListener {
super.onResume() super.onResume()
if (AppConfig.fragmentClickFlag == Constant.FRAGMENT_CLICK_TWO) { if (AppConfig.fragmentClickFlag == Constant.FRAGMENT_CLICK_TWO) {
if (mCurrentNewFlag != UserManager.getInstance().newFlag) { // if (mCurrentNewFlag != UserManager.getInstance().newFlag) {
mCurrentNewFlag = UserManager.getInstance().newFlag // mCurrentNewFlag = UserManager.getInstance().newFlag
// 重置状态 // // 重置状态
initVp2() // initVp2()
} // }
} }
} }
......
package com.mints.helivideo.ui.widgets;
import android.app.Dialog;
import android.content.Context;
import android.content.DialogInterface;
import android.os.Handler;
import android.os.Looper;
import android.view.Gravity;
import android.view.KeyEvent;
import android.view.View;
import android.view.WindowManager.LayoutParams;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.TextView;
import com.daimajia.androidanimations.library.Techniques;
import com.daimajia.androidanimations.library.YoYo;
import com.mints.helivideo.R;
import com.mints.helivideo.manager.UserManager;
/**
* 支付返回弹窗
*/
public class BackPayDialog extends Dialog {
private Context context;
private LayoutParams lp;
private DialogListener listener;
private FrameLayout tv_dialog_backpay;
private TextView tv_vip_next;
private ImageView iv_vip_new;
private TextView iv_dialog_backpay_cancel;
public BackPayDialog(Context context, DialogListener listener) {
super(context, R.style.dialog);
this.context = context;
this.listener = listener;
setContentView(R.layout.dialog_backpay);
// 设置window属性
lp = getWindow().getAttributes();
lp.gravity = Gravity.BOTTOM;
lp.width = LayoutParams.MATCH_PARENT;
lp.windowAnimations = R.style.DialogAnimBottom;
getWindow().setAttributes(lp);
// 设置外部不可关闭
setCancelable(false);
setCanceledOnTouchOutside(false);
setOnKeyListener(new OnKeyListener() {
@Override
public boolean onKey(DialogInterface dialogInterface, int i, KeyEvent keyEvent) {
if (i == keyEvent.KEYCODE_BACK) {
return true;
}
return false;
}
});
// 查找View
tv_dialog_backpay = (FrameLayout) findViewById(R.id.tv_dialog_backpay);
tv_vip_next = (TextView) findViewById(R.id.tv_vip_next);
iv_vip_new = (ImageView) findViewById(R.id.iv_vip_new);
iv_dialog_backpay_cancel = (TextView) findViewById(R.id.iv_dialog_backpay_cancel);
tv_dialog_backpay.setOnClickListener(listener);
iv_dialog_backpay_cancel.setOnClickListener(listener);
if (UserManager.getInstance().getNewFlag()) {
iv_vip_new.setVisibility(View.VISIBLE);
} else {
iv_vip_new.setVisibility(View.GONE);
}
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
YoYo.with(Techniques.Pulse).duration(500).repeat(-1).playOn(tv_vip_next);
}
}, 300);
}
public void setContent(double price) {
tv_vip_next.setText(price + "元试用");
}
}
package com.mints.helivideo.ui.widgets;
import android.app.Dialog;
import android.content.Context;
import android.view.Gravity;
import android.view.KeyEvent;
import android.view.WindowManager.LayoutParams;
import android.widget.TextView;
import com.mints.helivideo.R;
/**
* 支付返回弹窗
*/
public class CancelOrderDialog extends Dialog {
private LayoutParams lp;
private DialogListener listener;
private TextView tv_go;
private TextView tv_cancel;
public CancelOrderDialog(Context context, DialogListener listener) {
super(context, R.style.dialog);
this.listener = listener;
setContentView(R.layout.dialog_cancel_order);
// 设置window属性
lp = getWindow().getAttributes();
lp.gravity = Gravity.CENTER;
lp.width = LayoutParams.MATCH_PARENT;
lp.windowAnimations = R.style.DialogAnimBottom;
getWindow().setAttributes(lp);
// 设置外部不可关闭
setCancelable(false);
setCanceledOnTouchOutside(false);
setOnKeyListener((dialogInterface, i, keyEvent) -> {
if (i == KeyEvent.KEYCODE_BACK) {
return true;
}
return false;
});
// 查找View
tv_go = (TextView) findViewById(R.id.tv_go);
tv_cancel = (TextView) findViewById(R.id.tv_cancel);
listener.setDialog(this);
tv_cancel.setOnClickListener(listener);
tv_go.setOnClickListener(v -> dismiss());
}
}
...@@ -2,6 +2,7 @@ package com.mints.helivideo.ui.widgets ...@@ -2,6 +2,7 @@ package com.mints.helivideo.ui.widgets
import android.app.Activity import android.app.Activity
import android.app.Dialog import android.app.Dialog
import android.content.Context
import android.text.Spannable import android.text.Spannable
import android.view.Gravity import android.view.Gravity
import android.view.View import android.view.View
...@@ -121,4 +122,16 @@ object DialogUtils { ...@@ -121,4 +122,16 @@ object DialogUtils {
leftAction.setDialog(cdaa) leftAction.setDialog(cdaa)
rightAction.setDialog(cdaa) rightAction.setDialog(cdaa)
} }
/**
* 签到弹框
*/
fun showSignDialog(ctx: Context, dialogListener: DialogListener, signDay: Int) {
val weakReference = WeakReference<Context>(ctx)
val signDialog = SignDialog(weakReference.get()!!, dialogListener, signDay)
signDialog.show()
dialogListener.setDialog(signDialog)
}
} }
\ No newline at end of file
...@@ -16,21 +16,31 @@ import com.mints.helivideo.ui.widgets.countdowntimer.CountDownTimerSupport ...@@ -16,21 +16,31 @@ import com.mints.helivideo.ui.widgets.countdowntimer.CountDownTimerSupport
import com.mints.helivideo.ui.widgets.countdowntimer.OnCountDownTimerListener import com.mints.helivideo.ui.widgets.countdowntimer.OnCountDownTimerListener
import com.mints.helivideo.utils.SpanUtils import com.mints.helivideo.utils.SpanUtils
import com.mints.helivideo.utils.TimeRender import com.mints.helivideo.utils.TimeRender
import com.mints.wisdomclean.ui.adapter.HotStyleAdapter
import java.util.* import java.util.*
class RuleAgreementDialog(private val context: Context, private val listener: DialogListener) : class NewcomerDialog(private val context: Context) :
Dialog( Dialog(
context, R.style.dialog context, R.style.dialog
) { ) {
private val lp: WindowManager.LayoutParams private val lp: WindowManager.LayoutParams
private val iv_agreement_quit: ImageView private val iv_newcomer_bg: ImageView
private val tv_agreement_next: TextView private val tv_newcomer_time: TextView
private val tv_rule_date1: TextView
private val tv_rule_date2: TextView
var timer: CountDownTimerSupport? = null var timer: CountDownTimerSupport? = null
private var isClickBtn = false
private var adListener: AdListener? = null
interface AdListener {
fun showAd()
}
fun setAdListener(listener: AdListener?) {
adListener = listener
}
init { init {
setContentView(R.layout.dialog_agreement_rule) setContentView(R.layout.dialog_newcomer)
// 设置window属性 // 设置window属性
lp = window!!.attributes lp = window!!.attributes
lp.gravity = Gravity.BOTTOM lp.gravity = Gravity.BOTTOM
...@@ -48,19 +58,16 @@ class RuleAgreementDialog(private val context: Context, private val listener: Di ...@@ -48,19 +58,16 @@ class RuleAgreementDialog(private val context: Context, private val listener: Di
} }
// 查找View // 查找View
tv_agreement_next = findViewById<View>(R.id.tv_agreement_next) as TextView tv_newcomer_time = findViewById<View>(R.id.tv_newcomer_time) as TextView
iv_agreement_quit = findViewById<View>(R.id.iv_agreement_quit) as ImageView iv_newcomer_bg = findViewById<View>(R.id.iv_newcomer_bg) as ImageView
tv_rule_date1 = findViewById<View>(R.id.tv_rule_date1) as TextView iv_newcomer_bg.setOnClickListener {
tv_rule_date2 = findViewById<View>(R.id.tv_rule_date2) as TextView isClickBtn = true
iv_agreement_quit.setOnClickListener(listener) adListener?.showAd()
tv_agreement_next.setOnClickListener(listener) }
Handler().postDelayed({ Handler().postDelayed({
startTimer() startTimer()
}, 200) }, 200)
} }
override fun dismiss() { override fun dismiss() {
...@@ -81,29 +88,16 @@ class RuleAgreementDialog(private val context: Context, private val listener: Di ...@@ -81,29 +88,16 @@ class RuleAgreementDialog(private val context: Context, private val listener: Di
timer!!.setOnCountDownTimerListener(object : OnCountDownTimerListener { timer!!.setOnCountDownTimerListener(object : OnCountDownTimerListener {
override fun onTick(millisUntilFinished: Long) { override fun onTick(millisUntilFinished: Long) {
if (isShowing) { if (isShowing) {
tv_agreement_next?.text = "请先阅读试用规则(" + millisUntilFinished / 1000 + ")秒" tv_newcomer_time?.text = "${millisUntilFinished / 1000}秒后自动领取"
} }
} }
override fun onFinish() { override fun onFinish() {
if (isShowing) { if (isShowing && !isClickBtn) {
tv_agreement_next?.text = "立即开通" adListener?.showAd()
tv_agreement_next?.setBackgroundResource(R.mipmap.bg_vip_btn)
tv_agreement_next?.isEnabled = true
YoYo.with(Techniques.Pulse).duration(500).repeat(-1).playOn(tv_agreement_next)
} }
} }
}) })
timer!!.start() timer!!.start()
} }
fun setText(remarks: String,days:Int,cash:Double,title: String) {
tv_rule_date2.text = TimeRender.getDateAfter(Date(),days) + ":" + remarks
SpanUtils.with(tv_rule_date1)
.append(TimeRender.formatDateDot(Date()))
.append(": ")
.append("${cash}元开启${title}体验")
.setForegroundColor(context.resources.getColor(R.color.main_mints))
.create()
}
} }
\ No newline at end of file
package com.mints.helivideo.ui.widgets
import android.app.Activity
import android.app.Dialog
import android.view.Gravity
import android.view.KeyEvent
import android.view.WindowManager
import android.widget.ImageView
import android.widget.TextView
import com.mints.helivideo.R
import com.mints.helivideo.utils.SpanUtils
class NineContinueDialog(
activity: Activity,
watchCount: Int,
listener: DialogListener
) :
Dialog(activity, R.style.dialog) {
private val lp: WindowManager.LayoutParams
init {
setContentView(R.layout.dialog_nine_continue)
// 设置window属性
lp = window!!.attributes
lp.gravity = Gravity.CENTER
lp.width = WindowManager.LayoutParams.MATCH_PARENT
lp.windowAnimations = R.style.DialogAnimFade
window!!.attributes = lp
// 设置外部不可关闭
setCancelable(false)
setCanceledOnTouchOutside(false)
setOnKeyListener { dialogInterface, i, keyEvent ->
i == KeyEvent.KEYCODE_BACK
}
val tv_nine_text = findViewById<TextView>(R.id.tv_nine_text)
val tv_nine_next = findViewById<TextView>(R.id.tv_nine_next)
val tv_nine_close = findViewById<ImageView>(R.id.tv_nine_close)
tv_nine_text.text = SpanUtils()
.append("再看")
.append("$watchCount")
.setForegroundColor(context.resources.getColor(R.color.red))
.append("次即可抽奖")
.create()
listener.setDialog(this)
tv_nine_next.setOnClickListener(listener)
tv_nine_close.setOnClickListener { dismiss() }
}
}
\ No newline at end of file
package com.mints.helivideo.ui.widgets;
import android.app.Dialog;
import android.content.Context;
import android.content.DialogInterface;
import android.view.Gravity;
import android.view.KeyEvent;
import android.view.WindowManager.LayoutParams;
import android.widget.ImageView;
import android.widget.TextView;
import com.mints.helivideo.R;
public class PayAgreementDialog extends Dialog {
private Context context;
private LayoutParams lp;
private DialogListener listener;
private ImageView iv_agreement_quit;
private TextView tv_agreement_next;
public PayAgreementDialog(Context context, DialogListener listener) {
super(context, R.style.dialog);
this.context = context;
this.listener = listener;
setContentView(R.layout.dialog_agreement);
// 设置window属性
lp = getWindow().getAttributes();
lp.gravity = Gravity.BOTTOM;
lp.width = LayoutParams.MATCH_PARENT;
lp.windowAnimations = R.style.DialogAnimBottom;
getWindow().setAttributes(lp);
// 设置外部不可关闭
setCancelable(false);
setCanceledOnTouchOutside(false);
setOnKeyListener(new OnKeyListener() {
@Override
public boolean onKey(DialogInterface dialogInterface, int i, KeyEvent keyEvent) {
if (i == keyEvent.KEYCODE_BACK) {
return true;
}
return false;
}
});
// 查找View
tv_agreement_next = (TextView) findViewById(R.id.tv_agreement_next);
iv_agreement_quit = (ImageView) findViewById(R.id.iv_agreement_quit);
iv_agreement_quit.setOnClickListener(listener);
tv_agreement_next.setOnClickListener(listener);
// new Handler().postDelayed(new Runnable() {
// @Override
// public void run() {
// YoYo.with(Techniques.Pulse).duration(500).repeat(-1).playOn(tv_agreement_next);
// }
// }, 300);
}
}
package com.mints.helivideo.ui.widgets;
import android.app.Dialog;
import android.content.Context;
import android.content.DialogInterface;
import android.view.Gravity;
import android.view.KeyEvent;
import android.view.View;
import android.view.WindowManager.LayoutParams;
import android.widget.ImageView;
import android.widget.TextView;
import com.mints.helivideo.R;
/**
* 仿苹果自定义dialog选择框
*/
public class PayDialog extends Dialog {
private Context context;
private LayoutParams lp;
private DialogListener listener;
private TextView tv_dialogpay_pay;
private ImageView iv_dialogpay_cancel;
private ImageView iv_dialogpay_alipay;
private ImageView iv_dialogpay_wx;
private String payChannel = "alipay";
public PayDialog(Context context, DialogListener listener) {
super(context, R.style.dialog);
this.context = context;
this.listener = listener;
setContentView(R.layout.dialog_pay);
// 设置window属性
lp = getWindow().getAttributes();
lp.gravity = Gravity.CENTER;
lp.width = LayoutParams.MATCH_PARENT;
lp.windowAnimations = R.style.DialogAnimBottom;
// lp.dimAmount = 0; // 去背景遮盖
// lp.alpha = 1.0f;//透明效果
getWindow().setAttributes(lp);
// 设置外部不可关闭
setCancelable(false);
setCanceledOnTouchOutside(false);
setOnKeyListener(new OnKeyListener() {
@Override
public boolean onKey(DialogInterface dialogInterface, int i, KeyEvent keyEvent) {
if (i == keyEvent.KEYCODE_BACK) {
return true;
}
return false;
}
});
// 查找View
tv_dialogpay_pay = (TextView) findViewById(R.id.tv_dialogpay_pay);
iv_dialogpay_cancel = (ImageView) findViewById(R.id.iv_dialogpay_cancel);
iv_dialogpay_alipay = (ImageView) findViewById(R.id.iv_dialogpay_alipay);
iv_dialogpay_wx = (ImageView) findViewById(R.id.iv_dialogpay_wx);
tv_dialogpay_pay.setOnClickListener(listener);
iv_dialogpay_cancel.setOnClickListener(listener);
findViewById(R.id.ll_dialogpay_alipay).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
setAlipay();
}
});
findViewById(R.id.ll_dialogpay_wx).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
setWx();
}
});
}
public void setAlipay() {
payChannel = "alipay";
iv_dialogpay_alipay.setImageResource(R.mipmap.ic_vip_enable);
iv_dialogpay_wx.setImageResource(R.mipmap.ic_vip_none);
}
public void setWx() {
payChannel = "weixin";
iv_dialogpay_alipay.setImageResource(R.mipmap.ic_vip_none);
iv_dialogpay_wx.setImageResource(R.mipmap.ic_vip_enable);
}
public String getPayChannel() {
return payChannel;
}
}
package com.mints.helivideo.ui.widgets
import android.app.Dialog
import android.content.Context
import android.view.Gravity
import android.view.KeyEvent
import android.view.View
import android.view.WindowManager
import android.widget.FrameLayout
import android.widget.ImageView
import android.widget.RelativeLayout
import android.widget.TextView
import com.mints.helivideo.R
import com.mints.helivideo.common.AppConfig
import com.mints.helivideo.mvp.model.VipBean
class PayYesDialog(
private val context: Context,
vipBean: VipBean.ListBean,
private val listener: DialogListener
) : Dialog(
context, R.style.dialog
) {
private val lp: WindowManager.LayoutParams
private val fl_dialog_vip_money_root: FrameLayout
private val tv_dialog_vip_next: TextView
private val tv_dialog_vip_money_left: TextView
private val tv_dialog_vip_money_right: TextView
private val tv_dialog_vip_money_center: TextView
private val iv_dialog_vip_quit: ImageView
private val rl_dialog_vip_bg: RelativeLayout
init {
setContentView(R.layout.dialog_payyes)
// 设置window属性
lp = window!!.attributes
lp.gravity = Gravity.CENTER
lp.width = WindowManager.LayoutParams.MATCH_PARENT
lp.windowAnimations = R.style.DialogAnimBottom
window!!.attributes = lp
// 设置外部不可关闭
setCancelable(false)
setCanceledOnTouchOutside(false)
setOnKeyListener { dialogInterface, i, keyEvent ->
if (i == KeyEvent.KEYCODE_BACK) {
true
} else false
}
// 查找View
fl_dialog_vip_money_root = findViewById<View>(R.id.fl_dialog_vip_money_root) as FrameLayout
iv_dialog_vip_quit = findViewById<View>(R.id.iv_dialog_vip_quit) as ImageView
tv_dialog_vip_next = findViewById<View>(R.id.tv_dialog_vip_next) as TextView
tv_dialog_vip_money_left = findViewById<View>(R.id.tv_dialog_vip_money_left) as TextView
tv_dialog_vip_money_right = findViewById<View>(R.id.tv_dialog_vip_money_right) as TextView
tv_dialog_vip_money_center = findViewById<View>(R.id.tv_dialog_vip_money_center) as TextView
rl_dialog_vip_bg = findViewById<View>(R.id.rl_dialog_vip_bg) as RelativeLayout
iv_dialog_vip_quit.setOnClickListener(listener)
tv_dialog_vip_next.setOnClickListener(listener)
if (vipBean.trial == 0) {
//0-没签约 无0.01
fl_dialog_vip_money_root.visibility = View.VISIBLE
tv_dialog_vip_money_left.text = "¥${vipBean.oldPrice}"
tv_dialog_vip_money_right.text = "¥${vipBean.oldPrice}"
tv_dialog_vip_money_center.text = "¥${vipBean.price}"
tv_dialog_vip_next.text = "立即开通"
rl_dialog_vip_bg.setBackgroundResource(R.mipmap.bg_vip_dialog_one)
} else {
fl_dialog_vip_money_root.visibility = View.GONE
tv_dialog_vip_next.text = "${0.01}元试用"
rl_dialog_vip_bg.setBackgroundResource(R.mipmap.bg_vip_dialog_zero)
}
}
}
\ No newline at end of file
package com.mints.helivideo.ui.widgets
import android.app.Dialog
import android.content.Context
import android.os.Build
import android.view.Gravity
import android.view.KeyEvent
import android.view.WindowManager
import android.widget.TextView
import com.mints.helivideo.R
class PermessionDialog(
private val context: Context,
private val listener: DialogListener
) : Dialog(
context, R.style.dialog
) {
private val lp: WindowManager.LayoutParams
private val tv_dialog_per_left: TextView
private val tv_dialog_per_right: TextView
private val tv_dialog_permession_title: TextView
init {
setContentView(R.layout.dialog_permession)
// 设置window属性
lp = window!!.attributes
lp.gravity = Gravity.CENTER
lp.width = WindowManager.LayoutParams.MATCH_PARENT
lp.windowAnimations = R.style.DialogAnimBottom
window!!.attributes = lp
// 设置外部不可关闭
setCancelable(false)
setCanceledOnTouchOutside(false)
setOnKeyListener { dialogInterface, i, keyEvent ->
if (i == KeyEvent.KEYCODE_BACK) {
true
} else false
}
tv_dialog_per_left = findViewById<TextView>(R.id.tv_dialog_per_left) as TextView
tv_dialog_per_right = findViewById<TextView>(R.id.tv_dialog_per_right) as TextView
tv_dialog_permession_title = findViewById<TextView>(R.id.tv_dialog_permession_title) as TextView
tv_dialog_per_left.setOnClickListener(listener)
tv_dialog_per_right.setOnClickListener(listener)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
tv_dialog_permession_title.text="需授权存储空间权限及所有文件权限"
}
}
}
\ No newline at end of file
package com.mints.helivideo.ui.widgets
import android.app.Dialog
import android.content.Context
import android.content.Intent
import android.net.Uri
import android.view.Gravity
import android.view.KeyEvent
import android.view.View
import android.view.WindowManager
import android.widget.ImageView
import android.widget.RelativeLayout
import android.widget.TextView
import com.mints.helivideo.R
import com.mints.helivideo.common.AppConfig
import com.mints.helivideo.mvp.model.VipBean
class PhoneDialog(
private val context: Context,
private val listener: DialogListener
) : Dialog(
context, R.style.dialog
) {
private val lp: WindowManager.LayoutParams
private val iv_phone_dialog_quit: ImageView
private val tv_phone_dialog_phone: TextView
private val tv_phone_dialog_phone2: TextView
init {
setContentView(R.layout.dialog_phone)
// 设置window属性
lp = window!!.attributes
lp.gravity = Gravity.BOTTOM
lp.width = WindowManager.LayoutParams.MATCH_PARENT
lp.windowAnimations = R.style.DialogAnimBottom
window!!.attributes = lp
// 设置外部不可关闭
setCancelable(false)
setCanceledOnTouchOutside(false)
setOnKeyListener { dialogInterface, i, keyEvent ->
if (i == KeyEvent.KEYCODE_BACK) {
true
} else false
}
// 查找View
iv_phone_dialog_quit = findViewById<View>(R.id.iv_phone_dialog_quit) as ImageView
tv_phone_dialog_phone = findViewById<View>(R.id.tv_phone_dialog_phone) as TextView
tv_phone_dialog_phone2 = findViewById<View>(R.id.tv_phone_dialog_phone2) as TextView
iv_phone_dialog_quit.setOnClickListener(listener)
tv_phone_dialog_phone.setOnClickListener(listener)
tv_phone_dialog_phone2.setOnClickListener(listener)
// val intent = Intent(Intent.ACTION_DIAL)
// intent.data = Uri.parse("tel:" + "4000969950")
// context.startActivity(intent)
}
}
\ No newline at end of file
package com.mints.helivideo.ui.widgets
import android.app.Dialog
import android.content.Context
import android.view.Gravity
import android.view.KeyEvent
import android.view.WindowManager
import com.mints.helivideo.R
import com.mints.helivideo.utils.BubbleUtils
import com.mints.helivideo.utils.SpanUtils
import kotlinx.android.synthetic.main.dialog_sign.*
class SignDialog(context: Context, listener: DialogListener, signDay: Int) :
Dialog(context, R.style.dialog) {
init {
setContentView(R.layout.dialog_sign)
// 设置window属性
val lp = window!!.attributes
lp.gravity = Gravity.CENTER
lp.width = WindowManager.LayoutParams.MATCH_PARENT
lp.windowAnimations = R.style.DialogAnimBottom
// lp.dimAmount = 0; // 去背景遮盖
// lp.alpha = 1.0f;//透明效果
window!!.attributes = lp
// 设置外部不可关闭
setCancelable(false)
setCanceledOnTouchOutside(false)
setOnKeyListener { _, i, _ ->
i == KeyEvent.KEYCODE_BACK
}
iv_close.setOnClickListener(listener)
tv_sign_withdraw.setOnClickListener(listener)
tv_sign_rule.setOnClickListener(listener)
setLayoutStyle(signDay)
}
private fun setLayoutStyle(signDay: Int) {
tv_sign_title.text = SpanUtils()
.append("签到7天领")
.setForegroundColor(context.resources.getColor(R.color.apk_uninstalled))
.append("88")
.setFontSize(BubbleUtils.sp2px(30))
.setForegroundColor(context.resources.getColor(R.color.red))
.append("元红包")
.setForegroundColor(context.resources.getColor(R.color.apk_uninstalled))
.create()
when (signDay) {
1 -> {
if (true) {
tv_sign_status1.text = "可领取"
} else {
tv_sign_status1.text = "已领取"
}
}
2 -> {
if (true) {
tv_sign_status2.text = "可领取"
} else {
tv_sign_status2.text = "已领取"
}
}
3 -> {
if (true) {
tv_sign_status3.text = "可领取"
} else {
tv_sign_status3.text = "已领取"
}
}
4 -> {
if (true) {
tv_sign_status4.text = "可领取"
} else {
tv_sign_status4.text = "已领取"
}
}
5 -> {
if (true) {
tv_sign_status5.text = "可领取"
} else {
tv_sign_status5.text = "已领取"
}
}
6 -> {
if (true) {
tv_sign_status6.text = "可领取"
} else {
tv_sign_status6.text = "已领取"
}
}
7 -> {
if (true) {
tv_sign_status7.text = "可领取"
} else {
tv_sign_status7.text = "已领取"
}
}
}
}
}
\ No newline at end of file
package com.mints.helivideo.ui.widgets
import android.app.Dialog
import android.content.Context
import android.os.Handler
import android.view.Gravity
import android.view.KeyEvent
import android.view.WindowManager
import com.mints.helivideo.R
import com.mints.helivideo.ui.widgets.countdowntimer.CountDownTimerSupport
import com.mints.helivideo.ui.widgets.countdowntimer.OnCountDownTimerListener
import com.mints.helivideo.utils.BubbleUtils
import com.mints.helivideo.utils.SpanUtils
import kotlinx.android.synthetic.main.dialog_sign_draw.*
class SignDrawDialog(private val context: Context, private val isTimer: Boolean) :
Dialog(
context, R.style.dialog
) {
private val lp: WindowManager.LayoutParams
var timer: CountDownTimerSupport? = null
private var isClickBtn = false
private var adListener: AdListener? = null
interface AdListener {
fun showAd()
fun click()
}
fun setAdListener(listener: AdListener?) {
adListener = listener
}
init {
setContentView(R.layout.dialog_sign_draw)
// 设置window属性
lp = window!!.attributes
lp.gravity = Gravity.CENTER
lp.width = WindowManager.LayoutParams.MATCH_PARENT
lp.windowAnimations = R.style.DialogAnimBottom
window!!.attributes = lp
// 设置外部不可关闭
setCancelable(false)
setCanceledOnTouchOutside(false)
setOnKeyListener { dialogInterface, i, keyEvent ->
if (i == KeyEvent.KEYCODE_BACK) {
true
} else false
}
tv_sign_draw.setOnClickListener {
adListener?.click()
}
tv_sign_draw_cash.text = SpanUtils()
.append("¥")
.append("2.92")
.setFontSize(BubbleUtils.sp2px(40))
.create()
Handler().postDelayed({
startTimer()
}, 200)
}
override fun dismiss() {
super.dismiss()
if (timer != null) { //防止计时器重复
timer!!.stop()
timer = null
}
}
fun startTimer() {
if (timer != null) { //防止计时器重复
timer!!.stop()
timer = null
}
timer = CountDownTimerSupport(4000, 1000)
timer!!.setOnCountDownTimerListener(object : OnCountDownTimerListener {
override fun onTick(millisUntilFinished: Long) {
if (isShowing) {
// tv_newcomer_time?.text = "${millisUntilFinished / 1000}秒后自动领取"
}
}
override fun onFinish() {
if (isShowing && !isClickBtn) {
adListener?.showAd()
}
}
})
timer!!.start()
}
}
\ No newline at end of file
package com.mints.helivideo.utils
import kotlin.random.Random
/**
* @des 概率公用类
*/
object HitChanceKeeper {
// @JvmStatic
// fun main(args: Array<String>) {
// for (i in 0..100) {
// println("50%:" + isHitChance(0.5f) + "<<-->> 90%:" + isHitChance(90))
// }
// }
private val TAG = "HitChance." + HitChanceKeeper::class.java.simpleName
/**
* @param arg
* @param chance 0f-1.0f
* @return hit
*/
fun isHitChance(arg: Any, chance: Float): Boolean {
if (chance >= 1.0f) return true
val hashCode = Math.abs(arg.hashCode())
val transCoded = hashCode % 100 / 100f
val hit = transCoded <= chance
LogUtil.d(TAG, "-->>> returned: $hit, chance = $chance, transCode = $transCoded")
return hit
}
/**
* @param arg
* @return hit
*/
fun isHitChance(chance: Any): Boolean {
if (chance is Int) return isHitChance(chance)
if (chance is Float) return isHitChance(chance)
return false
}
/**
* @param arg
* @param action
* @return hit
*/
fun isHitChanceS(chance: Any, action: () -> Unit) {
if ((chance is Int || chance is Float) && isHitChance(chance)) {
action()
}
}
/**
* @param arg
* @param action
* @return hit
*/
fun isHitChanceB(chance: Any, action: (Boolean) -> Unit) {
if (chance is Int || chance is Float) {
action.invoke(isHitChance(chance))
} else {
action.invoke(false)
}
}
/**
* @param chance 0f-1.0f
* @return hit
*/
private fun isHitChance(chance: Float): Boolean {
if (chance >= 1.0f) return true
val randomCoded = Random.nextInt(101)
val hit = randomCoded <= (chance * 100)
LogUtil.d(TAG, "-->>> returned: $hit, chance = ${chance * 100}, randomCode = $randomCoded")
return hit
}
/**
* @param chance 0-100
* @return hit
*/
private fun isHitChance(chance: Int): Boolean {
if (chance >= 100) return true
val randomCoded = Random.nextInt(101)
val hit = randomCoded <= chance
LogUtil.d(TAG, "-->>> returned: $hit, chance = $chance, randomCode = $randomCoded")
return hit
}
}
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:orientation="vertical">
<ImageView
android:id="@+id/iv_award_quit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:src="@mipmap/ic_quit_yuan" />
<LinearLayout
android:layout_width="300dp"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:background="@drawable/shape_bg_nine"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="20dp"
android:background="@drawable/shape_bg_nine"
android:orientation="horizontal"
android:paddingLeft="20dp"
android:paddingRight="20dp">
<LinearLayout
android:id="@+id/ll_award_redpkg"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_weight="1"
android:orientation="vertical"
android:paddingLeft="10dp"
android:paddingTop="16dp"
android:paddingRight="10dp"
android:paddingBottom="6dp">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:src="@mipmap/ic_launcher_main"></ImageView>
<TextView
android:id="@+id/tv_award_redpkg"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="18dp"
android:background="@drawable/shape_banner_write"
android:gravity="center"
android:paddingLeft="14dp"
android:paddingTop="3dp"
android:paddingRight="14dp"
android:paddingBottom="3dp"
android:text="+10"
android:textColor="@color/red"
android:textSize="13sp"></TextView>
</LinearLayout>
<LinearLayout
android:id="@+id/ll_award_yuanbao"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_weight="1"
android:orientation="vertical"
android:paddingLeft="10dp"
android:paddingTop="16dp"
android:paddingRight="10dp"
android:paddingBottom="6dp">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:src="@mipmap/ic_launcher_main"></ImageView>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/tv_award_yuanbao"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="18dp"
android:background="@drawable/shape_banner_write"
android:gravity="center"
android:paddingLeft="14dp"
android:paddingTop="3dp"
android:paddingRight="14dp"
android:paddingBottom="3dp"
android:text="+10"
android:textColor="@color/red"
android:textSize="13sp"></TextView>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginLeft="20dp"
android:layout_marginTop="2dp"
android:src="@mipmap/ic_quit_yuan"></ImageView>
</FrameLayout>
</LinearLayout>
</LinearLayout>
<TextView
android:id="@+id/tv_award_ad"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="10dp"
android:background="@drawable/shape_bg_recommend"
android:gravity="center"
android:text="秒后自动领取"
android:textColor="@color/white"
android:textSize="13sp"></TextView>
<TextView
android:id="@+id/tv_award_hint"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="10dp"
android:gravity="center"
android:text="秒后自动领取"
android:textColor="@color/white"
android:textSize="13sp"></TextView>
</LinearLayout>
<TextView
android:id="@+id/tv_award_next"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="10dp"
android:gravity="center"
android:text="秒后自动领取"
android:textColor="@color/black"
android:textSize="13sp"></TextView>
</LinearLayout>
</RelativeLayout>
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#90000000"
android:orientation="vertical">
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true">
<ImageView
android:layout_width="250dp"
android:layout_height="170dp"
android:scaleType="fitXY"
android:src="@mipmap/bg_vip_count" />
<LinearLayout
android:layout_width="250dp"
android:layout_height="170dp"
android:orientation="vertical">
<TextView
android:id="@+id/tv_nine_know_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="34dp"
android:gravity="center"
android:textColor="@color/black"
android:textSize="18sp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="10dp"
android:gravity="center"
android:text="每次解锁剧集,广告次数+1"
android:textColor="@color/gray" />
<TextView
android:id="@+id/tv_nine_know_next"
android:layout_width="200dp"
android:layout_height="44dp"
android:layout_gravity="center_horizontal"
android:layout_marginTop="24dp"
android:layout_marginBottom="18dp"
android:background="@mipmap/bg_vip_count_btn"
android:gravity="center"
android:text="知道了"
android:textColor="#6C4D22"
android:textSize="14sp" />
</LinearLayout>
</RelativeLayout>
</RelativeLayout>
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:orientation="vertical">
<ImageView
android:id="@+id/iv_award_quit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:src="@mipmap/ic_quit_yuan" />
<LinearLayout
android:layout_width="300dp"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:background="@drawable/shape_bg_nine"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="20dp"
android:background="@drawable/shape_bg_nine"
android:orientation="horizontal"
android:paddingLeft="20dp"
android:paddingRight="20dp">
<LinearLayout
android:id="@+id/ll_award_redpkg"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_weight="1"
android:orientation="vertical"
android:paddingLeft="10dp"
android:paddingTop="16dp"
android:paddingRight="10dp"
android:paddingBottom="6dp">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:src="@mipmap/ic_launcher_main"></ImageView>
<TextView
android:id="@+id/tv_award_redpkg"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="18dp"
android:background="@drawable/shape_banner_write"
android:gravity="center"
android:paddingLeft="14dp"
android:paddingTop="3dp"
android:paddingRight="14dp"
android:paddingBottom="3dp"
android:text="+10"
android:textColor="@color/red"
android:textSize="13sp"></TextView>
</LinearLayout>
<LinearLayout
android:id="@+id/ll_award_yuanbao"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_weight="1"
android:orientation="vertical"
android:paddingLeft="10dp"
android:paddingTop="16dp"
android:paddingRight="10dp"
android:paddingBottom="6dp">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:src="@mipmap/ic_launcher_main"></ImageView>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/tv_award_yuanbao"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="18dp"
android:background="@drawable/shape_banner_write"
android:gravity="center"
android:paddingLeft="14dp"
android:paddingTop="3dp"
android:paddingRight="14dp"
android:paddingBottom="3dp"
android:text="+10"
android:textColor="@color/red"
android:textSize="13sp"></TextView>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginLeft="20dp"
android:layout_marginTop="2dp"
android:src="@mipmap/ic_quit_yuan"></ImageView>
</FrameLayout>
</LinearLayout>
</LinearLayout>
<TextView
android:id="@+id/tv_award_ad"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="10dp"
android:background="@drawable/shape_bg_recommend"
android:gravity="center"
android:text="秒后自动领取"
android:textColor="@color/white"
android:textSize="13sp"></TextView>
<TextView
android:id="@+id/tv_award_hint"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="10dp"
android:gravity="center"
android:text="秒后自动领取"
android:textColor="@color/white"
android:textSize="13sp"></TextView>
</LinearLayout>
<TextView
android:id="@+id/tv_award_next"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="10dp"
android:gravity="center"
android:text="秒后自动领取"
android:textColor="@color/black"
android:textSize="13sp"></TextView>
</LinearLayout>
</RelativeLayout>
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:background="@drawable/shape_bg_write"
android:orientation="vertical">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_marginTop="10dp"
android:text="试用订阅规则说明"
android:textColor="@color/black"
android:textSize="16sp"
android:textStyle="bold"></TextView>
<ImageView
android:id="@+id/iv_agreement_quit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:paddingTop="10dp"
android:paddingRight="20dp"
android:src="@mipmap/ic_activity_quit"></ImageView>
</RelativeLayout>
<View
android:layout_width="match_parent"
android:layout_height="1px"
android:layout_marginTop="8dp"
android:background="#E1E1E1" />
<FrameLayout
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_marginLeft="4dp"
android:layout_marginTop="10dp"
android:layout_marginRight="4dp"
android:background="@drawable/shape_bg_agreement"
android:orientation="horizontal">
<TextView
android:id="@+id/tv_rule_date1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="试用订阅规则说明"
android:textColor="@color/black"
android:textSize="14sp"></TextView>
</FrameLayout>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:src="@mipmap/ic_arrow_bottom"></ImageView>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_marginLeft="4dp"
android:layout_marginTop="4dp"
android:layout_marginRight="4dp"
android:background="@drawable/shape_bg_agreement"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="续费提醒"
android:textColor="@color/black"
android:textSize="14sp"></TextView>
</FrameLayout>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:src="@mipmap/ic_arrow_bottom"></ImageView>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_marginLeft="4dp"
android:layout_marginTop="4dp"
android:layout_marginRight="4dp"
android:background="@drawable/shape_bg_agreement"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="试用到期后进行自动续费扣款"
android:textColor="@color/black"
android:textSize="14sp"></TextView>
</FrameLayout>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:src="@mipmap/ic_arrow_bottom"></ImageView>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_marginLeft="4dp"
android:layout_marginTop="4dp"
android:layout_marginRight="4dp"
android:background="@drawable/shape_bg_agreement"
android:orientation="horizontal">
<TextView
android:id="@+id/tv_rule_date2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:textColor="@color/black"
android:textSize="14sp"></TextView>
</FrameLayout>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="4dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="30dp"
android:layout_marginTop="10dp"
android:text="支付方式"
android:textColor="@color/black"
android:textSize="16sp"
android:textStyle="bold"></TextView>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="40dp"
android:layout_gravity="right"
android:layout_marginRight="20dp"
android:gravity="center"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:drawableLeft="@mipmap/ic_alipay"
android:drawablePadding="6dp"
android:gravity="center_vertical"
android:text="支付宝"
android:textColor="@color/black"
android:textSize="14sp"
android:textStyle="bold" />
<ImageView
android:layout_width="30dp"
android:layout_height="30dp"
android:scaleType="center"
android:src="@mipmap/ic_vip_enable_blue" />
</LinearLayout>
</FrameLayout>
<TextView
android:id="@+id/tv_agreement_next"
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_marginLeft="40dp"
android:layout_marginTop="10dp"
android:layout_marginRight="40dp"
android:layout_marginBottom="10dp"
android:background="@drawable/shape_rule_gary"
android:gravity="center"
android:text=""
android:enabled="false"
android:textColor="@color/white"
android:textSize="18sp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:layout_marginBottom="10dp"
android:gravity="center"
android:text="会员到期后自动续费,可随时取消;订阅管理,可前往会员付费界面最下方进行相关操作"
android:textColor="@color/black"
android:textSize="13sp"></TextView>
</LinearLayout>
</RelativeLayout>
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:orientation="vertical">
<ImageView
android:id="@+id/iv_newcomer_bg"
android:layout_width="200dp"
android:layout_height="300dp"
android:scaleType="fitXY"
android:src="@mipmap/ic_nine_item_bg" />
<TextView
android:id="@+id/tv_newcomer_time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="10dp"
android:gravity="center"
android:text="提醒我"
android:textColor="@color/white"
android:textSize="13sp"></TextView>
</LinearLayout>
</RelativeLayout>
This diff is collapsed.
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="300dp"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:orientation="vertical">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:src="@mipmap/bg_vip_btn"></ImageView>
<LinearLayout
android:layout_width="300dp"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:background="@drawable/shape_bg_nine"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="16dp"
android:layout_marginBottom="10dp"
android:text="我的签到余额"
android:textColor="@color/switch_blue"
android:textSize="20sp"
android:textStyle="bold"></TextView>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:background="@drawable/shape_bg_nine"
android:orientation="vertical"
android:paddingLeft="10dp"
android:paddingTop="16dp"
android:paddingRight="10dp"
android:paddingBottom="6dp">
<TextView
android:id="@+id/tv_sign_draw_cash"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:text="123"
android:textColor="@color/switch_blue"
android:textSize="20sp"></TextView>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="10dp"
android:gravity="center"
android:text="余额提现完毕"
android:textColor="@color/white"
android:textSize="13sp"></TextView>
</LinearLayout>
<TextView
android:id="@+id/tv_sign_draw"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="10dp"
android:background="@drawable/shape_bg_recommend"
android:gravity="center"
android:text="秒后自动领取"
android:textColor="@color/white"
android:textSize="13sp"></TextView>
</LinearLayout>
<ImageView
android:id="@+id/iv_close"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:src="@mipmap/ic_quit_yuan" />
</LinearLayout>
</RelativeLayout>
...@@ -97,7 +97,7 @@ ...@@ -97,7 +97,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_alignParentRight="true" android:layout_alignParentRight="true"
android:layout_marginLeft="6dp" android:layout_marginLeft="6dp"
android:layout_marginTop="14dp" android:layout_marginTop="12dp"
android:layout_marginRight="10dp" android:layout_marginRight="10dp"
android:layout_marginBottom="10dp" android:layout_marginBottom="10dp"
android:text="查看更多" android:text="查看更多"
...@@ -177,90 +177,14 @@ ...@@ -177,90 +177,14 @@
</LinearLayout> </LinearLayout>
<LinearLayout <ImageView
android:id="@+id/ll_main_watching_root" android:id="@+id/iv_main_sign"
android:layout_width="match_parent" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_alignParentBottom="true" android:layout_marginTop="200dp"
android:layout_marginLeft="10dp" android:layout_marginRight="20dp"
android:layout_marginRight="10dp" android:src="@mipmap/ic_launcher_main"
android:layout_marginBottom="10dp" app:layout_constraintRight_toRightOf="parent"
android:background="@drawable/shape_bg_black" app:layout_constraintTop_toTopOf="parent" />
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent">
<ImageView
android:id="@+id/iv_main_watching_pic"
android:layout_width="60dp"
android:layout_height="70dp"
android:layout_margin="5dp"
android:scaleType="fitXY" />
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginLeft="4dp"
android:layout_weight="1"
android:orientation="vertical">
<TextView
android:id="@+id/tv_main_watching_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:singleLine="true"
android:text="我去平行时空我去平行时空"
android:textColor="@color/white"
android:textSize="15sp" />
<TextView
android:id="@+id/tv_main_watching_text1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:layout_marginBottom="2dp"
android:singleLine="true"
android:textColor="@color/white"
android:textSize="12sp" />
<TextView
android:id="@+id/tv_main_watching_text2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:singleLine="true"
android:textColor="@color/graya"
android:textSize="10sp" />
</LinearLayout>
<RelativeLayout
android:layout_width="110dp"
android:layout_height="match_parent">
<ImageView
android:id="@+id/iv_main_watching_close"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:padding="6dp"
android:src="@mipmap/ic_quit_white" />
<TextView
android:id="@+id/tv_main_watching_goto"
android:layout_width="110dp"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:layout_marginRight="15dp"
android:background="@drawable/shape_red"
android:gravity="center"
android:paddingTop="8dp"
android:paddingBottom="10dp"
android:text="继续观看"
android:textColor="@color/white"
android:textSize="14sp"
android:textStyle="bold" />
</RelativeLayout>
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/fl_sign"
android:layout_width="76dp"
android:layout_height="76dp"
android:background="@drawable/shape_bg_nine"
android:gravity="center_horizontal"
android:orientation="vertical"
android:paddingTop="2dp"
android:paddingBottom="2dp">
<ImageView
android:id="@+id/iv"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_gravity="center_horizontal"
android:visibility="gone" />
<TextView
android:id="@+id/tv2"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_gravity="center_horizontal"
android:gravity="center"
android:lineSpacingExtra="-3dp"
android:text="最高\n10元"
android:textColor="@color/white"
android:textSize="15sp"
android:visibility="visible" />
<TextView
android:id="@+id/tv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|center_horizontal"
android:text="第一天"
android:textColor="@color/white"
android:textSize="12sp" />
</FrameLayout>
\ No newline at end of file
...@@ -11,7 +11,7 @@ ...@@ -11,7 +11,7 @@
<ImageView <ImageView
android:id="@+id/ivTopItem" android:id="@+id/ivTopItem"
android:layout_width="110dp" android:layout_width="90dp"
android:layout_height="120dp" android:layout_height="120dp"
android:scaleType="fitXY" /> android:scaleType="fitXY" />
...@@ -19,7 +19,7 @@ ...@@ -19,7 +19,7 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginLeft="8dp" android:layout_marginLeft="8dp"
android:layout_marginRight="20dp" android:layout_marginRight="12dp"
android:orientation="vertical"> android:orientation="vertical">
<TextView <TextView
...@@ -27,7 +27,7 @@ ...@@ -27,7 +27,7 @@
android:layout_width="100dp" android:layout_width="100dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="12dp" android:layout_marginTop="12dp"
android:singleLine="true" android:lines="2"
android:text="我去平行时空" android:text="我去平行时空"
android:textColor="@color/black" android:textColor="@color/black"
android:textSize="13sp" /> android:textSize="13sp" />
......
...@@ -48,6 +48,7 @@ ...@@ -48,6 +48,7 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:gravity="center" android:gravity="center"
android:visibility="gone"
android:orientation="vertical" android:orientation="vertical"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
......
...@@ -5,6 +5,7 @@ ...@@ -5,6 +5,7 @@
<color name="white">#FFFFFF</color> <color name="white">#FFFFFF</color>
<color name="black">#000000</color> <color name="black">#000000</color>
<color name="gray">#808080</color> <color name="gray">#808080</color>
<color name="green">#00ff00</color>
<color name="red">#ED385B</color> <color name="red">#ED385B</color>
<color name="graya">#AAAAAA</color> <color name="graya">#AAAAAA</color>
<color name="color_FF7563">#FF7563</color> <color name="color_FF7563">#FF7563</color>
......
...@@ -31,6 +31,8 @@ RELEASE_KEY_ALIAS=mints_helivideotwo ...@@ -31,6 +31,8 @@ RELEASE_KEY_ALIAS=mints_helivideotwo
RELEASE_STORE_PASSWORD=mintshelivideotwo RELEASE_STORE_PASSWORD=mintshelivideotwo
RELEASE_STORE_FILE=mints_helivideotwo.jks RELEASE_STORE_FILE=mints_helivideotwo.jks
SM_APP_ID="goldpub"
#ShareSDK #ShareSDK
RELEASE_SHARESDK_KEY=3845c0fde1969 RELEASE_SHARESDK_KEY=3845c0fde1969
RELEASE_SHARESDK_SECRET=8e1f2a0e4b0ec6ec8404edfabe0cdf61 RELEASE_SHARESDK_SECRET=8e1f2a0e4b0ec6ec8404edfabe0cdf61
......
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