Commit f848b5b4 authored by mengcuiguang2's avatar mengcuiguang2

代码优化

parents bc5199fc 71af70a4
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ExternalStorageConfigurationManager" enabled="true" />
<component name="ProjectRootManager" version="2" languageLevel="JDK_11" default="true" project-jdk-name="Android Studio default JDK" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/build/classes" />
</component>
<component name="ProjectType">
<option name="id" value="Android" />
</component>
</project>
\ No newline at end of file
...@@ -20,7 +20,7 @@ ...@@ -20,7 +20,7 @@
<application <application
android:name=".MintsApplication" android:name=".MintsApplication"
android:allowBackup="false" android:allowBackup="true"
android:icon="@mipmap/ic_launcher_main" android:icon="@mipmap/ic_launcher_main"
android:label="@string/app_name" android:label="@string/app_name"
android:largeHeap="true" android:largeHeap="true"
...@@ -69,7 +69,11 @@ ...@@ -69,7 +69,11 @@
android:configChanges="orientation|screenSize|keyboardHidden" android:configChanges="orientation|screenSize|keyboardHidden"
android:exported="true" android:exported="true"
android:theme="@style/AppTheme.TranslucentSplish"> android:theme="@style/AppTheme.TranslucentSplish">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity> </activity>
<activity <activity
android:name=".ui.activitys.SplashAdActivity" android:name=".ui.activitys.SplashAdActivity"
...@@ -85,15 +89,11 @@ ...@@ -85,15 +89,11 @@
<activity <activity
android:name=".ui.activitys.MainActivity" android:name=".ui.activitys.MainActivity"
android:configChanges="orientation|keyboardHidden|screenSize" android:configChanges="orientation|keyboardHidden|screenSize"
android:exported="true" android:exported="false"
android:launchMode="singleTask" android:launchMode="singleTask"
android:screenOrientation="portrait" android:screenOrientation="portrait"
android:theme="@style/AppTheme.NoneTranslucent"> android:theme="@style/AppTheme.NoneTranslucent">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity> </activity>
<activity <activity
android:name=".ui.activitys.WebActivity" android:name=".ui.activitys.WebActivity"
......
...@@ -74,7 +74,7 @@ object GlideUtils { ...@@ -74,7 +74,7 @@ object GlideUtils {
Glide.with(mContext!!).load(path).apply( Glide.with(mContext!!).load(path).apply(
RequestOptions().transform( RequestOptions().transform(
CenterCrop(), CenterCrop(),
RoundedCorners(BubbleUtils.dp2px(20)) RoundedCorners(BubbleUtils.dp2px(10))
) )
).dontAnimate().into(mImageView!!) ).dontAnimate().into(mImageView!!)
} }
......
package com.mints.wisdomclean.ad package com.mints.wisdomclean.ad
import android.app.Activity import android.app.Activity
import com.mints.wisdomclean.ad.splash.SplashManager
import com.mints.wisdomclean.ad.video.InMoneyVideo import com.mints.wisdomclean.ad.video.InMoneyVideo
/** /**
...@@ -8,8 +9,6 @@ import com.mints.wisdomclean.ad.video.InMoneyVideo ...@@ -8,8 +9,6 @@ import com.mints.wisdomclean.ad.video.InMoneyVideo
*/ */
class AdManager { class AdManager {
private val TAG = AdManager::class.java.simpleName
companion object { companion object {
const val AD_NO_SHOWTIME_OUT = 50 // 广告请示成功但在规定时间内未展示 const val AD_NO_SHOWTIME_OUT = 50 // 广告请示成功但在规定时间内未展示
...@@ -26,8 +25,7 @@ class AdManager { ...@@ -26,8 +25,7 @@ class AdManager {
* isPreLoad:是否是预加载调用,需要躲避监听 * isPreLoad:是否是预加载调用,需要躲避监听
*/ */
fun preLoadAd(activity: Activity, isPreLoad: Boolean = false) { fun preLoadAd(activity: Activity, isPreLoad: Boolean = false) {
// 加载激励视频广告 InMoneyVideo.getInstance().preLoadAd(activity, isPreLoad)
this.loadRewardVideo(activity, isPreLoad)
} }
/** /**
...@@ -37,21 +35,6 @@ class AdManager { ...@@ -37,21 +35,6 @@ class AdManager {
activity: Activity, activity: Activity,
carrierType: String, carrierType: String,
AdStatusListener: AdStatusListener?, AdStatusListener: AdStatusListener?,
) {
// 加载激励视频广告
showRewardVideo(activity, AdStatusListener, carrierType)
}
// 预加载激励视频广告
private fun loadRewardVideo(activity: Activity, isPreLoad: Boolean = false) {
InMoneyVideo.getInstance().preLoadAd(activity, isPreLoad)
}
// 展示激励视频广告
private fun showRewardVideo(
activity: Activity,
AdStatusListener: AdStatusListener?,
carrierType: String,
) { ) {
InMoneyVideo.getInstance() InMoneyVideo.getInstance()
.showRewardAd( .showRewardAd(
...@@ -61,12 +44,12 @@ class AdManager { ...@@ -61,12 +44,12 @@ class AdManager {
) )
} }
/** /**
* 开屏页使用-预加载广告 * 开屏页使用-预加载广告
*/ */
fun splashPreLoadAll(activity: Activity) { fun splashPreLoadAll(activity: Activity) {
this.loadRewardVideo(activity) SplashManager.preLoadAd(activity)
this.preLoadAd(activity)
} }
} }
\ No newline at end of file
...@@ -19,6 +19,7 @@ import com.mints.wisdomclean.video.DPHolderManager; ...@@ -19,6 +19,7 @@ import com.mints.wisdomclean.video.DPHolderManager;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import java.util.logging.Handler;
/** /**
* 穿山甲广告 * 穿山甲广告
...@@ -46,9 +47,6 @@ public class TTGroMoreAdManagerHolder { ...@@ -46,9 +47,6 @@ public class TTGroMoreAdManagerHolder {
if (!sInit) { if (!sInit) {
GMMediationAdSdk.initialize(context, buildV2Config(context)); GMMediationAdSdk.initialize(context, buildV2Config(context));
sInit = true; sInit = true;
// 初始化短剧SDK
DPHolderManager.INSTANCE.initDpSdk(context);
} }
} }
......
...@@ -226,14 +226,11 @@ public class InMoneyVideo { ...@@ -226,14 +226,11 @@ public class InMoneyVideo {
public void onRewardedAdShow() { public void onRewardedAdShow() {
if (mttRewardAd != null) { if (mttRewardAd != null) {
if (mttRewardAd.getShowEcpm() != null) { if (mttRewardAd.getShowEcpm() != null) {
nowAdcode = mttRewardAd.getShowEcpm().getAdNetworkRitId(); nowAdcode = mttRewardAd.getShowEcpm().getAdNetworkRitId();
nowEcpm = mttRewardAd.getShowEcpm().getPreEcpm(); nowEcpm = mttRewardAd.getShowEcpm().getPreEcpm();
nowAdSource = mttRewardAd.getShowEcpm().getAdNetworkPlatformName(); nowAdSource = mttRewardAd.getShowEcpm().getAdNetworkPlatformName();
} }
} }
LogUtil.d(TAG, "gromore应用内激励视频广告-->onRewardedAdShow"); LogUtil.d(TAG, "gromore应用内激励视频广告-->onRewardedAdShow");
...@@ -310,13 +307,6 @@ public class InMoneyVideo { ...@@ -310,13 +307,6 @@ public class InMoneyVideo {
* 激励视频播放完毕,验证是否有效发放奖励的回调 * 激励视频播放完毕,验证是否有效发放奖励的回调
*/ */
public void onRewardVerify(RewardItem rewardItem) { public void onRewardVerify(RewardItem rewardItem) {
// Map<String, Object> customData = rewardItem.getCustomData();
// if (customData != null) {
// String adnName = (String) customData.get(RewardItem.KEY_ADN_NAME);
// if (RewardItem.KEY_GDT.equals(adnName)) {
// LogUtil.d(TAG, "rewardItem gdt: " + customData.get(RewardItem.KEY_GDT_TRANS_ID));
// }
// }
} }
/** /**
......
...@@ -14,6 +14,7 @@ import com.bytedance.msdk.api.v2.slot.GMAdOptionUtil; ...@@ -14,6 +14,7 @@ import com.bytedance.msdk.api.v2.slot.GMAdOptionUtil;
import com.bytedance.msdk.api.v2.slot.GMAdSlotRewardVideo; import com.bytedance.msdk.api.v2.slot.GMAdSlotRewardVideo;
import com.mints.library.utils.json.JsonUtil; import com.mints.library.utils.json.JsonUtil;
import com.mints.wisdomclean.BuildConfig; import com.mints.wisdomclean.BuildConfig;
import com.mints.wisdomclean.ad.AdManager;
import com.mints.wisdomclean.ad.AdStatusListener; import com.mints.wisdomclean.ad.AdStatusListener;
import com.mints.wisdomclean.manager.UserManager; import com.mints.wisdomclean.manager.UserManager;
import com.mints.wisdomclean.utils.LogUtil; import com.mints.wisdomclean.utils.LogUtil;
...@@ -166,10 +167,10 @@ public class InMoneyVideoNoPre { ...@@ -166,10 +167,10 @@ public class InMoneyVideoNoPre {
LogUtil.d(TAG, "InMoneyVideoNoPre应用内激励视频广告-->onRewardedAdShow"); LogUtil.d(TAG, "InMoneyVideoNoPre应用内激励视频广告-->onRewardedAdShow");
// 预加载 // 预加载
// if (weakActivity.get() != null) { if (weakActivity.get() != null) {
// LogUtil.d(TAG, "InMoneyVideoNoPre应用内激励视频广告->onFullVideoAdShow 触发预加载下次广告"); LogUtil.d(TAG, "InMoneyVideoNoPre应用内激励视频广告->onFullVideoAdShow 触发预加载下次广告");
// AdManager.Companion.getInstance().preLoadAd(weakActivity.get(),true); AdManager.Companion.getInstance().preLoadAd(weakActivity.get(),true);
// } }
} }
@Override @Override
...@@ -231,13 +232,6 @@ public class InMoneyVideoNoPre { ...@@ -231,13 +232,6 @@ public class InMoneyVideoNoPre {
* 激励视频播放完毕,验证是否有效发放奖励的回调 * 激励视频播放完毕,验证是否有效发放奖励的回调
*/ */
public void onRewardVerify(RewardItem rewardItem) { public void onRewardVerify(RewardItem rewardItem) {
// Map<String, Object> customData = rewardItem.getCustomData();
// if (customData != null) {
// String adnName = (String) customData.get(RewardItem.KEY_ADN_NAME);
// if (RewardItem.KEY_GDT.equals(adnName)) {
// LogUtil.d(TAG, "rewardItem gdt: " + customData.get(RewardItem.KEY_GDT_TRANS_ID));
// }
// }
} }
/** /**
......
...@@ -5,6 +5,8 @@ object Constant { ...@@ -5,6 +5,8 @@ object Constant {
const val PAGE_SIZE = 12 const val PAGE_SIZE = 12
const val LOCAL_VEDIO = "LOCAL_VEDIO" const val LOCAL_VEDIO = "LOCAL_VEDIO"
const val VEDIO_BEAN = "VEDIO_BEAN" const val VEDIO_BEAN = "VEDIO_BEAN"
const val VEDIO_NEXT = "VEDIO_NEXT"
const val VEDIO_THIRD = "VEDIO_THIRD"
/** /**
* 首次弹出权限声明 * 首次弹出权限声明
...@@ -12,6 +14,7 @@ object Constant { ...@@ -12,6 +14,7 @@ object Constant {
const val LOAN_PERMISSION_FLAG = "loan_permission_flag" const val LOAN_PERMISSION_FLAG = "loan_permission_flag"
const val FIRST_SPLASH = "first_splash" const val FIRST_SPLASH = "first_splash"
const val IS_FIRST_AGREE_BTN = "is_first_agree_btn" const val IS_FIRST_AGREE_BTN = "is_first_agree_btn"
const val IS_FIRST_VIP_BTN = "is_first_agree_btn"
const val TAG_NAME = "SUN" const val TAG_NAME = "SUN"
const val MINTS_APP_NAME = "河狸短视频" const val MINTS_APP_NAME = "河狸短视频"
const val MINTS_PKG_NAME = "com.mints.wisdomclean" const val MINTS_PKG_NAME = "com.mints.wisdomclean"
......
...@@ -4,10 +4,14 @@ import android.app.Activity ...@@ -4,10 +4,14 @@ import android.app.Activity
import android.content.Intent import android.content.Intent
import android.os.Bundle import android.os.Bundle
import android.text.TextUtils import android.text.TextUtils
import com.bytedance.sdk.dp.DPDrama
import com.bytedance.sdk.dp.DPSdk
import com.bytedance.sdk.dp.IDPWidgetFactory
import com.mints.library.utils.json.JsonUtil import com.mints.library.utils.json.JsonUtil
import com.mints.wisdomclean.common.Constant import com.mints.wisdomclean.common.Constant
import com.mints.wisdomclean.mvp.model.VedioBean import com.mints.wisdomclean.mvp.model.VedioBean
import com.mints.wisdomclean.utils.AppPreferencesManager import com.mints.wisdomclean.utils.AppPreferencesManager
import com.mints.wisdomclean.utils.ToastUtil
import com.mints.wisdomclean.video.DramaApiDetailActivity import com.mints.wisdomclean.video.DramaApiDetailActivity
import com.mints.wisdomclean.video.VideoActivity import com.mints.wisdomclean.video.VideoActivity
...@@ -78,15 +82,52 @@ object LocalVedioManager { ...@@ -78,15 +82,52 @@ object LocalVedioManager {
/** /**
* 根据类型跳转对应视频详情页 [自有或穿山甲] * 根据类型跳转对应视频详情页 [自有或穿山甲]
*/ */
fun startVedioDetailActivityForType(activity: Activity, data: VedioBean?) { fun startVedioDetailActivityForType(
val bundle = Bundle() activity: Activity,
bundle.putString(Constant.VEDIO_BEAN, JsonUtil.toJson(data)) data: VedioBean?,
isPlayNext: Boolean = false,
isThirdId: Boolean = false
) {
if (data?.createType == 1) { if (data?.createType == 1) {
//自有短剧 //自有短剧
val bundle = Bundle()
bundle.putString(Constant.VEDIO_BEAN, JsonUtil.toJson(data))
bundle.putBoolean(Constant.VEDIO_NEXT, isPlayNext)
bundle.putBoolean(Constant.VEDIO_THIRD, isThirdId)
readyGo(activity, VideoActivity::class.java, bundle) readyGo(activity, VideoActivity::class.java, bundle)
} else { } else {
//穿山甲短剧 requestDrama(activity, data)
readyGo(activity, DramaApiDetailActivity::class.java, bundle) }
}
// 请求穿山甲数据
private fun requestDrama(activity: Activity, data: VedioBean?) {
if (DPSdk.isStartSuccess() && data != null) {
DPSdk.factory().requestDrama(
arrayListOf(data.thirdId.toLong()), object : IDPWidgetFactory.DramaCallback {
override fun onError(p0: Int, p1: String?) {
ToastUtil.show(activity, "网络错误!")
}
override fun onSuccess(
dataList: MutableList<out DPDrama>?,
info: MutableMap<String, Any>?
) {
dataList?.takeIf { it.isNotEmpty() }?.first()?.let {
DramaApiDetailActivity.outerDrama = it
//穿山甲短剧
val bundle = Bundle()
bundle.putString(Constant.VEDIO_BEAN, JsonUtil.toJson(data))
readyGo(activity, DramaApiDetailActivity::class.java, bundle)
}
}
}
)
} else {
ToastUtil.show(activity, "网络错误!")
} }
} }
......
...@@ -49,8 +49,14 @@ public class TrackManager { ...@@ -49,8 +49,14 @@ public class TrackManager {
HashMap<String, Object> vo = new HashMap<>(); HashMap<String, Object> vo = new HashMap<>();
vo.put("vedioIndex",data.getSeeIndex()); vo.put("vedioIndex",data.getSeeIndex());
vo.put("vedioId",data.getVedioId()); vo.put("vedioId",data.getVedioId());
vo.put("thirdId",data.getThirdId());
trackPresenter.commitVedio(vo); trackPresenter.commitVedio(vo);
} }
} }
public void getMyInfo() {
if (trackPresenter != null) {
trackPresenter.getMyInfo();
}
}
} }
...@@ -21,7 +21,75 @@ public class VedioBean implements Serializable { ...@@ -21,7 +21,75 @@ public class VedioBean implements Serializable {
private String scriptName; private String scriptName;
private String scriptAuthor; private String scriptAuthor;
private int vedioId;// 视频id,服务器标识 private int vedioId;// 视频id,服务器标识
private int hot;// 播放量 private String hot;// 收藏量
private String showNum;// 播放量
private int adGiveVedioNum;// 广告解锁数量
private String recommendUrl;// 推荐视频地址
private int recommendIndex;// 推荐视频第几集
private long seeUpdateTime;// 时间戳
private boolean checked;// 选中
private int tipMaxIndex;// 倒计时弹框
public String getShowNum() {
return showNum;
}
public void setShowNum(String showNum) {
this.showNum = showNum;
}
public int getTipMaxIndex() {
return tipMaxIndex;
}
public void setTipMaxIndex(int tipMaxIndex) {
this.tipMaxIndex = tipMaxIndex;
}
public boolean isChecked() {
return checked;
}
public void setChecked(boolean checked) {
this.checked = checked;
}
public long getSeeUpdateTime() {
return seeUpdateTime;
}
public void setSeeUpdateTime(long seeUpdateTime) {
this.seeUpdateTime = seeUpdateTime;
}
public String getRecommendUrl() {
return recommendUrl;
}
public void setRecommendUrl(String recommendUrl) {
this.recommendUrl = recommendUrl;
}
public int getRecommendIndex() {
return recommendIndex;
}
public void setRecommendIndex(int recommendIndex) {
this.recommendIndex = recommendIndex;
}
public int getAdGiveVedioNum() {
return adGiveVedioNum;
}
public void setAdGiveVedioNum(int adGiveVedioNum) {
this.adGiveVedioNum = adGiveVedioNum;
}
public void setHot(String hot) {
this.hot = hot;
}
public String getThirdId() { public String getThirdId() {
return thirdId; return thirdId;
} }
...@@ -150,11 +218,11 @@ public class VedioBean implements Serializable { ...@@ -150,11 +218,11 @@ public class VedioBean implements Serializable {
this.collect = collect; this.collect = collect;
} }
public int getHot() { public String getHot() {
return hot; return hot;
} }
public void setHot(int hot) { public void String(String hot) {
this.hot = hot; this.hot = hot;
} }
} }
package com.mints.wisdomclean.mvp.model
import android.os.Parcelable
import kotlinx.android.parcel.Parcelize
@Parcelize
data class WatchRecordBean(
var name: String = "",
var group: String = "",
var collect: Boolean = false,
) : Parcelable, java.io.Serializable
\ No newline at end of file
...@@ -11,11 +11,9 @@ import java.util.HashMap ...@@ -11,11 +11,9 @@ import java.util.HashMap
class FollowPresenter : BasePresenter<FollowView>() { class FollowPresenter : BasePresenter<FollowView>() {
fun getCollectList(videoId: String) { fun getCollectList() {
val vo = HashMap<String, Any>()
vo["videoId"] = videoId
AppHttpManager.getInstance(loanApplication) AppHttpManager.getInstance(loanApplication)
.call(loanService.collectList(vo), .call(loanService.collectList(),
object : BaseSubscriber<BaseResponse<BannerList>>() { object : BaseSubscriber<BaseResponse<BannerList>>() {
override fun onCompleted() { override fun onCompleted() {
if (isLinkView) return if (isLinkView) return
...@@ -50,9 +48,9 @@ class FollowPresenter : BasePresenter<FollowView>() { ...@@ -50,9 +48,9 @@ class FollowPresenter : BasePresenter<FollowView>() {
} }
fun cancelCollect(videoId: String) { fun cancelCollect(videoId: List<String>) {
val vo = HashMap<String, Any>() val vo = HashMap<String, Any>()
vo["videoId"] = videoId vo["list"] = videoId
AppHttpManager.getInstance(loanApplication) AppHttpManager.getInstance(loanApplication)
.call( .call(
loanService.cancelCollect(vo), loanService.cancelCollect(vo),
......
...@@ -4,12 +4,50 @@ import com.google.gson.JsonObject ...@@ -4,12 +4,50 @@ import com.google.gson.JsonObject
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 com.mints.wisdomclean.manager.AppHttpManager import com.mints.wisdomclean.manager.AppHttpManager
import com.mints.wisdomclean.mvp.model.BannerList
import com.mints.wisdomclean.mvp.model.BaseResponse import com.mints.wisdomclean.mvp.model.BaseResponse
import com.mints.wisdomclean.mvp.views.RecommendView import com.mints.wisdomclean.mvp.views.RecommendView
import java.util.HashMap import java.util.HashMap
class RecommendPresenter : BasePresenter<RecommendView>() { class RecommendPresenter : BasePresenter<RecommendView>() {
fun autoList() {
AppHttpManager.getInstance(loanApplication)
.call(loanService.autoList(), object : BaseSubscriber<BaseResponse<BannerList>>() {
override fun onCompleted() {
if (isLinkView) return
view.hideLoading()
}
override fun onNext(baseResponse: BaseResponse<BannerList>) {
if (isLinkView) return
view.hideLoading()
val code = baseResponse.status
val message = baseResponse.message
when (code) {
200 -> view.autoListSuc(baseResponse.data)
else -> {
view.autoListFail()
view.showToast(message)
}
}
}
override fun onError(e: Throwable?) {
if (isLinkView) return
view.hideLoading()
view.showToast(e?.message)
view.autoListFail()
}
})
}
fun collect(videoId: String) { fun collect(videoId: String) {
val vo = HashMap<String, Any>() val vo = HashMap<String, Any>()
vo["videoId"] = videoId vo["videoId"] = videoId
......
...@@ -11,9 +11,13 @@ import java.util.HashMap ...@@ -11,9 +11,13 @@ import java.util.HashMap
class VideoPresenter : BasePresenter<VideoView>() { class VideoPresenter : BasePresenter<VideoView>() {
fun getIndexList(videoId: String) { fun getIndexList(thirdId: String, csj: Boolean = false) {
val vo = HashMap<String, Any>() val vo = HashMap<String, Any>()
vo["vedioId"] = videoId if (csj) {
vo["thirdId"] = thirdId
} else {
vo["vedioId"] = thirdId
}
AppHttpManager.getInstance(loanApplication) AppHttpManager.getInstance(loanApplication)
.call(loanService.getIndexList(vo), .call(loanService.getIndexList(vo),
object : BaseSubscriber<BaseResponse<IndexList>>() { object : BaseSubscriber<BaseResponse<IndexList>>() {
......
...@@ -49,7 +49,7 @@ class WatchRecordPresenter : BasePresenter<WatchRecordView>() { ...@@ -49,7 +49,7 @@ class WatchRecordPresenter : BasePresenter<WatchRecordView>() {
fun collect(videoId: String) { fun collect(videoId: String) {
val vo = HashMap<String, Any>() val vo = HashMap<String, Any>()
vo["videoId"] = videoId vo["vedioId"] = videoId
AppHttpManager.getInstance(loanApplication) AppHttpManager.getInstance(loanApplication)
.call(loanService.collect(vo), object : BaseSubscriber<BaseResponse<JsonObject>>() { .call(loanService.collect(vo), object : BaseSubscriber<BaseResponse<JsonObject>>() {
override fun onCompleted() { override fun onCompleted() {
...@@ -87,7 +87,7 @@ class WatchRecordPresenter : BasePresenter<WatchRecordView>() { ...@@ -87,7 +87,7 @@ class WatchRecordPresenter : BasePresenter<WatchRecordView>() {
fun cancelCollect(videoId: String) { fun cancelCollect(videoId: String) {
val vo = HashMap<String, Any>() val vo = HashMap<String, Any>()
vo["videoId"] = videoId vo["vedioId"] = videoId
AppHttpManager.getInstance(loanApplication) AppHttpManager.getInstance(loanApplication)
.call( .call(
loanService.cancelCollect(vo), loanService.cancelCollect(vo),
......
package com.mints.wisdomclean.mvp.views package com.mints.wisdomclean.mvp.views
import com.mints.wisdomclean.mvp.model.BannerList
interface RecommendView : BaseView { interface RecommendView : BaseView {
...@@ -9,4 +11,8 @@ interface RecommendView : BaseView { ...@@ -9,4 +11,8 @@ interface RecommendView : BaseView {
fun cancelCollectSuc() fun cancelCollectSuc()
fun cancelCollectFail() fun cancelCollectFail()
fun autoListSuc(list: BannerList)
fun autoListFail()
} }
\ No newline at end of file
...@@ -174,7 +174,7 @@ public interface LoanService { ...@@ -174,7 +174,7 @@ public interface LoanService {
* *
* @return * @return
*/ */
@POST("api/feedback") @POST("api/vedio/feedback")
Observable<BaseResponse<Object>> feedback(@Body Map<String, Object> vo); Observable<BaseResponse<Object>> feedback(@Body Map<String, Object> vo);
/** /**
...@@ -232,7 +232,7 @@ public interface LoanService { ...@@ -232,7 +232,7 @@ public interface LoanService {
* @return * @return
*/ */
@POST("api/vedio/collectList") @POST("api/vedio/collectList")
Observable<BaseResponse<BannerList>> collectList(@Body Map<String, Object> vo); Observable<BaseResponse<BannerList>> collectList();
/** /**
* 最新一条记录 * 最新一条记录
...@@ -248,7 +248,7 @@ public interface LoanService { ...@@ -248,7 +248,7 @@ public interface LoanService {
* @return * @return
*/ */
@POST("api/vedio/history") @POST("api/vedio/history")
Observable<BaseResponse<Object>> history(); Observable<BaseResponse<BannerList>> history();
/** /**
* 提交视频信息 * 提交视频信息
...@@ -256,6 +256,12 @@ public interface LoanService { ...@@ -256,6 +256,12 @@ public interface LoanService {
@POST("api/vedio/reportIndex") @POST("api/vedio/reportIndex")
Observable<BaseResponse<Object>> reportIndex(@Body Map<String, Object> vo); Observable<BaseResponse<Object>> reportIndex(@Body Map<String, Object> vo);
/**
* 推荐
*/
@POST("api/vedio/autoList")
Observable<BaseResponse<BannerList>> autoList();
/** /**
* 默认http工厂 * 默认http工厂
*/ */
......
...@@ -27,6 +27,7 @@ import com.mints.wisdomclean.ui.fragment.MyFragment ...@@ -27,6 +27,7 @@ import com.mints.wisdomclean.ui.fragment.MyFragment
import com.mints.wisdomclean.ui.fragment.RecommendFragment import com.mints.wisdomclean.ui.fragment.RecommendFragment
import com.mints.wisdomclean.ui.widgets.DialogListener import com.mints.wisdomclean.ui.widgets.DialogListener
import com.mints.wisdomclean.ui.widgets.PhoneDialog import com.mints.wisdomclean.ui.widgets.PhoneDialog
import com.mints.wisdomclean.video.DPHolderManager
import kotlinx.android.synthetic.main.activity_main.* import kotlinx.android.synthetic.main.activity_main.*
/** /**
...@@ -65,7 +66,7 @@ class MainActivity : BaseActivity(), View.OnClickListener { ...@@ -65,7 +66,7 @@ class MainActivity : BaseActivity(), View.OnClickListener {
tabIvRecommend = findViewById(R.id.tab_iv_recommend) tabIvRecommend = findViewById(R.id.tab_iv_recommend)
tabIvMy = findViewById(R.id.tab_iv_my) tabIvMy = findViewById(R.id.tab_iv_my)
findViewById<View>(R.id.tab_rl_loan).setOnClickListener(this) findViewById<View>(R.id.tab_rl_loan).setOnClickListener(this)
findViewById<View>(R.id.tab_iv_recommend).setOnClickListener(this) findViewById<View>(R.id.tab_rl_recommend).setOnClickListener(this)
findViewById<View>(R.id.tab_rl_my).setOnClickListener(this) findViewById<View>(R.id.tab_rl_my).setOnClickListener(this)
AppConfig.fragmentClickFlag = Constant.FRAGMENT_CLICK_ONE AppConfig.fragmentClickFlag = Constant.FRAGMENT_CLICK_ONE
if (mainFragment == null) { if (mainFragment == null) {
...@@ -86,6 +87,9 @@ class MainActivity : BaseActivity(), View.OnClickListener { ...@@ -86,6 +87,9 @@ class MainActivity : BaseActivity(), View.OnClickListener {
AdManager.instance.preLoadAd(this) AdManager.instance.preLoadAd(this)
initEditView() initEditView()
// 初始化短剧SDK
DPHolderManager.initDpSdk(context);
// initEasyFloat() // initEasyFloat()
} }
...@@ -189,7 +193,7 @@ class MainActivity : BaseActivity(), View.OnClickListener { ...@@ -189,7 +193,7 @@ class MainActivity : BaseActivity(), View.OnClickListener {
override fun onClick(view: View) { override fun onClick(view: View) {
when (view.id) { when (view.id) {
R.id.tab_rl_loan -> clickTab1Layout() R.id.tab_rl_loan -> clickTab1Layout()
R.id.tab_iv_recommend -> clickTab2Layout() R.id.tab_rl_recommend -> clickTab2Layout()
R.id.tab_rl_my -> clickTab3Layout() R.id.tab_rl_my -> clickTab3Layout()
} }
} }
...@@ -297,6 +301,12 @@ class MainActivity : BaseActivity(), View.OnClickListener { ...@@ -297,6 +301,12 @@ class MainActivity : BaseActivity(), View.OnClickListener {
} }
} }
fun showEditView(show: Boolean) {
recommendFragment?.let {
(it as RecommendFragment).showEditView(show)
}
}
fun showEdit(isEdit: Boolean) { fun showEdit(isEdit: Boolean) {
if (isEdit) { if (isEdit) {
ll_edit.visibility = View.VISIBLE ll_edit.visibility = View.VISIBLE
......
...@@ -186,7 +186,7 @@ class MobileLoginActivity : BaseActivity(), LoginView, View.OnClickListener { ...@@ -186,7 +186,7 @@ class MobileLoginActivity : BaseActivity(), LoginView, View.OnClickListener {
} }
override fun updateDrawState(ds: TextPaint) { override fun updateDrawState(ds: TextPaint) {
ds.color = ContextCompat.getColor(mContext, R.color.color_FF9837) ds.color = ContextCompat.getColor(mContext, R.color.tv_message_recente_money)
ds.isUnderlineText = false ds.isUnderlineText = false
} }
}) })
...@@ -200,7 +200,7 @@ class MobileLoginActivity : BaseActivity(), LoginView, View.OnClickListener { ...@@ -200,7 +200,7 @@ class MobileLoginActivity : BaseActivity(), LoginView, View.OnClickListener {
} }
override fun updateDrawState(ds: TextPaint) { override fun updateDrawState(ds: TextPaint) {
ds.color = ContextCompat.getColor(mContext, R.color.color_FF9837) ds.color = ContextCompat.getColor(mContext, R.color.tv_message_recente_money)
ds.isUnderlineText = false ds.isUnderlineText = false
} }
}) })
...@@ -251,7 +251,8 @@ class MobileLoginActivity : BaseActivity(), LoginView, View.OnClickListener { ...@@ -251,7 +251,8 @@ class MobileLoginActivity : BaseActivity(), LoginView, View.OnClickListener {
when (v?.id) { when (v?.id) {
R.id.dialog_btn_left -> { R.id.dialog_btn_left -> {
readyGo(MainActivity::class.java) readyGo(MainActivity::class.java)
val activity = ActivityPageManager.getInstance().getActivity(MainActivity::class.java) val activity =
ActivityPageManager.getInstance().getActivity(MainActivity::class.java)
if (activity != null && activity is MainActivity) { if (activity != null && activity is MainActivity) {
activity.clickTab3Layout() activity.clickTab3Layout()
} }
......
...@@ -6,6 +6,7 @@ import android.content.Intent ...@@ -6,6 +6,7 @@ import android.content.Intent
import android.net.Uri import android.net.Uri
import android.os.Bundle import android.os.Bundle
import android.os.Handler import android.os.Handler
import android.os.Looper
import android.text.TextUtils import android.text.TextUtils
import android.view.View import android.view.View
import android.widget.ImageView import android.widget.ImageView
...@@ -194,7 +195,7 @@ class SettingsActivity : BaseActivity(), View.OnClickListener { ...@@ -194,7 +195,7 @@ class SettingsActivity : BaseActivity(), View.OnClickListener {
this, this,
SpanUtils() SpanUtils()
.append("确认注销账户?") .append("确认注销账户?")
.setForegroundColor(ContextCompat.getColor(this, R.color.color_FF9837)) .setForegroundColor(ContextCompat.getColor(this, R.color.tv_message_recente_money))
.create(), .create(),
"提示", "提示",
"确定", "确定",
...@@ -204,7 +205,7 @@ class SettingsActivity : BaseActivity(), View.OnClickListener { ...@@ -204,7 +205,7 @@ class SettingsActivity : BaseActivity(), View.OnClickListener {
ToastUtil.show(this@SettingsActivity, "注销账户申请已发起!") ToastUtil.show(this@SettingsActivity, "注销账户申请已发起!")
Handler().postDelayed({ Handler(Looper.getMainLooper()).postDelayed({
finish() finish()
}, 200) }, 200)
......
...@@ -5,15 +5,13 @@ import android.os.Bundle ...@@ -5,15 +5,13 @@ import android.os.Bundle
import android.view.KeyEvent import android.view.KeyEvent
import android.view.View import android.view.View
import com.mints.wisdomclean.R import com.mints.wisdomclean.R
import com.mints.wisdomclean.ad.AdManager
import com.mints.wisdomclean.ad.splash.SplashManager import com.mints.wisdomclean.ad.splash.SplashManager
import com.mints.wisdomclean.common.AppConfig
import com.mints.wisdomclean.common.Constant import com.mints.wisdomclean.common.Constant
import com.mints.wisdomclean.common.Constant.PRIVACY_URL import com.mints.wisdomclean.common.Constant.PRIVACY_URL
import com.mints.wisdomclean.common.Constant.REGISTER_URL import com.mints.wisdomclean.common.Constant.REGISTER_URL
import com.mints.wisdomclean.common.DeviceInfo.Companion.instance
import com.mints.wisdomclean.manager.TrackManager import com.mints.wisdomclean.manager.TrackManager
import com.mints.wisdomclean.manager.UserManager import com.mints.wisdomclean.manager.UserManager
import com.mints.wisdomclean.ui.activitys.WebActivity
import com.mints.wisdomclean.ui.activitys.base.BaseActivity import com.mints.wisdomclean.ui.activitys.base.BaseActivity
import com.mints.wisdomclean.ui.widgets.CycleProgress import com.mints.wisdomclean.ui.widgets.CycleProgress
import com.mints.wisdomclean.ui.widgets.DialogListener import com.mints.wisdomclean.ui.widgets.DialogListener
...@@ -21,6 +19,7 @@ import com.mints.wisdomclean.ui.widgets.PowerDialog ...@@ -21,6 +19,7 @@ import com.mints.wisdomclean.ui.widgets.PowerDialog
import com.mints.wisdomclean.ui.widgets.PowerDialog2 import com.mints.wisdomclean.ui.widgets.PowerDialog2
import com.mints.wisdomclean.ui.widgets.countdowntimer.CountDownTimerSupport import com.mints.wisdomclean.ui.widgets.countdowntimer.CountDownTimerSupport
import com.mints.wisdomclean.ui.widgets.countdowntimer.OnCountDownTimerListener import com.mints.wisdomclean.ui.widgets.countdowntimer.OnCountDownTimerListener
import com.mints.wisdomclean.utils.AppPreferencesManager
import com.mints.wisdomclean.utils.AppPreferencesManager.get import com.mints.wisdomclean.utils.AppPreferencesManager.get
import com.mints.wisdomclean.utils.LogUtil import com.mints.wisdomclean.utils.LogUtil
import java.util.* import java.util.*
...@@ -71,7 +70,7 @@ class SplashActivity : BaseActivity() { ...@@ -71,7 +70,7 @@ class SplashActivity : BaseActivity() {
private fun initData() { private fun initData() {
val firstSplash = get().getBoolean(Constant.FIRST_SPLASH, true) val firstSplash = get().getBoolean(Constant.FIRST_SPLASH, true)
if (!firstSplash) { if (!firstSplash) {
SplashManager.preLoadAd(this) AdManager.instance.splashPreLoadAll(this)
} }
mProgressBar!!.startOneAnim() mProgressBar!!.startOneAnim()
try { try {
...@@ -92,7 +91,7 @@ class SplashActivity : BaseActivity() { ...@@ -92,7 +91,7 @@ class SplashActivity : BaseActivity() {
// 第一次安装时,延迟加载开屏广告,因为广告sdk还未初始化完成 // 第一次安装时,延迟加载开屏广告,因为广告sdk还未初始化完成
val firstSplash = get().getBoolean(Constant.FIRST_SPLASH, true) val firstSplash = get().getBoolean(Constant.FIRST_SPLASH, true)
if (firstSplash && millisUntilFinished == (AD_TIME_OUT - 2000).toLong()) { if (firstSplash && millisUntilFinished == (AD_TIME_OUT - 2000).toLong()) {
SplashManager.preLoadAd(this@SplashActivity) AdManager.instance.splashPreLoadAll(this@SplashActivity)
get().put(Constant.FIRST_SPLASH, false) get().put(Constant.FIRST_SPLASH, false)
} }
...@@ -143,8 +142,10 @@ class SplashActivity : BaseActivity() { ...@@ -143,8 +142,10 @@ class SplashActivity : BaseActivity() {
* 跳转到主页面 * 跳转到主页面
*/ */
private fun goToMainActivity() { private fun goToMainActivity() {
// if (UserManager.getInstance().newFlag && !UserManager.getInstance().vipFlag) { // val vipEnter = AppPreferencesManager.get().getBoolean(Constant.IS_FIRST_VIP_BTN, false)
if (!UserManager.getInstance().vipFlag) { // if ((UserManager.getInstance().newFlag && !UserManager.getInstance().vipFlag) || !vipEnter) {
if (UserManager.getInstance().newFlag && !UserManager.getInstance().vipFlag) {
// AppPreferencesManager.get().put(Constant.IS_FIRST_VIP_BTN, true)
// 匹配用户 且 不是vip // 匹配用户 且 不是vip
val bundle = Bundle() val bundle = Bundle()
bundle.putBoolean(VipActivity.IS_GUIDE, true) bundle.putBoolean(VipActivity.IS_GUIDE, true)
......
...@@ -95,8 +95,10 @@ class SplashAdActivity : BaseActivity() { ...@@ -95,8 +95,10 @@ class SplashAdActivity : BaseActivity() {
* 跳转到主页面 * 跳转到主页面
*/ */
private fun goToMainActivity() { private fun goToMainActivity() {
// if (UserManager.getInstance().newFlag&&!UserManager.getInstance().vipFlag) { // val vipEnter = AppPreferencesManager.get().getBoolean(Constant.IS_FIRST_VIP_BTN, false)
if (!UserManager.getInstance().vipFlag) { // if ((UserManager.getInstance().newFlag && !UserManager.getInstance().vipFlag) || !vipEnter) {
if (UserManager.getInstance().newFlag && !UserManager.getInstance().vipFlag) {
// AppPreferencesManager.get().put(Constant.IS_FIRST_VIP_BTN, true)
// 匹配用户 且 不是vip // 匹配用户 且 不是vip
val bundle = Bundle() val bundle = Bundle()
bundle.putBoolean(VipActivity.IS_GUIDE, true) bundle.putBoolean(VipActivity.IS_GUIDE, true)
......
...@@ -32,6 +32,7 @@ import com.mints.wisdomclean.ui.activitys.base.BaseActivity ...@@ -32,6 +32,7 @@ import com.mints.wisdomclean.ui.activitys.base.BaseActivity
import com.mints.wisdomclean.ui.adapter.VipAdapter import com.mints.wisdomclean.ui.adapter.VipAdapter
import com.mints.wisdomclean.ui.widgets.* import com.mints.wisdomclean.ui.widgets.*
import com.mints.library.utils.nodoubleclick.AntiShake import com.mints.library.utils.nodoubleclick.AntiShake
import com.mints.wisdomclean.utils.AppPreferencesManager
import kotlinx.android.synthetic.main.activity_vip.* import kotlinx.android.synthetic.main.activity_vip.*
import kotlinx.android.synthetic.main.header_layout.* import kotlinx.android.synthetic.main.header_layout.*
...@@ -129,7 +130,7 @@ class VipActivity : BaseActivity(), VipView, View.OnClickListener, VipAdapter.On ...@@ -129,7 +130,7 @@ class VipActivity : BaseActivity(), VipView, View.OnClickListener, VipAdapter.On
ll_vip_alipay.visibility = View.GONE ll_vip_alipay.visibility = View.GONE
ll_vip_wx.visibility = View.VISIBLE ll_vip_wx.visibility = View.VISIBLE
payType = WEIXIN_PAY payType = WEIXIN_PAY
iv_vip_wx.setImageResource(R.mipmap.ic_vip_enable) iv_vip_wx.setImageResource(R.mipmap.ic_vip_enable_blue)
iv_vip_alipay.setImageResource(R.mipmap.ic_vip_none) iv_vip_alipay.setImageResource(R.mipmap.ic_vip_none)
} }
...@@ -188,7 +189,9 @@ class VipActivity : BaseActivity(), VipView, View.OnClickListener, VipAdapter.On ...@@ -188,7 +189,9 @@ class VipActivity : BaseActivity(), VipView, View.OnClickListener, VipAdapter.On
override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean { override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean {
when (keyCode) { when (keyCode) {
KeyEvent.KEYCODE_BACK -> { KeyEvent.KEYCODE_BACK -> {
if (!UserManager.getInstance().vipFlag && vipList != null && vipList!!.size > 0) { if (!UserManager.getInstance().vipFlag && UserManager.getInstance().newFlag
&& vipList != null && vipList!!.size > 0
) {
vipAdapter.setPosition(0) vipAdapter.setPosition(0)
vipAdapter.notifyDataSetChanged() vipAdapter.notifyDataSetChanged()
...@@ -219,7 +222,9 @@ class VipActivity : BaseActivity(), VipView, View.OnClickListener, VipAdapter.On ...@@ -219,7 +222,9 @@ class VipActivity : BaseActivity(), VipView, View.OnClickListener, VipAdapter.On
when (v?.id) { when (v?.id) {
R.id.ic_vip_quit -> { R.id.ic_vip_quit -> {
if (!UserManager.getInstance().vipFlag && vipList != null && vipList!!.size > 0) { if (!UserManager.getInstance().vipFlag && UserManager.getInstance().newFlag &&
vipList != null && vipList!!.size > 0
) {
vipAdapter.setPosition(0) vipAdapter.setPosition(0)
vipAdapter.notifyDataSetChanged() vipAdapter.notifyDataSetChanged()
val vipBean = vipList!![0] val vipBean = vipList!![0]
......
package com.mints.wisdomclean.ui.activitys package com.mints.wisdomclean.ui.activitys
import android.view.LayoutInflater
import android.view.View import android.view.View
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
import com.mints.wisdomclean.R import com.mints.wisdomclean.R
import com.mints.wisdomclean.manager.LocalVedioManager
import com.mints.wisdomclean.mvp.model.BannerList import com.mints.wisdomclean.mvp.model.BannerList
import com.mints.wisdomclean.mvp.model.WatchRecordBean import com.mints.wisdomclean.mvp.model.VedioBean
import com.mints.wisdomclean.mvp.presenters.WatchRecordPresenter import com.mints.wisdomclean.mvp.presenters.WatchRecordPresenter
import com.mints.wisdomclean.mvp.views.WatchRecordView import com.mints.wisdomclean.mvp.views.WatchRecordView
import com.mints.wisdomclean.ui.activitys.base.BaseActivity import com.mints.wisdomclean.ui.activitys.base.BaseActivity
import com.mints.wisdomclean.ui.adapter.WatchRecordAdapter import com.mints.wisdomclean.ui.adapter.WatchRecordAdapter
import com.mints.wisdomclean.ui.widgets.StickHeaderDecoration import com.mints.wisdomclean.ui.widgets.StickHeaderDecoration
import com.mints.wisdomclean.utils.TimeHelp
import kotlinx.android.synthetic.main.activity_watch_record.* import kotlinx.android.synthetic.main.activity_watch_record.*
import kotlinx.android.synthetic.main.header_layout.* import kotlinx.android.synthetic.main.header_layout.*
...@@ -23,6 +26,7 @@ class WatchRecordActivity : BaseActivity(), WatchRecordView { ...@@ -23,6 +26,7 @@ class WatchRecordActivity : BaseActivity(), WatchRecordView {
private val watchRecordPresenter by lazy { WatchRecordPresenter() } private val watchRecordPresenter by lazy { WatchRecordPresenter() }
private var mWatchRecordAdapter: WatchRecordAdapter? = null private var mWatchRecordAdapter: WatchRecordAdapter? = null
private var datas = mutableListOf<VedioBean>()
override fun getContentViewLayoutID() = R.layout.activity_watch_record override fun getContentViewLayoutID() = R.layout.activity_watch_record
...@@ -34,22 +38,31 @@ class WatchRecordActivity : BaseActivity(), WatchRecordView { ...@@ -34,22 +38,31 @@ class WatchRecordActivity : BaseActivity(), WatchRecordView {
iv_left_icon.setImageResource(R.mipmap.ic_arrow_back) iv_left_icon.setImageResource(R.mipmap.ic_arrow_back)
iv_left_icon.setOnClickListener { finish() } iv_left_icon.setOnClickListener { finish() }
val beanList: MutableList<WatchRecordBean> = ArrayList() watchRecordPresenter.getHistory()
for (i in 0..5) {
beanList.add(WatchRecordBean(String.format("第一组%d号", i + 1), "第一组"))
}
for (i in 0..5) {
beanList.add(WatchRecordBean(String.format("第二组%d号", i + 1), "第二组"))
}
for (i in 0..5) {
beanList.add(WatchRecordBean(String.format("第三组%d号", i + 1), "第三组"))
}
for (i in 0..9) {
beanList.add(WatchRecordBean(String.format("第四组%d号", i + 1), "第四组"))
}
mWatchRecordAdapter = WatchRecordAdapter() mWatchRecordAdapter = WatchRecordAdapter()
mWatchRecordAdapter?.setNewInstance(beanList) val emptyView = LayoutInflater.from(this).inflate(R.layout.item_empty_history, null)
mWatchRecordAdapter?.setEmptyView(emptyView)
mWatchRecordAdapter?.setNewInstance(datas)
mWatchRecordAdapter?.setOnItemClickListener { adapter, view, position ->
LocalVedioManager.startVedioDetailActivityForType(
this@WatchRecordActivity,
datas[position]
)
}
mWatchRecordAdapter?.setOnItemCollectClickListener(object :
WatchRecordAdapter.OnItemCollectClickListener {
override fun onItemCollectClick(position: Int) {
if (datas[position].collect == 0) {
datas[position].collect = 1
watchRecordPresenter.collect("" + datas[position].vedioId)
} else {
datas[position].collect = 0
watchRecordPresenter.cancelCollect("" + datas[position].vedioId)
}
mWatchRecordAdapter?.notifyItemChanged(position)
}
})
rv_watch_record.layoutManager = LinearLayoutManager(this) rv_watch_record.layoutManager = LinearLayoutManager(this)
rv_watch_record.addItemDecoration(StickHeaderDecoration(this)) rv_watch_record.addItemDecoration(StickHeaderDecoration(this))
rv_watch_record.adapter = mWatchRecordAdapter rv_watch_record.adapter = mWatchRecordAdapter
...@@ -63,7 +76,14 @@ class WatchRecordActivity : BaseActivity(), WatchRecordView { ...@@ -63,7 +76,14 @@ class WatchRecordActivity : BaseActivity(), WatchRecordView {
} }
override fun getHistorySuc(historyBean: BannerList) { override fun getHistorySuc(historyBean: BannerList) {
datas.clear()
val data = historyBean.list
for (datum in data) {
datum.topTabsReamrk = TimeHelp.format(datum.seeUpdateTime * 1000)
datas.add(datum)
}
mWatchRecordAdapter?.setNewInstance(datas)
mWatchRecordAdapter?.notifyDataSetChanged()
} }
override fun getHistoryFail() { override fun getHistoryFail() {
......
...@@ -2,12 +2,14 @@ package com.mints.wisdomclean.ui.adapter ...@@ -2,12 +2,14 @@ package com.mints.wisdomclean.ui.adapter
import android.app.Activity import android.app.Activity
import android.view.View import android.view.View
import android.widget.CheckBox
import android.widget.TextView import android.widget.TextView
import com.chad.library.adapter.base.BaseQuickAdapter import com.chad.library.adapter.base.BaseQuickAdapter
import com.chad.library.adapter.base.viewholder.BaseViewHolder import com.chad.library.adapter.base.viewholder.BaseViewHolder
import com.mints.library.utils.GlideUtils import com.mints.library.utils.GlideUtils
import com.mints.wisdomclean.R import com.mints.wisdomclean.R
import com.mints.wisdomclean.mvp.model.VedioBean import com.mints.wisdomclean.mvp.model.VedioBean
import kotlinx.android.synthetic.main.fragment_main.*
/** /**
* @author Assen * @author Assen
...@@ -20,12 +22,16 @@ class FollowAdapter(var activity: Activity) : ...@@ -20,12 +22,16 @@ class FollowAdapter(var activity: Activity) :
private var showEdit = false private var showEdit = false
override fun convert(holder: BaseViewHolder, item: VedioBean) { override fun convert(holder: BaseViewHolder, item: VedioBean) {
holder.getView<CheckBox>(R.id.cb).isChecked = item.isChecked
holder.getView<CheckBox>(R.id.cb).setOnCheckedChangeListener { buttonView, isChecked ->
item.isChecked = isChecked
}
holder.getView<View>(R.id.fm_mask).visibility = if (showEdit) View.VISIBLE else View.GONE holder.getView<View>(R.id.fm_mask).visibility = if (showEdit) View.VISIBLE else View.GONE
holder.getView<TextView>(R.id.title_tv).text = item.title holder.getView<TextView>(R.id.title_tv).text = item.title
holder.getView<TextView>(R.id.info_tv).text = item.scriptName holder.getView<TextView>(R.id.info_tv).text = "观看至第${item.seeIndex}集"
holder.getView<TextView>(R.id.complete_tv).text = holder.getView<TextView>(R.id.complete_tv).text =
if (item.completeStatus == 0) "已完结" else "更新中" if (item.completeStatus == 0) "已完结" else "更新中"
GlideUtils.loadImageViewNoAnim(context, item.coverImage, holder.getView(R.id.image_iv)) GlideUtils.loadImageViewNoAnim2(context, item.coverImage, holder.getView(R.id.image_iv))
} }
// 设置编辑状态 // 设置编辑状态
...@@ -36,6 +42,9 @@ class FollowAdapter(var activity: Activity) : ...@@ -36,6 +42,9 @@ class FollowAdapter(var activity: Activity) :
// 全选 // 全选
fun fullChoice() { fun fullChoice() {
for (datum in data) {
datum.isChecked = true
}
notifyDataSetChanged()
} }
} }
\ No newline at end of file
...@@ -36,7 +36,7 @@ class HotStyleAdapter(val context: Context, val dataList: ArrayList<VedioBean>) ...@@ -36,7 +36,7 @@ class HotStyleAdapter(val context: Context, val dataList: ArrayList<VedioBean>)
val topBean = dataList?.get(position) val topBean = dataList?.get(position)
if (topBean != null) { if (topBean != null) {
holder.tvVedioItemCount.text = holder.tvVedioItemCount.text =
"${if (topBean.completeStatus == 0) "已完结" else "更新至${topBean.vedioTotal}"}" "${if (topBean.completeStatus == 0) "已完结" else "更新至${topBean.vedioTotal}"}"
holder.tvVedioItemTitle.text = "${topBean.title}" holder.tvVedioItemTitle.text = "${topBean.title}"
holder.tvVedioItemText.text = "${topBean.vedioDesc}" holder.tvVedioItemText.text = "${topBean.vedioDesc}"
GlideUtils.loadImageViewGifForFitCenter( GlideUtils.loadImageViewGifForFitCenter(
......
...@@ -39,7 +39,7 @@ class TopAdapter(val topList: MutableList<VedioBean>?) : ...@@ -39,7 +39,7 @@ class TopAdapter(val topList: MutableList<VedioBean>?) :
val topBean = topList?.get(position) val topBean = topList?.get(position)
if (topBean != null) { if (topBean != null) {
holder.tvTopItemLable.text = "${position + 1}" holder.tvTopItemLable.text = "${position + 1}"
holder.tvTopItemCount.text = "${topBean.hot}万" holder.tvTopItemCount.text = topBean.showNum
holder.tvTopItemTitle.text = "${topBean.title}" holder.tvTopItemTitle.text = "${topBean.title}"
if (topBean.orderTags != null && topBean.orderTags.size > 0) { if (topBean.orderTags != null && topBean.orderTags.size > 0) {
val sb = StringBuilder() val sb = StringBuilder()
......
...@@ -6,7 +6,6 @@ import com.chad.library.adapter.base.BaseQuickAdapter ...@@ -6,7 +6,6 @@ import com.chad.library.adapter.base.BaseQuickAdapter
import com.chad.library.adapter.base.viewholder.BaseViewHolder import com.chad.library.adapter.base.viewholder.BaseViewHolder
import com.mints.wisdomclean.R import com.mints.wisdomclean.R
import com.mints.wisdomclean.mvp.model.EpisodeBean import com.mints.wisdomclean.mvp.model.EpisodeBean
import com.mints.wisdomclean.utils.ToastUtil
/** /**
* @author Assen * @author Assen
...@@ -23,8 +22,10 @@ class VideoEpisodeAdapter : ...@@ -23,8 +22,10 @@ class VideoEpisodeAdapter :
rv.adapter = itemVideoEpisodeAdapter rv.adapter = itemVideoEpisodeAdapter
val list = mutableListOf<EpisodeBean>() val list = mutableListOf<EpisodeBean>()
itemVideoEpisodeAdapter.addChildClickViewIds(R.id.item_tv) itemVideoEpisodeAdapter.addChildClickViewIds(R.id.item_tv)
itemVideoEpisodeAdapter.setOnItemChildClickListener { adapter, view, position -> itemVideoEpisodeAdapter.setOnItemClickListener { adapter, view, position ->
mOnEpisodeClickListener?.onEpisodeClick(position) mOnEpisodeClickListener?.onEpisodeClick(
position
)
} }
list.addAll(item) list.addAll(item)
itemVideoEpisodeAdapter.setNewInstance(list) itemVideoEpisodeAdapter.setNewInstance(list)
......
package com.mints.wisdomclean.ui.adapter package com.mints.wisdomclean.ui.adapter
import android.view.View import android.view.View
import android.widget.TextView
import com.airbnb.lottie.LottieAnimationView import com.airbnb.lottie.LottieAnimationView
import com.airbnb.lottie.LottieComposition import com.airbnb.lottie.LottieComposition
import com.airbnb.lottie.LottieCompositionFactory import com.airbnb.lottie.LottieCompositionFactory
import com.airbnb.lottie.LottieDrawable import com.airbnb.lottie.LottieDrawable
import com.chad.library.adapter.base.BaseQuickAdapter import com.chad.library.adapter.base.BaseQuickAdapter
import com.chad.library.adapter.base.viewholder.BaseViewHolder import com.chad.library.adapter.base.viewholder.BaseViewHolder
import com.mints.library.utils.GlideUtils
import com.mints.wisdomclean.R import com.mints.wisdomclean.R
import com.mints.wisdomclean.mvp.model.WatchRecordBean import com.mints.wisdomclean.mvp.model.VedioBean
/** /**
* @author Assen * @author Assen
...@@ -16,16 +18,29 @@ import com.mints.wisdomclean.mvp.model.WatchRecordBean ...@@ -16,16 +18,29 @@ import com.mints.wisdomclean.mvp.model.WatchRecordBean
* @desc * @desc
*/ */
class WatchRecordAdapter : class WatchRecordAdapter :
BaseQuickAdapter<WatchRecordBean, BaseViewHolder>(R.layout.item_watch_record) { BaseQuickAdapter<VedioBean, BaseViewHolder>(R.layout.item_watch_record) {
override fun convert(holder: BaseViewHolder, item: WatchRecordBean) { override fun convert(holder: BaseViewHolder, item: VedioBean) {
GlideUtils.loadImageViewNoAnim2(context, item.coverImage, holder.getView(R.id.image_iv))
holder.getView<TextView>(R.id.title_tv).text = item.title
holder.getView<TextView>(R.id.info_tv).text = "观看至第${item.seeIndex}集"
if (item.collect == 0) {
// 未收藏
holder.getView<LottieAnimationView>(R.id.iv_collect)
.setImageResource(R.mipmap.home_collect_img_0)
} else {
// 已收藏
holder.getView<LottieAnimationView>(R.id.iv_collect)
.setImageResource(R.mipmap.home_collect_img_1)
}
holder.getView<View>(R.id.ll_collect).setOnClickListener { holder.getView<View>(R.id.ll_collect).setOnClickListener {
if (!item.collect) { if (item.collect == 0) {
// data[holder.layoutPosition].collect = true mOnItemCollectClickListener?.onItemCollectClick(holder.adapterPosition)
playCollectAnim(holder.getView(R.id.iv_collect)) playCollectAnim(holder.getView(R.id.iv_collect))
} else { } else {
// data[holder.layoutPosition].collect = false mOnItemCollectClickListener?.onItemCollectClick(holder.adapterPosition)
playCancelCollectAnim(holder.getView(R.id.iv_collect)) playCancelCollectAnim(holder.getView(R.id.iv_collect))
} }
} }
...@@ -38,11 +53,12 @@ class WatchRecordAdapter : ...@@ -38,11 +53,12 @@ class WatchRecordAdapter :
* @return * @return
*/ */
fun isItemHeader(position: Int): Boolean { fun isItemHeader(position: Int): Boolean {
if (data.size == 0) return false
return if (position == 0) { return if (position == 0) {
true true
} else { } else {
val lastGroupName: String = data[position - 1].group val lastGroupName: String = data[position - 1].topTabsReamrk
val currentGroupName: String = data[position].group val currentGroupName: String = data[position].topTabsReamrk
//判断上一个数据的组别和下一个数据的组别是否一致,如果不一致则是不同组,也就是为第一项(头部) //判断上一个数据的组别和下一个数据的组别是否一致,如果不一致则是不同组,也就是为第一项(头部)
lastGroupName != currentGroupName lastGroupName != currentGroupName
} }
...@@ -55,7 +71,8 @@ class WatchRecordAdapter : ...@@ -55,7 +71,8 @@ class WatchRecordAdapter :
* @return * @return
*/ */
fun getGroupName(position: Int): String { fun getGroupName(position: Int): String {
return data[position].group if (data.size == 0) return ""
return data[position].topTabsReamrk
} }
private fun playCollectAnim(view: LottieAnimationView) { private fun playCollectAnim(view: LottieAnimationView) {
...@@ -82,4 +99,15 @@ class WatchRecordAdapter : ...@@ -82,4 +99,15 @@ class WatchRecordAdapter :
view.setImageDrawable(lottieDrawable) view.setImageDrawable(lottieDrawable)
} }
private var mOnItemCollectClickListener: OnItemCollectClickListener? = null
fun setOnItemCollectClickListener(onItemCollectClickListener: OnItemCollectClickListener) {
this.mOnItemCollectClickListener = onItemCollectClickListener
}
interface OnItemCollectClickListener {
fun onItemCollectClick(position: Int)
}
} }
\ No newline at end of file
...@@ -6,6 +6,7 @@ import android.view.View ...@@ -6,6 +6,7 @@ import android.view.View
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import androidx.recyclerview.widget.GridLayoutManager import androidx.recyclerview.widget.GridLayoutManager
import com.mints.wisdomclean.R import com.mints.wisdomclean.R
import com.mints.wisdomclean.manager.LocalVedioManager
import com.mints.wisdomclean.mvp.model.BannerList import com.mints.wisdomclean.mvp.model.BannerList
import com.mints.wisdomclean.mvp.model.VedioBean import com.mints.wisdomclean.mvp.model.VedioBean
import com.mints.wisdomclean.mvp.presenters.FollowPresenter import com.mints.wisdomclean.mvp.presenters.FollowPresenter
...@@ -25,7 +26,7 @@ class FollowVideoFragment : BaseFragment(), FollowView { ...@@ -25,7 +26,7 @@ class FollowVideoFragment : BaseFragment(), FollowView {
private val followPresenter by lazy { FollowPresenter() } private val followPresenter by lazy { FollowPresenter() }
private val datas = arrayListOf<VedioBean>() private val datas = arrayListOf<VedioBean>()
lateinit var followAdapter: FollowAdapter private var followAdapter: FollowAdapter? = null
companion object { companion object {
fun newInstance(): Fragment { fun newInstance(): Fragment {
...@@ -38,6 +39,7 @@ class FollowVideoFragment : BaseFragment(), FollowView { ...@@ -38,6 +39,7 @@ class FollowVideoFragment : BaseFragment(), FollowView {
override fun onResume() { override fun onResume() {
super.onResume() super.onResume()
followPresenter.getCollectList()
} }
override fun initViewsAndEvents() { override fun initViewsAndEvents() {
...@@ -57,12 +59,18 @@ class FollowVideoFragment : BaseFragment(), FollowView { ...@@ -57,12 +59,18 @@ class FollowVideoFragment : BaseFragment(), FollowView {
} }
rv_follow.layoutManager = GridLayoutManager(requireContext(), 3) rv_follow.layoutManager = GridLayoutManager(requireContext(), 3)
followAdapter = FollowAdapter(requireActivity()) followAdapter = FollowAdapter(requireActivity())
followAdapter.setEmptyView(emptyView) followAdapter?.setEmptyView(emptyView)
followAdapter.setNewInstance(datas) followAdapter?.setNewInstance(datas)
followAdapter?.setOnItemClickListener { adapter, view, position ->
LocalVedioManager.startVedioDetailActivityForType(
requireActivity(),
datas[position]
)
}
rv_follow.adapter = followAdapter rv_follow.adapter = followAdapter
} }
fun getAdapter(): FollowAdapter { fun getAdapter(): FollowAdapter? {
return followAdapter return followAdapter
} }
...@@ -75,23 +83,44 @@ class FollowVideoFragment : BaseFragment(), FollowView { ...@@ -75,23 +83,44 @@ class FollowVideoFragment : BaseFragment(), FollowView {
return datas.isEmpty() return datas.isEmpty()
} }
private fun showEditView(show: Boolean) {
(requireActivity() as MainActivity).showEditView(show)
}
override fun getCollectListSuc(bannerList: BannerList) { override fun getCollectListSuc(bannerList: BannerList) {
datas.clear()
if (bannerList.list.isNotEmpty()) { if (bannerList.list.isNotEmpty()) {
datas.addAll(bannerList.list) datas.addAll(bannerList.list)
followAdapter.setNewInstance(datas) followAdapter?.setNewInstance(datas)
} }
showEditView(true)
followAdapter?.setEditStyle(false)
followAdapter?.notifyDataSetChanged()
} }
override fun getCollectListFail() { override fun getCollectListFail() {
showEditView(false)
} }
override fun cancelCollectSuc() { override fun cancelCollectSuc() {
followPresenter.getCollectList()
(requireActivity() as MainActivity).showEdit(false)
} }
override fun cancelCollectFail() { override fun cancelCollectFail() {
} }
fun delete() {
followAdapter?.let {
val strArr = arrayListOf<String>()
for (datum in it.data) {
if (datum.isChecked) {
strArr.add("" + datum.vedioId)
}
}
followPresenter.cancelCollect(strArr)
}
}
} }
\ No newline at end of file
...@@ -16,6 +16,7 @@ import com.mints.wisdomclean.R ...@@ -16,6 +16,7 @@ import com.mints.wisdomclean.R
import com.mints.wisdomclean.common.AppConfig import com.mints.wisdomclean.common.AppConfig
import com.mints.wisdomclean.common.Constant import com.mints.wisdomclean.common.Constant
import com.mints.wisdomclean.manager.LocalVedioManager import com.mints.wisdomclean.manager.LocalVedioManager
import com.mints.wisdomclean.manager.TrackManager
import com.mints.wisdomclean.manager.UserManager import com.mints.wisdomclean.manager.UserManager
import com.mints.wisdomclean.mvp.model.* import com.mints.wisdomclean.mvp.model.*
import com.mints.wisdomclean.mvp.presenters.HomePresenter import com.mints.wisdomclean.mvp.presenters.HomePresenter
...@@ -43,7 +44,10 @@ import kotlin.concurrent.schedule ...@@ -43,7 +44,10 @@ import kotlin.concurrent.schedule
*/ */
class MainFragment : LazyLoadBaseFragment(), HomeView, View.OnClickListener, OnRefreshListener { class MainFragment : LazyLoadBaseFragment(), HomeView, View.OnClickListener, OnRefreshListener {
private var mSelectTabIndex = -1 companion object {
var mSelectTabIndex = -1
}
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>()
...@@ -80,6 +84,15 @@ class MainFragment : LazyLoadBaseFragment(), HomeView, View.OnClickListener, OnR ...@@ -80,6 +84,15 @@ class MainFragment : LazyLoadBaseFragment(), HomeView, View.OnClickListener, OnR
} }
banner?.start() banner?.start()
setWatchingStatus() setWatchingStatus()
if (TextUtils.isEmpty(userManager?.userID)) {
//获取游客登录数据
homePresenter.userLogin()
} else {
homePresenter.topTabs()
homePresenter.orders()
TrackManager.getInstance().getMyInfo()
}
} }
} }
...@@ -116,12 +129,7 @@ class MainFragment : LazyLoadBaseFragment(), HomeView, View.OnClickListener, OnR ...@@ -116,12 +129,7 @@ class MainFragment : LazyLoadBaseFragment(), HomeView, View.OnClickListener, OnR
requireActivity().runOnUiThread { requireActivity().runOnUiThread {
if (AntiShake.check(rv_main_list?.id)) return@runOnUiThread if (AntiShake.check(rv_main_list?.id)) return@runOnUiThread
if (TextUtils.isEmpty(userManager?.userID)) { if (!TextUtils.isEmpty(userManager?.userID)) {
//获取游客登录数据
homePresenter.userLogin()
} else {
homePresenter.topTabs()
homePresenter.orders()
homePresenter.getHomeV1Types() homePresenter.getHomeV1Types()
} }
} }
...@@ -211,7 +219,7 @@ class MainFragment : LazyLoadBaseFragment(), HomeView, View.OnClickListener, OnR ...@@ -211,7 +219,7 @@ class MainFragment : LazyLoadBaseFragment(), HomeView, View.OnClickListener, OnR
iv_main_watching_pic iv_main_watching_pic
) )
tv_main_watching_name.text = cacheVedio.title tv_main_watching_name.text = cacheVedio.title
tv_main_watching_text1.text = "上次观看至第${cacheVedio.completeStatus}集" tv_main_watching_text1.text = "上次观看至第${cacheVedio.seeIndex}集"
if (cacheVedio.orderTags != null && cacheVedio.orderTags.size > 0) { if (cacheVedio.orderTags != null && cacheVedio.orderTags.size > 0) {
val sb = StringBuilder() val sb = StringBuilder()
for (i in 0 until cacheVedio.orderTags.size) { for (i in 0 until cacheVedio.orderTags.size) {
...@@ -239,7 +247,7 @@ class MainFragment : LazyLoadBaseFragment(), HomeView, View.OnClickListener, OnR ...@@ -239,7 +247,7 @@ class MainFragment : LazyLoadBaseFragment(), HomeView, View.OnClickListener, OnR
bannerList.clear() bannerList.clear()
for (i in 0 until data.list.size) { for (i in 0 until data.list.size) {
val bean = BannerBean() val bean = BannerBean()
bean.title = data.list.get(i).title bean.title = data.list.get(i).topTabsReamrk
bean.imageRes = data.list.get(i).coverImage bean.imageRes = data.list.get(i).coverImage
bannerList.add(bean) bannerList.add(bean)
} }
...@@ -262,4 +270,13 @@ class MainFragment : LazyLoadBaseFragment(), HomeView, View.OnClickListener, OnR ...@@ -262,4 +270,13 @@ class MainFragment : LazyLoadBaseFragment(), HomeView, View.OnClickListener, OnR
} }
topAdapter?.notifyDataSetChanged() topAdapter?.notifyDataSetChanged()
} }
override fun onHiddenChanged(hidden: Boolean) {
super.onHiddenChanged(hidden)
if (isHidden) {
vpAdapter?.getFragments()?.get(mSelectTabIndex)?.onPause()
} else {
vpAdapter?.getFragments()?.get(mSelectTabIndex)?.onResume()
}
}
} }
\ No newline at end of file
...@@ -47,29 +47,20 @@ class MovieFragment : LazyLoadBaseFragment(), PicContentView, OnLoadMoreListener ...@@ -47,29 +47,20 @@ class MovieFragment : LazyLoadBaseFragment(), PicContentView, OnLoadMoreListener
override fun getContentViewLayoutID() = R.layout.fragment_movie override fun getContentViewLayoutID() = R.layout.fragment_movie
override fun initViewsAndEvents() { override fun initViewsAndEvents() {
arguments?.let {
mType = it.getInt(VIDEO_TYPE, mType)
mPosition = it.getInt(VIDEO_POSITION, mPosition)
}
}
override fun onFragmentFirstVisible() {
super.onFragmentFirstVisible()
picContentPresenter.attachView(this) picContentPresenter.attachView(this)
initView() initView()
initListener() initListener()
onRefresh() arguments?.let {
mType = it.getInt(VIDEO_TYPE, mType)
mPosition = it.getInt(VIDEO_POSITION, mPosition)
}
} }
override fun onHiddenChanged(hidden: Boolean) { override fun onResume() {
if (hidden) { // 不在最前端界面显示 super.onResume()
onPause() onRefresh()
} else { // 重新显示到最前端中
onResume()
}
super.onHiddenChanged(hidden)
} }
override fun onDestroy() { override fun onDestroy() {
......
...@@ -14,7 +14,6 @@ import com.mints.wisdomclean.ui.activitys.* ...@@ -14,7 +14,6 @@ import com.mints.wisdomclean.ui.activitys.*
import com.mints.wisdomclean.ui.fragment.base.BaseFragment import com.mints.wisdomclean.ui.fragment.base.BaseFragment
import com.mints.wisdomclean.utils.SpanUtils import com.mints.wisdomclean.utils.SpanUtils
import com.mints.wisdomclean.utils.TimeRender import com.mints.wisdomclean.utils.TimeRender
import com.mints.wisdomclean.video.DPHolderManager
import kotlinx.android.synthetic.main.fragment_main_my.* import kotlinx.android.synthetic.main.fragment_main_my.*
/** /**
......
...@@ -10,9 +10,11 @@ import com.google.android.material.tabs.TabLayoutMediator ...@@ -10,9 +10,11 @@ import com.google.android.material.tabs.TabLayoutMediator
import com.mints.wisdomclean.R import com.mints.wisdomclean.R
import com.mints.wisdomclean.common.AppConfig import com.mints.wisdomclean.common.AppConfig
import com.mints.wisdomclean.common.Constant import com.mints.wisdomclean.common.Constant
import com.mints.wisdomclean.manager.UserManager
import com.mints.wisdomclean.ui.activitys.MainActivity import com.mints.wisdomclean.ui.activitys.MainActivity
import com.mints.wisdomclean.ui.adapter.RecommendPageAdapter import com.mints.wisdomclean.ui.adapter.RecommendPageAdapter
import com.mints.wisdomclean.ui.fragment.base.BaseFragment import com.mints.wisdomclean.ui.fragment.base.BaseFragment
import com.mints.wisdomclean.video.DramaTabFragment
import kotlinx.android.synthetic.main.fragment_recommend.* import kotlinx.android.synthetic.main.fragment_recommend.*
/** /**
...@@ -22,6 +24,8 @@ import kotlinx.android.synthetic.main.fragment_recommend.* ...@@ -22,6 +24,8 @@ import kotlinx.android.synthetic.main.fragment_recommend.*
*/ */
class RecommendFragment : BaseFragment(), View.OnClickListener { class RecommendFragment : BaseFragment(), View.OnClickListener {
private var mCurrentNewFlag = false
private var mSelectTabIndex = -1 private var mSelectTabIndex = -1
private val tabsData = mutableListOf<String>() private val tabsData = mutableListOf<String>()
private val fragments = mutableListOf<Fragment>() private val fragments = mutableListOf<Fragment>()
...@@ -37,11 +41,19 @@ class RecommendFragment : BaseFragment(), View.OnClickListener { ...@@ -37,11 +41,19 @@ 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()
tabsData.add("追剧") tabsData.add("追剧")
tabsData.add("推荐") tabsData.add("推荐")
fragments.add(FollowVideoFragment.newInstance()) fragments.clear()
fragments.add(WatchVideoFragment.newInstance()) if (mCurrentNewFlag) {
fragments.add(FollowVideoFragment.newInstance())
fragments.add(WatchVideoFragment.newInstance())
} else {
fragments.add(FollowVideoFragment.newInstance())
fragments.add(DramaTabFragment())
}
vpAdapter = RecommendPageAdapter(fragments, this) vpAdapter = RecommendPageAdapter(fragments, this)
vp2_recommend.adapter = vpAdapter vp2_recommend.adapter = vpAdapter
...@@ -132,6 +144,11 @@ class RecommendFragment : BaseFragment(), View.OnClickListener { ...@@ -132,6 +144,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) {
mCurrentNewFlag = UserManager.getInstance().newFlag
// 重置状态
initVp2()
}
} }
} }
...@@ -147,7 +164,7 @@ class RecommendFragment : BaseFragment(), View.OnClickListener { ...@@ -147,7 +164,7 @@ class RecommendFragment : BaseFragment(), View.OnClickListener {
} }
} }
private fun handleEditStyle(isEdit: Boolean) { fun handleEditStyle(isEdit: Boolean) {
if (isEdit) { if (isEdit) {
// 禁止滑动 // 禁止滑动
vp2_recommend.isUserInputEnabled = false vp2_recommend.isUserInputEnabled = false
...@@ -164,15 +181,26 @@ class RecommendFragment : BaseFragment(), View.OnClickListener { ...@@ -164,15 +181,26 @@ class RecommendFragment : BaseFragment(), View.OnClickListener {
tv_edit_text.visibility = View.GONE tv_edit_text.visibility = View.GONE
} }
(requireActivity() as MainActivity).showEdit(isEdit) (requireActivity() as MainActivity).showEdit(isEdit)
(fragments[0] as FollowVideoFragment).getAdapter().setEditStyle(isEdit) (fragments[0] as FollowVideoFragment).getAdapter()?.setEditStyle(isEdit)
} }
private fun changeBottomTabColor(showBlack: Boolean) { private fun changeBottomTabColor(showBlack: Boolean) {
(requireActivity() as MainActivity).showBlack(showBlack) (requireActivity() as MainActivity).showBlack(showBlack)
} }
fun showEditView(show: Boolean) {
handleEditStyle(!show)
// if (show) {
// iv_edit_close.visibility = View.GONE
// iv_edit.visibility = View.VISIBLE
// } else {
// iv_edit_close.visibility = View.VISIBLE
// iv_edit.visibility = View.GONE
// }
}
fun fullChoice() { fun fullChoice() {
(fragments[0] as FollowVideoFragment).getAdapter().fullChoice() (fragments[0] as FollowVideoFragment).getAdapter()?.fullChoice()
} }
fun changeTab(index: Int) { fun changeTab(index: Int) {
...@@ -180,11 +208,12 @@ class RecommendFragment : BaseFragment(), View.OnClickListener { ...@@ -180,11 +208,12 @@ class RecommendFragment : BaseFragment(), View.OnClickListener {
} }
fun delete() { fun delete() {
(fragments[0] as FollowVideoFragment).delete()
} }
override fun onHiddenChanged(hidden: Boolean) { override fun onHiddenChanged(hidden: Boolean) {
super.onHiddenChanged(hidden) super.onHiddenChanged(hidden)
fragments[1].onHiddenChanged(hidden)
// 传递生命周期 // 传递生命周期
if (hidden) { if (hidden) {
fragments[1].onPause() fragments[1].onPause()
......
...@@ -104,7 +104,7 @@ public class CycleProgress extends View { ...@@ -104,7 +104,7 @@ public class CycleProgress extends View {
pathMeasure.getSegment(0, pathMeasure.getLength() * mAnimatorValue, dstPath, true); pathMeasure.getSegment(0, pathMeasure.getLength() * mAnimatorValue, dstPath, true);
//渐变 //渐变
Shader mShader = new LinearGradient(mStrokeWidth / 2, mStrokeWidth / 2, mProgressWidth, mHeight - mStrokeWidth / 2, Shader mShader = new LinearGradient(mStrokeWidth / 2, mStrokeWidth / 2, mProgressWidth, mHeight - mStrokeWidth / 2,
Color.parseColor("#08DA9B"), Color.parseColor("#3ADAFA"), Shader.TileMode.REPEAT); Color.parseColor("#F96856"), Color.parseColor("#EC325C"), Shader.TileMode.REPEAT);
//遮罩 //遮罩
mProgressPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN)); mProgressPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));
mProgressPaint.setShader(mShader); mProgressPaint.setShader(mShader);
......
package com.mints.wisdomclean.ui.widgets
import android.content.Context
import android.util.AttributeSet
import android.view.MotionEvent
import android.view.View
import android.view.ViewConfiguration
import android.widget.FrameLayout
import androidx.viewpager2.widget.ViewPager2
import androidx.viewpager2.widget.ViewPager2.ORIENTATION_HORIZONTAL
import kotlin.math.absoluteValue
import kotlin.math.sign
class NestedScrollableHost : FrameLayout {
constructor(context: Context) : super(context)
constructor(context: Context, attrs: AttributeSet?) : super(context, attrs)
private var touchSlop = 0
private var initialX = 0f
private var initialY = 0f
//循环遍历找到viewPager2
private val parentViewPager: ViewPager2?
get() {
var v: View? = parent as? View
while (v != null && v !is ViewPager2) {
v = v.parent as? View
}
return v as? ViewPager2
}
//找到子RecyclerView
private val child: View? get() = if (childCount > 0) getChildAt(0) else null
init {
//最小滑动距离
touchSlop = ViewConfiguration.get(context).scaledTouchSlop
}
private fun canChildScroll(orientation: Int, delta: Float): Boolean {
val direction = -delta.sign.toInt()
return when (orientation) {
//判断子RecyclerView在水平方向是否可以滑动deltaX
0 -> child?.canScrollHorizontally(direction) ?: false
//判断子RecyclerView在竖直方向是否可以滑动deltaY
1 -> child?.canScrollVertically(direction) ?: false
else -> throw IllegalArgumentException()
}
}
override fun onInterceptTouchEvent(e: MotionEvent): Boolean {
handleInterceptTouchEvent(e)
return super.onInterceptTouchEvent(e)
}
private fun handleInterceptTouchEvent(e: MotionEvent) {
val orientation = parentViewPager?.orientation ?: return
//如果子RecyclerView在viewPager2的滑动方向上不能滑动直接返回
if (!canChildScroll(orientation, -1f) && !canChildScroll(orientation, 1f)) {
return
}
if (e.action == MotionEvent.ACTION_DOWN) {
initialX = e.x
initialY = e.y
//down事件直接强制禁止父view拦截事件,后续事件先交给子RecyclerView先判断是否能够消费
//如果这一块不强制禁止父view会导致后续事件可能直接没到子RecyclerView就被父view拦截了
//默认RecyclerView onTouchEvent返回true但是viewPager2会在onInterceptTouchEvent拦截住
parent.requestDisallowInterceptTouchEvent(true)
} else if (e.action == MotionEvent.ACTION_MOVE) {
//计算手指滑动距离
val dx = e.x - initialX
val dy = e.y - initialY
val isVpHorizontal = orientation == ORIENTATION_HORIZONTAL
val scaledDx = dx.absoluteValue * if (isVpHorizontal) .5f else 1f
val scaledDy = dy.absoluteValue * if (isVpHorizontal) 1f else .5f
//滑动距离超过最小滑动值
if (scaledDx > touchSlop || scaledDy > touchSlop) {
if (isVpHorizontal == (scaledDy > scaledDx)) {
//如果viewPager2是横向滑动但手势是竖直方向滑动,则允许所有父类拦截
parent.requestDisallowInterceptTouchEvent(false)
} else {
//手势滑动方向和viewPage2是同方向的,需要询问子RecyclerView是否在同方向能滑动
if (canChildScroll(orientation, if (isVpHorizontal) dx else dy)) {
//子RecyclerView能滑动直接禁止父view拦截事件
parent.requestDisallowInterceptTouchEvent(true)
} else {
//子RecyclerView不能滑动(划到第一个Item还往右滑或者划到最后面一个Item还往左划的时候)允许父view拦截
parent.requestDisallowInterceptTouchEvent(false)
}
}
}
}
}
}
...@@ -35,7 +35,7 @@ public class StickHeaderDecoration extends RecyclerView.ItemDecoration { ...@@ -35,7 +35,7 @@ public class StickHeaderDecoration extends RecyclerView.ItemDecoration {
public StickHeaderDecoration(Context context) { public StickHeaderDecoration(Context context) {
mItemHeaderHeight = dp2px(context, 40); mItemHeaderHeight = dp2px(context, 40);
mTextPaddingLeft = dp2px(context, 6); mTextPaddingLeft = dp2px(context, 10);
mTextRect = new Rect(); mTextRect = new Rect();
...@@ -74,7 +74,7 @@ public class StickHeaderDecoration extends RecyclerView.ItemDecoration { ...@@ -74,7 +74,7 @@ public class StickHeaderDecoration extends RecyclerView.ItemDecoration {
mTextPaint.getTextBounds(adapter.getGroupName(position), 0, adapter.getGroupName(position).length(), mTextRect); mTextPaint.getTextBounds(adapter.getGroupName(position), 0, adapter.getGroupName(position).length(), mTextRect);
c.drawText(adapter.getGroupName(position), left + mTextPaddingLeft, (view.getTop() - mItemHeaderHeight) + mItemHeaderHeight / 2 + mTextRect.height() / 2, mTextPaint); c.drawText(adapter.getGroupName(position), left + mTextPaddingLeft, (view.getTop() - mItemHeaderHeight) + mItemHeaderHeight / 2 + mTextRect.height() / 2, mTextPaint);
} else { } else {
c.drawRect(left, view.getTop() - 1, right, view.getTop(), mLinePaint); // c.drawRect(left, view.getTop() - 1, right, view.getTop(), mLinePaint);
} }
} }
} }
......
...@@ -11,7 +11,7 @@ import com.google.android.material.tabs.TabLayout ...@@ -11,7 +11,7 @@ import com.google.android.material.tabs.TabLayout
import com.google.android.material.tabs.TabLayoutMediator import com.google.android.material.tabs.TabLayoutMediator
import com.mints.wisdomclean.R import com.mints.wisdomclean.R
import com.mints.wisdomclean.mvp.model.EpisodeBean import com.mints.wisdomclean.mvp.model.EpisodeBean
import com.mints.wisdomclean.mvp.model.IndexList import com.mints.wisdomclean.mvp.model.VedioBean
import com.mints.wisdomclean.ui.adapter.VideoEpisodeAdapter import com.mints.wisdomclean.ui.adapter.VideoEpisodeAdapter
import com.mints.wisdomclean.utils.CommonUtils import com.mints.wisdomclean.utils.CommonUtils
...@@ -22,7 +22,7 @@ import com.mints.wisdomclean.utils.CommonUtils ...@@ -22,7 +22,7 @@ import com.mints.wisdomclean.utils.CommonUtils
*/ */
class VideoEpisodeDialog( class VideoEpisodeDialog(
context: Context, context: Context,
val indexList: IndexList?, val vedioBean: VedioBean?,
private val listener: DialogListener private val listener: DialogListener
) : ) :
Dialog(context, R.style.dialog) { Dialog(context, R.style.dialog) {
...@@ -61,22 +61,21 @@ class VideoEpisodeDialog( ...@@ -61,22 +61,21 @@ class VideoEpisodeDialog(
ivClose = findViewById(R.id.close_iv) ivClose = findViewById(R.id.close_iv)
ivClose.setOnClickListener(listener) ivClose.setOnClickListener(listener)
findViewById<TextView>(R.id.title_tv).text = indexList?.vedioMsg?.title findViewById<TextView>(R.id.title_tv).text = vedioBean?.title
findViewById<TextView>(R.id.label_tv).text = findViewById<TextView>(R.id.label_tv).text =
if (indexList?.vedioMsg?.completeStatus == 0) "已完结" else "未完结" if (vedioBean?.completeStatus == 0) "已完结" else "更新中"
initVp() initVp()
} }
private fun initVp() { private fun initVp() {
for (i in 0 until indexList!!.vedioMsg.vedioTotal) { for (i in 0 until vedioBean!!.vedioTotal) {
if (i < indexList.list.size) { if (i < vedioBean.unlockIndex) {
val index = indexList.list[i]
var playing = false var playing = false
if (indexList.vedioMsg.seeIndex == i) { if (vedioBean.seeIndex == i) {
playing = true playing = true
} }
mData.add(EpisodeBean(index.isLock, playing, "" + (i + 1))) mData.add(EpisodeBean(false, playing, "" + (i + 1)))
} else { } else {
mData.add(EpisodeBean(lock = true, playing = false, title = "" + (i + 1))) mData.add(EpisodeBean(lock = true, playing = false, title = "" + (i + 1)))
} }
...@@ -130,6 +129,13 @@ class VideoEpisodeDialog( ...@@ -130,6 +129,13 @@ class VideoEpisodeDialog(
} }
} }
fun changeLockStatus(unlockIndex: Int) {
for (i in 0 until mData.size) {
mData[i].lock = i > unlockIndex
}
adapter?.notifyDataSetChanged()
}
fun setCurrentIndex(position: Int) { fun setCurrentIndex(position: Int) {
for (mDatum in mData) { for (mDatum in mData) {
mDatum.playing = false mDatum.playing = false
......
package com.mints.wisdomclean.ui.widgets
import android.app.Activity
import android.app.Dialog
import android.content.Intent
import android.view.Gravity
import android.view.KeyEvent
import android.view.View
import android.view.WindowManager
import android.widget.TextView
import com.mints.wisdomclean.R
import com.mints.wisdomclean.ui.activitys.VipActivity
import com.mints.wisdomclean.ui.widgets.countdowntimer.CountDownTimerSupport
import com.mints.wisdomclean.ui.widgets.countdowntimer.OnCountDownTimerListener
class VipCountDialog(activity: Activity) : Dialog(activity, R.style.dialog) {
private val lp: WindowManager.LayoutParams
var timer: CountDownTimerSupport? = null
init {
setContentView(R.layout.dialog_vip_count)
// 设置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 fm = findViewById<View>(R.id.fm)
val text_count = findViewById<TextView>(R.id.text_count)
timer = CountDownTimerSupport(3000L, 1000)
timer?.setOnCountDownTimerListener(object : OnCountDownTimerListener {
override fun onTick(millisUntilFinished: Long) {
text_count.text = (millisUntilFinished / 1000L).toString()
}
override fun onFinish() {
dismiss()
}
})
timer?.start()
fm.setOnClickListener {
activity.startActivity(Intent(activity, VipActivity::class.java))
dismiss()
}
}
override fun dismiss() {
super.dismiss()
this.mOnDialogDismiss?.onDialogDismiss()
}
override fun onDetachedFromWindow() {
super.onDetachedFromWindow()
timer?.stop()
timer = null
}
private var mOnDialogDismiss: OnDialogDismiss? = null
fun setOnDialogDismiss(onDialogDismiss: OnDialogDismiss): Dialog {
this.mOnDialogDismiss = onDialogDismiss
return this
}
interface OnDialogDismiss {
fun onDialogDismiss()
}
}
\ No newline at end of file
package com.mints.wisdomclean.utils;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;
public class TimeHelp {
public static String format(long timeMillis) {
return format(new Date(timeMillis));
}
private static String format(Date date) {
Calendar calendar = Calendar.getInstance();
//当前年
int currYear = calendar.get(Calendar.YEAR);
//当前日
int currDay = calendar.get(Calendar.DAY_OF_YEAR);
//当前时
int currHour = calendar.get(Calendar.HOUR_OF_DAY);
//当前分
int currMinute = calendar.get(Calendar.MINUTE);
//当前秒
int currSecond = calendar.get(Calendar.SECOND);
calendar.setTime(date);
int msgYear = calendar.get(Calendar.YEAR);
//说明不是同一年
if (currYear != msgYear) {
return new SimpleDateFormat("yyyy年MM月dd日", Locale.getDefault()).format(date);
}
int msgDay = calendar.get(Calendar.DAY_OF_YEAR);
//超过7天,直接显示xx月xx日
if (currDay - msgDay > 7) {
return new SimpleDateFormat("MM月dd日", Locale.getDefault()).format(date);
}
//不是当天
if (currDay - msgDay > 0) {
if (currDay - msgDay == 1) {
return "昨天";
} else {
return currDay - msgDay + "天前";
}
}
int msgHour = calendar.get(Calendar.HOUR_OF_DAY);
int msgMinute = calendar.get(Calendar.MINUTE);
//不是当前小时内
if (currHour - msgHour > 0) {
//如果当前分钟小,说明最后一个不满一小时
if (currMinute < msgMinute) {
if (currHour - msgHour == 1) {//当前只大一个小时值,说明不够一小时
return 60 - msgMinute + currMinute + "分钟前";
} else {
return currHour - msgHour - 1 + "小时前";
}
}
//如果当前分钟数大,够了一个周期
return currHour - msgHour + "小时前";
}
int msgSecond = calendar.get(Calendar.SECOND);
//不是当前分钟内
if (currMinute - msgMinute > 0) {
//如果当前秒数小,说明最后一个不满一分钟
if (currSecond < msgSecond) {
if (currMinute - msgMinute == 1) {//当前只大一个分钟值,说明不够一分钟
return "刚刚";
} else {
return currMinute - msgMinute - 1 + "分钟前";
}
}
//如果当前秒数大,够了一个周期
return currMinute - msgMinute + "分钟前";
}
//x秒前
return "刚刚";
}
}
\ No newline at end of file
package com.mints.wisdomclean.video package com.mints.wisdomclean.video
import android.os.Bundle
import android.util.Log import android.util.Log
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import com.bytedance.sdk.dp.DPDramaDetailConfig import com.bytedance.sdk.dp.DPDramaDetailConfig
import com.bytedance.sdk.dp.DPSdk import com.bytedance.sdk.dp.DPSdk
...@@ -14,19 +10,22 @@ import com.bytedance.sdk.dp.IDPDramaListener ...@@ -14,19 +10,22 @@ import com.bytedance.sdk.dp.IDPDramaListener
import com.bytedance.sdk.dp.IDPDrawListener import com.bytedance.sdk.dp.IDPDrawListener
import com.bytedance.sdk.dp.IDPWidget import com.bytedance.sdk.dp.IDPWidget
import com.mints.wisdomclean.R import com.mints.wisdomclean.R
import com.mints.wisdomclean.manager.LocalVedioManager
import com.mints.wisdomclean.mvp.model.IndexList
import com.mints.wisdomclean.mvp.presenters.VideoPresenter
import com.mints.wisdomclean.mvp.views.VideoView
import com.mints.wisdomclean.ui.fragment.base.BaseFragment import com.mints.wisdomclean.ui.fragment.base.BaseFragment
/** /**
* Created by limingqi on 2023/1/17 * Created by limingqi on 2023/1/17
*/ */
class DramaTabFragment : BaseFragment() { class DramaTabFragment : BaseFragment(), VideoView {
companion object { private val videoPresenter by lazy { VideoPresenter() }
private const val TAG = "DramaTabFragment"
private const val FREE_SET = -1 companion object {
private const val LOCK_SET = -1 private const val TAG = "DramaTabFragment"
} }
private var dpWidget: IDPWidget? = null private var dpWidget: IDPWidget? = null
...@@ -42,6 +41,8 @@ class DramaTabFragment : BaseFragment() { ...@@ -42,6 +41,8 @@ class DramaTabFragment : BaseFragment() {
override fun getContentViewLayoutID() = R.layout.drama_home_frag_wrapper override fun getContentViewLayoutID() = R.layout.drama_home_frag_wrapper
private fun init() { private fun init() {
videoPresenter.attachView(this)
if (isInited) { if (isInited) {
return return
} }
...@@ -57,15 +58,16 @@ class DramaTabFragment : BaseFragment() { ...@@ -57,15 +58,16 @@ class DramaTabFragment : BaseFragment() {
return return
} }
val dramaDetailConfig = DPDramaDetailConfig.obtain(DPDramaDetailConfig.COMMON_DETAIL) val dramaDetailConfig = DPDramaDetailConfig.obtain(DPDramaDetailConfig.SPECIFIC_DETAIL)
.freeSet(FREE_SET) .setEnterDelegate { context, drama, current ->
.lockSet(LOCK_SET) DramaApiDetailActivity.outerDrama = drama
videoPresenter.getIndexList("" + drama.id, true)
}
.hideMore(false) .hideMore(false)
.hideLeftTopTips(false, null) .hideLeftTopTips(false, null)
.listener(dramaListener) // 短剧详情页视频播放回调 .listener(dramaListener) // 短剧详情页视频播放回调
.adListener(dramaAdListener) // 短剧详情页激励视频回调 .adListener(dramaAdListener) // 短剧详情页激励视频回调
dpWidget = DPSdk.factory().createDraw( dpWidget = DPSdk.factory().createDraw(
DPWidgetDrawParams.obtain() DPWidgetDrawParams.obtain()
.adOffset(0) //单位 dp,为 0 时可以不设置 .adOffset(0) //单位 dp,为 0 时可以不设置
...@@ -338,5 +340,41 @@ class DramaTabFragment : BaseFragment() { ...@@ -338,5 +340,41 @@ class DramaTabFragment : BaseFragment() {
} }
} }
override fun onDestroy() {
super.onDestroy()
videoPresenter.detachView()
}
override fun getIndexListSuc(indexList: IndexList) {
LocalVedioManager.startVedioDetailActivityForType(
requireActivity(),
indexList.vedioMsg,
true,
isThirdId = true
)
}
override fun getIndexListFail() {
showToast("网络错误!")
}
override fun collectSuc() {
}
override fun collectFail() {
}
override fun cancelCollectSuc() {
}
override fun cancelCollectFail() {
}
override fun unlockSuc(indexList: IndexList) {
}
override fun unlockFail() {
}
} }
\ No newline at end of file
...@@ -13,7 +13,6 @@ import com.bytedance.sdk.dp.IDPDrawListener ...@@ -13,7 +13,6 @@ import com.bytedance.sdk.dp.IDPDrawListener
import com.bytedance.sdk.dp.IDPWidget import com.bytedance.sdk.dp.IDPWidget
import com.mints.wisdomclean.R import com.mints.wisdomclean.R
import com.mints.wisdomclean.ui.fragment.base.BaseFragment import com.mints.wisdomclean.ui.fragment.base.BaseFragment
import com.mints.wisdomclean.video.DramaApiDetailActivity.Companion.KEY_DRAMA_UNLOCK_INDEX
/** /**
* Created by limingqi on 2023/5/10 * Created by limingqi on 2023/5/10
...@@ -93,7 +92,6 @@ class DrawDramaFragment : BaseFragment() { ...@@ -93,7 +92,6 @@ class DrawDramaFragment : BaseFragment() {
val intent = Intent(context, DramaApiDetailActivity::class.java) val intent = Intent(context, DramaApiDetailActivity::class.java)
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
DramaApiDetailActivity.outerDrama = drama DramaApiDetailActivity.outerDrama = drama
intent.putExtra(KEY_DRAMA_UNLOCK_INDEX, 100)
context.startActivity(intent) context.startActivity(intent)
} }
.freeSet(FREE_SET) .freeSet(FREE_SET)
......
...@@ -14,6 +14,7 @@ import com.chad.library.adapter.base.BaseQuickAdapter ...@@ -14,6 +14,7 @@ import com.chad.library.adapter.base.BaseQuickAdapter
import com.chad.library.adapter.base.viewholder.BaseViewHolder import com.chad.library.adapter.base.viewholder.BaseViewHolder
import com.mints.wisdomclean.MintsApplication import com.mints.wisdomclean.MintsApplication
import com.mints.wisdomclean.R import com.mints.wisdomclean.R
import com.mints.wisdomclean.mvp.model.VedioBean
/** /**
* author : ChenWenJie * author : ChenWenJie
...@@ -22,17 +23,27 @@ import com.mints.wisdomclean.R ...@@ -22,17 +23,27 @@ import com.mints.wisdomclean.R
* desc : 适配器 * desc : 适配器
*/ */
class RecommendVideoAdapter(var activity: Activity) : class RecommendVideoAdapter(var activity: Activity) :
BaseQuickAdapter<VideoBean, BaseViewHolder>(R.layout.item_video_recommend) { BaseQuickAdapter<VedioBean, BaseViewHolder>(R.layout.item_video_recommend) {
override fun convert(holder: BaseViewHolder, item: VideoBean) { override fun convert(holder: BaseViewHolder, item: VedioBean) {
//用户名 //用户名
holder.setText(R.id.username_tv, item.user_name) holder.setText(R.id.username_tv, item.title)
//标题 //标题
holder.setText(R.id.usertitle_tv, item.video_title) holder.setText(R.id.usertitle_tv, "第" + item.recommendIndex + "集")
//缩略图 //缩略图
Glide.with(activity).load(item.video_image) Glide.with(activity).load(item.coverImage)
.into(holder.getView<JzvdStdTikTok>(R.id.jz_video).posterImageView) .into(holder.getView<JzvdStdTikTok>(R.id.jz_video).posterImageView)
if (item.collect == 0) {
// 未收藏
holder.getView<LottieAnimationView>(R.id.iv_collect)
.setImageResource(R.mipmap.home_collect_img_0)
} else {
// 已收藏
holder.getView<LottieAnimationView>(R.id.iv_collect)
.setImageResource(R.mipmap.home_collect_img_1)
}
var isPlay = false var isPlay = false
holder.getView<View>(R.id.ll_collect).setOnClickListener { holder.getView<View>(R.id.ll_collect).setOnClickListener {
isPlay = !isPlay isPlay = !isPlay
...@@ -49,11 +60,11 @@ class RecommendVideoAdapter(var activity: Activity) : ...@@ -49,11 +60,11 @@ class RecommendVideoAdapter(var activity: Activity) :
if (holder.layoutPosition + 1 < itemCount) { if (holder.layoutPosition + 1 < itemCount) {
val item1 = getItem(holder.layoutPosition + 1) val item1 = getItem(holder.layoutPosition + 1)
//缓存下一个 10秒 //缓存下一个 10秒
proxy!!.preLoad(item1.video_path, 10) proxy!!.preLoad(item1.recommendUrl, 10)
} }
//缓存当前,播放当前 //缓存当前,播放当前
val proxyUrl = proxy?.getProxyUrl(item.video_path).toString() //设置视 val proxyUrl = proxy?.getProxyUrl(item.recommendUrl).toString() //设置视
setPlay(holder.getView(R.id.jz_video), proxyUrl) setPlay(holder.getView(R.id.jz_video), proxyUrl)
} }
......
...@@ -14,6 +14,7 @@ import com.google.gson.Gson ...@@ -14,6 +14,7 @@ import com.google.gson.Gson
import com.mints.wisdomclean.R import com.mints.wisdomclean.R
import com.mints.wisdomclean.ad.AdManager import com.mints.wisdomclean.ad.AdManager
import com.mints.wisdomclean.ad.AdStatusListener import com.mints.wisdomclean.ad.AdStatusListener
import com.mints.wisdomclean.ad.NoPreAdManager
import com.mints.wisdomclean.common.Constant import com.mints.wisdomclean.common.Constant
import com.mints.wisdomclean.manager.LocalVedioManager import com.mints.wisdomclean.manager.LocalVedioManager
import com.mints.wisdomclean.mvp.model.IndexList import com.mints.wisdomclean.mvp.model.IndexList
...@@ -27,6 +28,7 @@ import com.mints.wisdomclean.ui.activitys.base.BaseActivity ...@@ -27,6 +28,7 @@ import com.mints.wisdomclean.ui.activitys.base.BaseActivity
import com.mints.wisdomclean.ui.adapter.VideoEpisodeAdapter import com.mints.wisdomclean.ui.adapter.VideoEpisodeAdapter
import com.mints.wisdomclean.ui.widgets.DialogListener import com.mints.wisdomclean.ui.widgets.DialogListener
import com.mints.wisdomclean.ui.widgets.VideoEpisodeDialog import com.mints.wisdomclean.ui.widgets.VideoEpisodeDialog
import com.mints.wisdomclean.ui.widgets.VipCountDialog
import kotlinx.android.synthetic.main.activity_video.* import kotlinx.android.synthetic.main.activity_video.*
import java.util.HashMap import java.util.HashMap
...@@ -44,18 +46,24 @@ class VideoActivity : BaseActivity(), View.OnClickListener, VideoView, ...@@ -44,18 +46,24 @@ class VideoActivity : BaseActivity(), View.OnClickListener, VideoView,
private var mVedioBean: VedioBean? = null private var mVedioBean: VedioBean? = null
private var indexBean: IndexList? = null private var indexBean: IndexList? = null
private var isPlayNext = false
private var playIndex = 1
override fun getContentViewLayoutID() = R.layout.activity_video override fun getContentViewLayoutID() = R.layout.activity_video
override fun initViewsAndEvents() { override fun initViewsAndEvents() {
videoPresenter.attachView(this) videoPresenter.attachView(this)
mVedioBean?.let { videoPresenter.getIndexList("" + it.vedioId) } mVedioBean?.let { videoPresenter.getIndexList("" + it.vedioId) }
if (isPlayNext) {
playIndex = mVedioBean!!.recommendIndex
}
initView() initView()
} }
override fun getBundleExtras(extras: Bundle?) { override fun getBundleExtras(extras: Bundle?) {
val json = extras?.getString(Constant.VEDIO_BEAN) val json = extras?.getString(Constant.VEDIO_BEAN)
isPlayNext = extras?.getBoolean(Constant.VEDIO_NEXT, false) == true
mVedioBean = Gson().fromJson(json, VedioBean::class.java) mVedioBean = Gson().fromJson(json, VedioBean::class.java)
super.getBundleExtras(extras) super.getBundleExtras(extras)
...@@ -83,10 +91,11 @@ class VideoActivity : BaseActivity(), View.OnClickListener, VideoView, ...@@ -83,10 +91,11 @@ class VideoActivity : BaseActivity(), View.OnClickListener, VideoView,
fun initView() { fun initView() {
mVedioBean?.let { mVedioBean?.let {
episode_tv.text = episode_tv.text =
"共" + it.vedioTotal + "集" + if (it.completeStatus == 0) "已完结" else "更新中" + " >" "共" + it.vedioTotal + "集" + if (it.completeStatus == 0) "已完结" else "更新中"
} }
fm_bottom.setOnClickListener(this) fm_bottom.setOnClickListener(this)
close_iv.setOnClickListener(this)
val recyViewLayoutManager = RecyViewLayoutManager(this, OrientationHelper.VERTICAL) val recyViewLayoutManager = RecyViewLayoutManager(this, OrientationHelper.VERTICAL)
recy.layoutManager = recyViewLayoutManager recy.layoutManager = recyViewLayoutManager
...@@ -96,8 +105,6 @@ class VideoActivity : BaseActivity(), View.OnClickListener, VideoView, ...@@ -96,8 +105,6 @@ class VideoActivity : BaseActivity(), View.OnClickListener, VideoView,
adapter.setNewInstance(getAdapterData()) adapter.setNewInstance(getAdapterData())
val emptyView = LayoutInflater.from(this).inflate(R.layout.item_empty_video, null) val emptyView = LayoutInflater.from(this).inflate(R.layout.item_empty_video, null)
adapter.setEmptyView(emptyView) adapter.setEmptyView(emptyView)
//指定位置其他页面跳转过来。直接定位指定posion 这里不需要。
// recy.scrollToPosition(postion);
adapter.setOnCustomChildClickListener(this) adapter.setOnCustomChildClickListener(this)
adapter.setOnVideoCompletion(object : JzvdStdTikTok.OnVideoCompletion { adapter.setOnVideoCompletion(object : JzvdStdTikTok.OnVideoCompletion {
...@@ -109,7 +116,8 @@ class VideoActivity : BaseActivity(), View.OnClickListener, VideoView, ...@@ -109,7 +116,8 @@ class VideoActivity : BaseActivity(), View.OnClickListener, VideoView,
override fun onInitComplete() { override fun onInitComplete() {
dialog?.setCurrentIndex(mCurrentPosition) dialog?.setCurrentIndex(mCurrentPosition)
//初始化 自动播放 //初始化 自动播放
autoPlayVideo() // autoPlayVideo()
showVipCountDialog(mCurrentPosition)
} }
override fun onPageRelease(isNext: Boolean, position: Int) { override fun onPageRelease(isNext: Boolean, position: Int) {
...@@ -129,8 +137,10 @@ class VideoActivity : BaseActivity(), View.OnClickListener, VideoView, ...@@ -129,8 +137,10 @@ class VideoActivity : BaseActivity(), View.OnClickListener, VideoView,
//是最底部,执行加载更多数据 //是最底部,执行加载更多数据
// loadData() // loadData()
} }
autoPlayVideo()
mCurrentPosition = position mCurrentPosition = position
// autoPlayVideo()
showVipCountDialog(mCurrentPosition)
dialog?.setCurrentIndex(mCurrentPosition) dialog?.setCurrentIndex(mCurrentPosition)
} }
...@@ -171,8 +181,10 @@ class VideoActivity : BaseActivity(), View.OnClickListener, VideoView, ...@@ -171,8 +181,10 @@ class VideoActivity : BaseActivity(), View.OnClickListener, VideoView,
player.startVideoAfterPreloading() player.startVideoAfterPreloading()
// VIdeoindex -> seeIndex // VIdeoindex -> seeIndex
mVedioBean!!.seeIndex = mCurrentPosition if (videos.size > mCurrentPosition) {
LocalVedioManager.commitVedio(mVedioBean!!) mVedioBean!!.seeIndex = videos[mCurrentPosition].vedioIndex
LocalVedioManager.commitVedio(mVedioBean!!)
}
//播放开始,进行倒计时 //播放开始,进行倒计时
} }
...@@ -202,13 +214,12 @@ class VideoActivity : BaseActivity(), View.OnClickListener, VideoView, ...@@ -202,13 +214,12 @@ class VideoActivity : BaseActivity(), View.OnClickListener, VideoView,
dialog?.setCurrentIndex(mCurrentPosition) dialog?.setCurrentIndex(mCurrentPosition)
dialog!!.show() dialog!!.show()
} else { } else {
dialog = VideoEpisodeDialog(this, dialog = VideoEpisodeDialog(this, mVedioBean, object : DialogListener() {
indexBean!!, object : DialogListener() { override fun onClick(dialog: Dialog?, v: View?) {
override fun onClick(dialog: Dialog?, v: View?) { super.onClick(dialog, v)
super.onClick(dialog, v) dialog?.dismiss()
dialog?.dismiss() }
} })
})
dialog?.setCurrentIndex(mCurrentPosition) dialog?.setCurrentIndex(mCurrentPosition)
dialog?.setOnEpisodeClickListener(this) dialog?.setOnEpisodeClickListener(this)
dialog?.show() dialog?.show()
...@@ -216,12 +227,19 @@ class VideoActivity : BaseActivity(), View.OnClickListener, VideoView, ...@@ -216,12 +227,19 @@ class VideoActivity : BaseActivity(), View.OnClickListener, VideoView,
} }
override fun getIndexListSuc(indexList: IndexList) { override fun getIndexListSuc(indexList: IndexList) {
indexBean = indexList
mVedioBean = indexList.vedioMsg mVedioBean = indexList.vedioMsg
indexBean = indexList
videos.clear() videos.clear()
videos.addAll(indexList.list) videos.addAll(indexList.list)
adapter.setNewInstance(getAdapterData()) adapter.setNewInstance(getAdapterData())
adapter.notifyDataSetChanged() adapter.notifyDataSetChanged()
// 处理推荐页跳转自动播放下一集逻辑
if (!isPlayNext) {
playIndex = mVedioBean!!.seeIndex - 1
}
mCurrentPosition = playIndex
recy.scrollToPosition(playIndex)
} }
override fun getIndexListFail() { override fun getIndexListFail() {
...@@ -244,6 +262,7 @@ class VideoActivity : BaseActivity(), View.OnClickListener, VideoView, ...@@ -244,6 +262,7 @@ class VideoActivity : BaseActivity(), View.OnClickListener, VideoView,
} }
override fun unlockSuc(indexList: IndexList) { override fun unlockSuc(indexList: IndexList) {
dialog?.changeLockStatus(videos.size)
videos.addAll(indexList.list) videos.addAll(indexList.list)
adapter.setNewInstance(getAdapterData()) adapter.setNewInstance(getAdapterData())
adapter.notifyDataSetChanged() adapter.notifyDataSetChanged()
...@@ -260,7 +279,8 @@ class VideoActivity : BaseActivity(), View.OnClickListener, VideoView, ...@@ -260,7 +279,8 @@ class VideoActivity : BaseActivity(), View.OnClickListener, VideoView,
mCurrentPosition = position mCurrentPosition = position
recy.scrollToPosition(position) recy.scrollToPosition(position)
Handler(Looper.getMainLooper()).postDelayed({ Handler(Looper.getMainLooper()).postDelayed({
autoPlayVideo() showVipCountDialog(mCurrentPosition)
// autoPlayVideo()
}, 300) }, 300)
} }
...@@ -299,10 +319,31 @@ class VideoActivity : BaseActivity(), View.OnClickListener, VideoView, ...@@ -299,10 +319,31 @@ class VideoActivity : BaseActivity(), View.OnClickListener, VideoView,
// 看广告解锁 // 看广告解锁
AdManager.instance.showAd(this, "", AdManager.instance.showAd(this, "",
object : AdStatusListener { object : AdStatusListener {
override fun adSuccess() {} var canFail = false
override fun adSuccess() {
canFail = true
}
override fun adFail() { override fun adFail() {
showToast("广告太火爆了,请稍候再试") if (canFail) return
NoPreAdManager.loadVideoAd(
this@VideoActivity,
"", object : AdStatusListener {
override fun adFail() {
showToast("广告太火爆了,请稍候再试")
}
override fun adSuccess() {
}
override fun adClose(vo: HashMap<String, Any>?) {
vo?.let {
vo["vedioId"] = mVedioBean!!.vedioId
videoPresenter.unlock(vo)
}
}
})
} }
override fun adClose(vo: HashMap<String, Any>?) { override fun adClose(vo: HashMap<String, Any>?) {
...@@ -322,5 +363,20 @@ class VideoActivity : BaseActivity(), View.OnClickListener, VideoView, ...@@ -322,5 +363,20 @@ class VideoActivity : BaseActivity(), View.OnClickListener, VideoView,
} }
} }
private fun showVipCountDialog(position: Int) {
if (isFinishing) return
if (mVedioBean!!.tipMaxIndex == 0 || mVedioBean!!.tipMaxIndex - 1 < position) {
autoPlayVideo()
return
}
VipCountDialog(this)
.setOnDialogDismiss(object : VipCountDialog.OnDialogDismiss {
override fun onDialogDismiss() {
autoPlayVideo()
}
})
.show()
}
} }
\ No newline at end of file
...@@ -4,6 +4,7 @@ import android.util.Log ...@@ -4,6 +4,7 @@ import android.util.Log
import android.view.View import android.view.View
import android.widget.Button import android.widget.Button
import android.widget.LinearLayout import android.widget.LinearLayout
import android.widget.TextView
import cn.jzvd.Jzvd import cn.jzvd.Jzvd
import cn.jzvd.JzvdStd import cn.jzvd.JzvdStd
import com.airbnb.lottie.LottieAnimationView import com.airbnb.lottie.LottieAnimationView
...@@ -46,6 +47,7 @@ class VideoAdapter(private var vedioBean: VedioBean) : ...@@ -46,6 +47,7 @@ class VideoAdapter(private var vedioBean: VedioBean) :
holder.getView<View>(R.id.vip).setOnClickListener { holder.getView<View>(R.id.vip).setOnClickListener {
mOnCustomChildClickListener?.onCustomChildClick(it, holder.adapterPosition) mOnCustomChildClickListener?.onCustomChildClick(it, holder.adapterPosition)
} }
holder.getView<TextView>(R.id.unlock).text = "看广告解锁" + vedioBean!!.adGiveVedioNum + "集"
holder.getView<View>(R.id.leave).visibility = View.GONE holder.getView<View>(R.id.leave).visibility = View.GONE
holder.getView<View>(R.id.leave).setOnClickListener { holder.getView<View>(R.id.leave).setOnClickListener {
mOnCustomChildClickListener?.onCustomChildClick(it, holder.adapterPosition) mOnCustomChildClickListener?.onCustomChildClick(it, holder.adapterPosition)
...@@ -57,7 +59,7 @@ class VideoAdapter(private var vedioBean: VedioBean) : ...@@ -57,7 +59,7 @@ class VideoAdapter(private var vedioBean: VedioBean) :
private fun initVideoHolder(holder: BaseViewHolder, item: VideoMultiItemEntity) { private fun initVideoHolder(holder: BaseViewHolder, item: VideoMultiItemEntity) {
//标题 //标题
holder.setText(R.id.title_tv, item.video.title) holder.setText(R.id.title_tv, vedioBean.title)
//介绍 //介绍
holder.setText(R.id.info_tv, "第" + item.video.vedioIndex + "集") holder.setText(R.id.info_tv, "第" + item.video.vedioIndex + "集")
//收藏数量 //收藏数量
...@@ -100,6 +102,7 @@ class VideoAdapter(private var vedioBean: VedioBean) : ...@@ -100,6 +102,7 @@ class VideoAdapter(private var vedioBean: VedioBean) :
val proxyUrl = proxy?.getProxyUrl(item.video.vedioUrl).toString() //设置视 val proxyUrl = proxy?.getProxyUrl(item.video.vedioUrl).toString() //设置视
setPlay(holder.getView(R.id.jz_video), proxyUrl) setPlay(holder.getView(R.id.jz_video), proxyUrl)
// setPlay(holder.getView(R.id.jz_video), item.video.vedioUrl)
} }
fun setPlay(jzvdStdTikTok: JzvdStdTikTok, path: String) { fun setPlay(jzvdStdTikTok: JzvdStdTikTok, path: String) {
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
<selector xmlns:android="http://schemas.android.com/apk/res/android"> <selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:width="345dp" android:height="44dp"> <item android:width="345dp" android:height="44dp">
<shape android:shape="rectangle"> <shape android:shape="rectangle">
<solid android:color="#fffeb63d" /> <solid android:color="@color/tv_message_recente_money" />
<corners android:radius="50dp" /> <corners android:radius="50dp" />
</shape> </shape>
</item> </item>
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
<selector xmlns:android="http://schemas.android.com/apk/res/android"> <selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:width="345dp" android:height="44dp"> <item android:width="345dp" android:height="44dp">
<shape android:shape="rectangle"> <shape android:shape="rectangle">
<stroke android:width="1dp" android:color="#fffeb63d" /> <stroke android:width="1dp" android:color="@color/tv_message_recente_money" />
<solid android:color="#ffffff" /> <solid android:color="#ffffff" />
<corners android:radius="50dp" /> <corners android:radius="50dp" />
</shape> </shape>
......
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"> <selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@android:color/white" android:drawable="@drawable/btn_index_submit" android:state_checked="true"></item> <item android:color="@android:color/white" android:drawable="@drawable/btn_index_submit" android:state_checked="true"></item>
<item android:color="#FEB63D" android:drawable="@drawable/btn_index_submit_unchecked" android:state_checked="false"></item> <item android:color="@color/tv_message_recente_money" android:drawable="@drawable/btn_index_submit_unchecked" android:state_checked="false"></item>
</selector> </selector>
\ No newline at end of file
...@@ -85,7 +85,7 @@ ...@@ -85,7 +85,7 @@
android:layout_marginRight="2dp" android:layout_marginRight="2dp"
android:padding="5dp" android:padding="5dp"
android:text="@string/register_name" android:text="@string/register_name"
android:textColor="@color/color_FF9837" android:textColor="@color/tv_message_recente_money"
android:textSize="14sp" /> android:textSize="14sp" />
<View <View
...@@ -102,7 +102,7 @@ ...@@ -102,7 +102,7 @@
android:layout_marginLeft="2dp" android:layout_marginLeft="2dp"
android:padding="5dp" android:padding="5dp"
android:text="隐私政策" android:text="隐私政策"
android:textColor="@color/color_FF9837" android:textColor="@color/tv_message_recente_money"
android:textSize="14sp" /> android:textSize="14sp" />
</LinearLayout> </LinearLayout>
......
...@@ -131,7 +131,7 @@ ...@@ -131,7 +131,7 @@
android:layout_centerVertical="true" android:layout_centerVertical="true"
android:gravity="center" android:gravity="center"
android:text="获取验证码" android:text="获取验证码"
android:textColor="@color/color_FF9837" android:textColor="@color/tv_message_recente_money"
android:textSize="12sp" /> android:textSize="12sp" />
</RelativeLayout> </RelativeLayout>
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
android:layout_height="match_parent" android:layout_height="match_parent"
android:background="@color/black" android:background="@color/black"
android:orientation="vertical" android:orientation="vertical"
tools:context=".video.VideoActivity">r tools:context=".video.VideoActivity">
<androidx.recyclerview.widget.RecyclerView <androidx.recyclerview.widget.RecyclerView
android:id="@+id/recy" android:id="@+id/recy"
...@@ -50,7 +50,7 @@ ...@@ -50,7 +50,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="10dp" android:layout_marginStart="10dp"
android:layout_weight="1" android:layout_weight="1"
android:text="共100集 已完结 >" android:text="共100集 已完结"
android:textColor="@color/white" /> android:textColor="@color/white" />
<ImageView <ImageView
......
...@@ -8,28 +8,28 @@ ...@@ -8,28 +8,28 @@
<include layout="@layout/header_layout" /> <include layout="@layout/header_layout" />
<com.scwang.smartrefresh.layout.SmartRefreshLayout <!-- <com.scwang.smartrefresh.layout.SmartRefreshLayout-->
android:id="@+id/srlMainPage" <!-- android:id="@+id/srlMainPage"-->
android:layout_width="match_parent" <!-- android:layout_width="match_parent"-->
android:layout_height="0dp" <!-- android:layout_height="0dp"-->
android:layout_weight="1" <!-- android:layout_weight="1"-->
app:srlAccentColor="@color/black"> <!-- app:srlAccentColor="@color/black">-->
<com.scwang.smartrefresh.header.MaterialHeader <!-- <com.scwang.smartrefresh.header.MaterialHeader-->
android:layout_width="match_parent" <!-- android:layout_width="match_parent"-->
android:layout_height="wrap_content" /> <!-- android:layout_height="wrap_content" />-->
<androidx.recyclerview.widget.RecyclerView <androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_watch_record" android:id="@+id/rv_watch_record"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" /> android:layout_height="match_parent" />
<com.scwang.smartrefresh.layout.footer.ClassicsFooter <!-- <com.scwang.smartrefresh.layout.footer.ClassicsFooter-->
android:layout_width="match_parent" <!-- android:layout_width="match_parent"-->
android:layout_height="wrap_content" <!-- android:layout_height="wrap_content"-->
app:srlAccentColor="@color/black" <!-- app:srlAccentColor="@color/black"-->
app:srlPrimaryColor="@color/color_FDFDFD" /> <!-- app:srlPrimaryColor="@color/color_FDFDFD" />-->
</com.scwang.smartrefresh.layout.SmartRefreshLayout> <!-- </com.scwang.smartrefresh.layout.SmartRefreshLayout>-->
</LinearLayout> </LinearLayout>
<?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">
<FrameLayout
android:id="@+id/fm"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:layout_margin="50dp"
android:background="@drawable/shape_banner_write">
<ImageView
android:layout_width="match_parent"
android:layout_height="200dp"
android:scaleType="centerCrop"
android:src="@mipmap/bg_vip_count" />
<TextView
android:id="@+id/text_count"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginBottom="20dp"
android:background="@mipmap/bg_vip_count_circle"
android:gravity="center"
android:text="3"
android:textColor="@color/tv_message_recente_money"
android:textSize="30sp"
android:textStyle="bold" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal|bottom"
android:layout_marginBottom="30dp"
android:text="一分钱签约会员解锁全部剧集"
android:textColor="@color/black" />
</FrameLayout>
</RelativeLayout>
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent"> android:layout_height="match_parent"
android:background="#77090909">
<FrameLayout <FrameLayout
android:id="@+id/fl_container" android:id="@+id/fl_container"
...@@ -9,6 +11,81 @@ ...@@ -9,6 +11,81 @@
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout_marginBottom="50dp" /> android:layout_marginBottom="50dp" />
<View
android:id="@+id/view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:id="@+id/ll"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="15dp"
android:layout_marginBottom="100dp"
android:orientation="vertical"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent">
<TextView
android:id="@+id/title_tv"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:ellipsize="end"
android:gravity="center"
android:maxEms="9"
android:maxLines="1"
android:text="-"
android:textColor="#fff"
android:textSize="16sp" />
<TextView
android:id="@+id/info_tv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ellipsize="end"
android:maxEms="14"
android:maxLines="3"
android:text="-"
android:textColor="#fff"
android:textSize="14sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent" />
</LinearLayout>
<LinearLayout
android:id="@+id/ll_collect"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="15dp"
android:gravity="center"
android:orientation="vertical"
app:layout_constraintBottom_toTopOf="@id/ll"
app:layout_constraintRight_toRightOf="parent">
<com.airbnb.lottie.LottieAnimationView
android:id="@+id/zan_iv"
android:layout_width="35dp"
android:layout_height="35dp"
android:layout_marginTop="10dp"
android:src="@mipmap/home_collect_img_0" />
<TextView
android:id="@+id/zan_num_tv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:text="-"
android:textColor="#fff"
android:textSize="14sp" />
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
<FrameLayout <FrameLayout
android:id="@+id/fm_bottom" android:id="@+id/fm_bottom"
android:layout_width="match_parent" android:layout_width="match_parent"
...@@ -51,22 +128,58 @@ ...@@ -51,22 +128,58 @@
</FrameLayout> </FrameLayout>
<LinearLayout <FrameLayout
android:id="@+id/block_view"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:orientation="vertical"> android:layout_marginBottom="50dp"
android:background="#99000000">
<TextView <ImageView
android:id="@+id/tv_info" android:id="@+id/iv_bg"
android:layout_width="wrap_content" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="match_parent" />
android:layout_gravity="center_horizontal"
android:layout_marginTop="10dp"
android:textColor="#FFFFFFFF"
android:textSize="16sp" />
</LinearLayout> <LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#10ffffff"
android:gravity="center"
android:orientation="vertical">
<include layout="@layout/item_block_view" /> <TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="30dp"
android:text="试看已结束"
android:textColor="@color/white"
android:textSize="16sp" />
<Button
android:id="@+id/unlock"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="20dp"
android:background="@mipmap/bg_detail_top"
android:text="看广告解锁1集"
android:textColor="@color/white" />
<Button
android:id="@+id/vip"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@mipmap/bg_detail_bottom"
android:textColor="@color/white" />
</LinearLayout>
</FrameLayout>
<ImageView
android:id="@+id/leave"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:padding="10dp"
android:src="@mipmap/ic_arrow_white" />
</FrameLayout> </FrameLayout>
\ No newline at end of file
...@@ -2,16 +2,14 @@ ...@@ -2,16 +2,14 @@
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:paddingTop="68dp" android:paddingTop="68dp">
android:background="@color/white">
<androidx.recyclerview.widget.RecyclerView <androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_follow" android:id="@+id/rv_follow"
android:layout_width="match_parent" android:layout_width="wrap_content"
android:layout_height="match_parent" /> android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
<View android:background="@color/full_transparent"
android:layout_width="match_parent" android:overScrollMode="never" />
android:layout_height="match_parent" />
</FrameLayout> </FrameLayout>
\ No newline at end of file
...@@ -153,8 +153,8 @@ ...@@ -153,8 +153,8 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_alignParentBottom="true" android:layout_alignParentBottom="true"
android:layout_marginLeft="15dp" android:layout_marginLeft="10dp"
android:layout_marginRight="15dp" android:layout_marginRight="10dp"
android:layout_marginBottom="10dp" android:layout_marginBottom="10dp"
android:background="@drawable/shape_bg_black"> android:background="@drawable/shape_bg_black">
...@@ -173,10 +173,11 @@ ...@@ -173,10 +173,11 @@
<TextView <TextView
android:id="@+id/tv_main_watching_name" android:id="@+id/tv_main_watching_name"
android:layout_width="match_parent" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="8dp" android:layout_marginTop="8dp"
android:text="我去平行时空" android:text="我去平行时空我去平行时空"
android:singleLine="true"
android:textColor="@color/white" android:textColor="@color/white"
android:textSize="14sp" /> android:textSize="14sp" />
...@@ -186,6 +187,8 @@ ...@@ -186,6 +187,8 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="10dp" android:layout_marginTop="10dp"
android:text="重生 虐恋" android:text="重生 虐恋"
android:singleLine="true"
android:layout_marginBottom="2dp"
android:textColor="@color/white" android:textColor="@color/white"
android:textSize="10sp" /> android:textSize="10sp" />
...@@ -194,35 +197,33 @@ ...@@ -194,35 +197,33 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="重生 虐恋" android:text="重生 虐恋"
android:singleLine="true"
android:textColor="@color/graya" android:textColor="@color/graya"
android:textSize="10sp" /> android:textSize="10sp" />
</LinearLayout> </LinearLayout>
<RelativeLayout <RelativeLayout
android:layout_width="0dp" android:layout_width="wrap_content"
android:layout_height="match_parent" android:layout_height="match_parent">
android:layout_weight="1">
<ImageView <ImageView
android:id="@+id/iv_main_watching_close" android:id="@+id/iv_main_watching_close"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:padding="10dp" android:padding="6dp"
android:layout_alignParentRight="true" android:layout_alignParentRight="true"
android:src="@mipmap/ic_quit_white"></ImageView> android:src="@mipmap/ic_quit_white"></ImageView>
<TextView <TextView
android:id="@+id/tv_main_watching_goto" android:id="@+id/tv_main_watching_goto"
android:layout_width="wrap_content" android:layout_width="100dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_alignParentRight="true" android:layout_alignParentRight="true"
android:layout_centerVertical="true" android:layout_centerVertical="true"
android:layout_marginRight="30dp"
android:background="@drawable/shape_red" android:background="@drawable/shape_red"
android:layout_marginRight="15dp"
android:gravity="center" android:gravity="center"
android:paddingLeft="30dp"
android:paddingTop="8dp" android:paddingTop="8dp"
android:paddingRight="30dp"
android:paddingBottom="10dp" android:paddingBottom="10dp"
android:text="继续观看" android:text="继续观看"
android:textColor="@color/white" android:textColor="@color/white"
...@@ -230,6 +231,4 @@ ...@@ -230,6 +231,4 @@
android:textStyle="bold" /> android:textStyle="bold" />
</RelativeLayout> </RelativeLayout>
</LinearLayout> </LinearLayout>
</RelativeLayout> </RelativeLayout>
...@@ -112,7 +112,7 @@ ...@@ -112,7 +112,7 @@
android:gravity="center_vertical" android:gravity="center_vertical"
android:orientation="horizontal" android:orientation="horizontal"
android:paddingStart="20dp" android:paddingStart="20dp"
android:paddingEnd="20dp"> android:paddingEnd="15dp">
<TextView <TextView
android:layout_width="0dp" android:layout_width="0dp"
...@@ -143,7 +143,7 @@ ...@@ -143,7 +143,7 @@
android:gravity="center_vertical" android:gravity="center_vertical"
android:orientation="horizontal" android:orientation="horizontal"
android:paddingStart="20dp" android:paddingStart="20dp"
android:paddingEnd="20dp"> android:paddingEnd="15dp">
<TextView <TextView
android:layout_width="0dp" android:layout_width="0dp"
...@@ -173,7 +173,7 @@ ...@@ -173,7 +173,7 @@
android:gravity="center_vertical" android:gravity="center_vertical"
android:orientation="horizontal" android:orientation="horizontal"
android:paddingStart="20dp" android:paddingStart="20dp"
android:paddingEnd="20dp"> android:paddingEnd="15dp">
<TextView <TextView
android:layout_width="0dp" android:layout_width="0dp"
...@@ -204,7 +204,7 @@ ...@@ -204,7 +204,7 @@
android:gravity="center_vertical" android:gravity="center_vertical"
android:orientation="horizontal" android:orientation="horizontal"
android:paddingStart="20dp" android:paddingStart="20dp"
android:paddingEnd="20dp"> android:paddingEnd="15dp">
<TextView <TextView
android:id="@+id/tv_contact" android:id="@+id/tv_contact"
...@@ -235,7 +235,7 @@ ...@@ -235,7 +235,7 @@
android:gravity="center_vertical" android:gravity="center_vertical"
android:orientation="horizontal" android:orientation="horizontal"
android:paddingStart="20dp" android:paddingStart="20dp"
android:paddingEnd="20dp"> android:paddingEnd="15dp">
<TextView <TextView
android:layout_width="0dp" android:layout_width="0dp"
......
...@@ -4,10 +4,15 @@ ...@@ -4,10 +4,15 @@
android:layout_height="match_parent" android:layout_height="match_parent"
android:background="@color/black"> android:background="@color/black">
<androidx.recyclerview.widget.RecyclerView <com.mints.wisdomclean.ui.widgets.NestedScrollableHost
android:id="@+id/recy"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent">
android:layout_marginTop="30dp" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recy"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="30dp" />
</com.mints.wisdomclean.ui.widgets.NestedScrollableHost>
</FrameLayout> </FrameLayout>
\ No newline at end of file
...@@ -11,9 +11,10 @@ ...@@ -11,9 +11,10 @@
android:layout_height="match_parent" /> android:layout_height="match_parent" />
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="wrap_content"
android:layout_height="match_parent" android:layout_height="wrap_content"
android:gravity="center" android:gravity="center"
android:layout_gravity="center"
android:orientation="vertical"> android:orientation="vertical">
<TextView <TextView
......
<?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">
<View
android:layout_width="match_parent"
android:layout_height="match_parent" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text="还没有历史记录"
android:textSize="18sp" />
</RelativeLayout>
\ No newline at end of file
...@@ -4,6 +4,10 @@ ...@@ -4,6 +4,10 @@
android:layout_height="match_parent" android:layout_height="match_parent"
android:background="#99000000"> android:background="#99000000">
<View
android:layout_width="match_parent"
android:layout_height="match_parent" />
<TextView <TextView
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
......
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent" android:layout_width="wrap_content"
android:layout_height="180dp"> android:layout_marginBottom="10dp"
android:layout_marginLeft="3dp"
android:layout_marginRight="3dp"
android:layout_height="wrap_content">
<ImageView <ImageView
android:id="@+id/image_iv" android:id="@+id/image_iv"
android:layout_width="100dp" android:layout_width="110dp"
android:layout_height="120dp" android:layout_height="150dp"
android:scaleType="fitXY"
android:src="@mipmap/ic_launcher_main" android:src="@mipmap/ic_launcher_main"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
...@@ -18,7 +22,7 @@ ...@@ -18,7 +22,7 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginEnd="6dp" android:layout_marginEnd="6dp"
android:layout_marginBottom="10dp" android:layout_marginBottom="4dp"
android:text="已完结" android:text="已完结"
android:textColor="@color/white" android:textColor="@color/white"
app:layout_constraintBottom_toBottomOf="@id/image_iv" app:layout_constraintBottom_toBottomOf="@id/image_iv"
...@@ -26,9 +30,11 @@ ...@@ -26,9 +30,11 @@
<TextView <TextView
android:id="@+id/title_tv" android:id="@+id/title_tv"
android:layout_width="wrap_content" android:layout_width="106dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="10dp" android:layout_marginTop="10dp"
android:ellipsize="end"
android:maxLines="1"
android:text="重回80年代" android:text="重回80年代"
android:textColor="@color/black" android:textColor="@color/black"
app:layout_constraintStart_toStartOf="@id/image_iv" app:layout_constraintStart_toStartOf="@id/image_iv"
...@@ -36,9 +42,11 @@ ...@@ -36,9 +42,11 @@
<TextView <TextView
android:id="@+id/info_tv" android:id="@+id/info_tv"
android:layout_width="wrap_content" android:layout_width="106dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="4dp" android:layout_marginTop="4dp"
android:ellipsize="end"
android:maxLines="1"
android:text="重回80年代" android:text="重回80年代"
android:textColor="@color/gray" android:textColor="@color/gray"
android:textSize="12sp" android:textSize="12sp"
...@@ -47,8 +55,8 @@ ...@@ -47,8 +55,8 @@
<FrameLayout <FrameLayout
android:id="@+id/fm_mask" android:id="@+id/fm_mask"
android:layout_width="100dp" android:layout_width="110dp"
android:layout_height="180dp" android:layout_height="wrap_content"
android:background="@drawable/shape_half_trans2" android:background="@drawable/shape_half_trans2"
app:layout_constraintEnd_toEndOf="@id/image_iv" app:layout_constraintEnd_toEndOf="@id/image_iv"
app:layout_constraintStart_toStartOf="@id/image_iv" app:layout_constraintStart_toStartOf="@id/image_iv"
...@@ -63,7 +71,7 @@ ...@@ -63,7 +71,7 @@
android:button="@null" android:button="@null"
android:drawableEnd="@drawable/selector_cb" android:drawableEnd="@drawable/selector_cb"
android:paddingEnd="6dp" android:paddingEnd="6dp"
android:paddingBottom="140dp" /> android:paddingBottom="190dp" />
</FrameLayout> </FrameLayout>
......
...@@ -51,7 +51,7 @@ ...@@ -51,7 +51,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:singleLine="true" android:singleLine="true"
android:text="重生 虐恋" android:text="重生 虐恋"
android:textColor="@color/color_939AA3" android:textColor="@color/gray"
android:textSize="12sp" /> android:textSize="12sp" />
</LinearLayout> </LinearLayout>
\ No newline at end of file
...@@ -65,7 +65,7 @@ ...@@ -65,7 +65,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:singleLine="true" android:singleLine="true"
android:text="重生 虐恋" android:text="重生 虐恋"
android:textColor="@color/color_939AA3" android:textColor="@color/gray"
android:textSize="12sp" /> android:textSize="12sp" />
</LinearLayout> </LinearLayout>
\ No newline at end of file
...@@ -21,6 +21,7 @@ ...@@ -21,6 +21,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="15dp" android:layout_marginStart="15dp"
android:orientation="horizontal" android:orientation="horizontal"
android:layout_marginBottom="10dp"
app:layout_constraintBottom_toTopOf="@id/info_tv" app:layout_constraintBottom_toTopOf="@id/info_tv"
app:layout_constraintLeft_toLeftOf="parent"> app:layout_constraintLeft_toLeftOf="parent">
...@@ -40,7 +41,8 @@ ...@@ -40,7 +41,8 @@
<TextView <TextView
android:id="@+id/info_tv" android:id="@+id/info_tv"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="50dp" android:layout_height="wrap_content"
android:layout_marginBottom="24dp"
android:layout_marginStart="15dp" android:layout_marginStart="15dp"
android:ellipsize="end" android:ellipsize="end"
android:gravity="center|left" android:gravity="center|left"
......
...@@ -3,8 +3,7 @@ ...@@ -3,8 +3,7 @@
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:paddingStart="15dp" android:padding="10dp">
android:paddingEnd="15dp">
<ImageView <ImageView
android:id="@+id/image_iv" android:id="@+id/image_iv"
...@@ -35,6 +34,9 @@ ...@@ -35,6 +34,9 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="6dp" android:layout_marginTop="6dp"
android:ellipsize="end"
android:maxWidth="140dp"
android:maxLines="2"
android:text="重回80年代" android:text="重回80年代"
android:textColor="@color/gray" android:textColor="@color/gray"
android:textSize="12sp" /> android:textSize="12sp" />
......
...@@ -34,5 +34,6 @@ ...@@ -34,5 +34,6 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="1dp" android:layout_height="1dp"
android:layout_alignParentBottom="true" android:layout_alignParentBottom="true"
android:background="#E6E6E6" /> android:background="#E6E6E6"
android:visibility="gone" />
</RelativeLayout> </RelativeLayout>
\ No newline at end of file
...@@ -78,6 +78,11 @@ ...@@ -78,6 +78,11 @@
<item name="android:windowExitAnimation">@anim/dialog_bottom_out</item> <item name="android:windowExitAnimation">@anim/dialog_bottom_out</item>
</style> </style>
<style name="DialogAnimFade" parent="@android:style/Animation">
<item name="android:windowEnterAnimation">@anim/fade_in</item>
<item name="android:windowExitAnimation">@anim/fade_out</item>
</style>
<style name="CustomCheckboxTheme" parent="@android:style/Widget.CompoundButton.CheckBox"> <style name="CustomCheckboxTheme" parent="@android:style/Widget.CompoundButton.CheckBox">
<item name="android:button">@drawable/checkbox_style</item> <item name="android:button">@drawable/checkbox_style</item>
</style> </style>
......
...@@ -25,10 +25,15 @@ android.nonTransitiveRClass=true ...@@ -25,10 +25,15 @@ android.nonTransitiveRClass=true
DEBUG_URL="https://api.mints-tech.cn/camera-api/" DEBUG_URL="https://api.mints-tech.cn/camera-api/"
RELEASE_URL="https://api.mints-tech.cn/camera-api/" RELEASE_URL="https://api.mints-tech.cn/camera-api/"
RELEASE_KEY_PASSWORD=mintshelivideo #RELEASE_KEY_PASSWORD=mintshelivideo
RELEASE_KEY_ALIAS=mints_helivideo #RELEASE_KEY_ALIAS=mints_helivideo
RELEASE_STORE_PASSWORD=mintshelivideo #RELEASE_STORE_PASSWORD=mintshelivideo
RELEASE_STORE_FILE=mints_helivideo.jks #RELEASE_STORE_FILE=mints_helivideo.jks
RELEASE_KEY_PASSWORD=mintswisdomclean
RELEASE_KEY_ALIAS=mints_wisdomclean
RELEASE_STORE_PASSWORD=mintswisdomclean
RELEASE_STORE_FILE=mints_wisdomclean.jks
#ShareSDK #ShareSDK
RELEASE_SHARESDK_KEY=381ca97ef616d RELEASE_SHARESDK_KEY=381ca97ef616d
......
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