Commit b77c81bd by Dell

1、球聚细微调整

parent d2cb8f1c
......@@ -260,7 +260,7 @@ public class SlidingTabLayout extends HorizontalScrollView implements ViewPager.
}
this.mVp2 = vp;
mVp2.setSaveEnabled(false);
this.mVp2.unregisterOnPageChangeCallback(onPageChangeCallback);
this.mVp2.registerOnPageChangeCallback(onPageChangeCallback);
notifyDataSetChanged();
......@@ -272,7 +272,7 @@ public class SlidingTabLayout extends HorizontalScrollView implements ViewPager.
}
this.icons = icons;
this.mVp2 = vp;
mVp2.setSaveEnabled(false);
this.mVp2.unregisterOnPageChangeCallback(onPageChangeCallback);
this.mVp2.registerOnPageChangeCallback(onPageChangeCallback);
notifyDataSetChanged();
......
......@@ -42,30 +42,22 @@ android {
}
flavorDimensions "version"
productFlavors {
normal {
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "0"]
}
qj_01 {
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "qj_01"]
}
qj_02 {
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "qj_02"]
}
qj_baidu {
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "qj_baidu"]
}
qj_vivo_01 {
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "qj_vivo_01"]
}
qj_oppo_01 {
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "qj_oppo_01"]
}
qj_huawei_01 {
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "qj_huawei_01"]
}
}
......
{
"version": 1,
"artifactType": {
"type": "APK",
"kind": "Directory"
},
"applicationId": "com.hupu.tv.player.app",
"variantName": "huawei_01Release",
"elements": [
{
"type": "SINGLE",
"filters": [],
"properties": [],
"versionCode": 16,
"versionName": "16",
"enabled": true,
"outputFile": "hslive_v1.0.3_release_huawei_01_2022-04-14.apk"
}
]
}
\ No newline at end of file
{
"version": 1,
"artifactType": {
"type": "APK",
"kind": "Directory"
},
"applicationId": "com.m.live.app",
"variantName": "release",
"elements": [
{
"type": "SINGLE",
"filters": [],
"properties": [],
"versionCode": 15,
"versionName": "15",
"enabled": true,
"outputFile": "mLive_v1.0.4_release_2022-04-14.apk"
}
]
}
\ No newline at end of file
......@@ -427,6 +427,8 @@ interface HostUrl {
*/
const val POST_MATCH_BASKETBALL_ODDS = "match/matchBasketballOdds"
/**
* 获取足球指数
*/
......@@ -482,6 +484,16 @@ interface HostUrl {
const val POST_LIVE_BANNER = "live/getBannerList"
/**
* 获取比赛列表
*/
const val POST_MATCH_LIST_NEW = "V2/match/getMatchListPage"
/**
* 添加下载次数
*/
const val ADD_DOWNLOAD = "V1/download/addDownNum"
/**
* 精选专家
*/
const val FEATURED_EXPERTS_LIST = "hotRank/featuredExpertsList"
......
......@@ -83,7 +83,7 @@ interface RetrofitService {/*@Field("is_new") int is_new*/
/**
* 获取首页banner
*/
@POST("http://api.hszhibo.live/excuse/V1/download/addDownNum")
@POST(HostUrl.ADD_DOWNLOAD)
fun addDownNum(@Header("api-channel") umChannel: String = ProductFlavors.getChannelId(ProductFlavors.UM_CHANNEL_ID)): Observable<BaseBean<Any>>
/**
......@@ -302,7 +302,7 @@ interface RetrofitService {/*@Field("is_new") int is_new*/
/**
* 赛事列表
*/
@POST("http://api.hszhibo.live/excuse/V2/match/getMatchListPage")
@POST(HostUrl.POST_MATCH_LIST_NEW)
fun getMatchList(@Body requestBody: RequestBody): Observable<BaseBean<MatchContentEntity>>
......
......@@ -430,11 +430,11 @@ object Constants {
const val FOLLOW_ORDER_TEXT = "预约"
const val MATCH_TITLE_ALL = "全部"
const val MATCH_TITLE_ALL_ID = -1
const val MATCH_TITLE_ALL_ID = 0
const val MATCH_TITLE_START = "已开赛"
const val MATCH_TITLE_START_ID = 2
const val MATCH_TITLE_START_ID = 1
const val MATCH_TITLE_SCHEDULE = "赛程"
const val MATCH_TITLE_SCHEDULE_ID = 1
const val MATCH_TITLE_SCHEDULE_ID = 2
const val MATCH_TITLE_RESULT = "赛果"
const val MATCH_TITLE_RESULT_ID = 3
......
......@@ -63,6 +63,7 @@ public class MatchContentBean implements Serializable {
private int status;
private String matchTime;
private String matchName;
private String matchDate;
private String matchShortName;
private int sportsType;
private boolean subscribe;
......@@ -73,6 +74,14 @@ public class MatchContentBean implements Serializable {
return matchDays;
}
public String getMatchDate() {
return matchDate;
}
public void setMatchDate(String matchDate) {
this.matchDate = matchDate;
}
public int getHomeScore() {
return homeScore;
}
......
......@@ -264,31 +264,63 @@ class LiveActivity : RefreshActivity<LiveActivityPresenter>(), LiveActivityConta
}
mFragment.add(LiveAnchorFragment.newInstance(roomId))
mFragment.add(MatchIndexFragment.newInstance(matchId, sportType))
if (VersionControl.showIndex()) {
mFragment.add(MatchIndexFragment.newInstance(matchId, sportType))
}
mFragment.add(MatchAnalysisFragment.newInstance(matchId, sportType))
mFragment.add(LiveRedListFragment.newInstance(matchId))
// mFragment.add(LiveMatchFragment.newInstance(roomId))
val type = when {
isShowChat && VersionControl.showIndex() -> {
mTabLayout.tabWidth = 57.6f
1
}
isShowChat && !VersionControl.showIndex() -> {
mTabLayout.tabWidth = 72f
2
}
!isShowChat && VersionControl.showIndex() -> {
mTabLayout.tabWidth = 72f
3
}
else -> {
mTabLayout.tabWidth = 96f
4
}
}
val mTitles: Array<String?> =
if (isShowChat) {
arrayOf(
when (type) {
//聊天和指数都有
1 -> arrayOf(
getString(R.string.string_live_conversation),
getString(R.string.string_live_actor),
getString(R.string.string_match_index),
getString(R.string.string_match_analysis),
getString(R.string.string_live_red_list)
)
} else {
arrayOf(
//聊天有 指数无
2 -> arrayOf(
getString(R.string.string_live_conversation),
getString(R.string.string_live_actor),
getString(R.string.string_match_analysis),
getString(R.string.string_live_red_list)
)
//聊天无 指数有
3 -> arrayOf(
getString(R.string.string_live_actor),
getString(R.string.string_match_index),
getString(R.string.string_match_analysis),
getString(R.string.string_live_red_list)
)
//聊天无 指数无
else -> arrayOf(
getString(R.string.string_live_actor),
getString(R.string.string_match_analysis),
getString(R.string.string_live_red_list)
)
}
val mAdapter =
FragmentBasePager2Adapter(supportFragmentManager, mFragment, mTitles, lifecycle)
vp_live.adapter = mAdapter
......
......@@ -31,6 +31,7 @@ import com.hupu.tv.player.app.ui.fragment.*
import com.hupu.tv.player.app.utils.DialogUtils
import com.hupu.tv.player.app.utils.GlideUtils
import com.hupu.tv.player.app.utils.UserHelper
import com.hupu.tv.player.app.utils.VersionControl
import com.softgarden.baselibrary.base.IBaseDisplay
import com.softgarden.baselibrary.base.IBasePresenter
import kotlinx.android.synthetic.main.activity_main2.*
......@@ -44,14 +45,24 @@ class MainActivity : RefreshActivity<IBasePresenter>(), IBaseDisplay {
private lateinit var mainAvatar: ImageView
private lateinit var haveAvatar: ImageView
private var oldSelected = 0
private var mFragment: ArrayList<Fragment> = arrayListOf(
MatchFragment.newInstance(),
MainNewsFragment.newInstance(),
MainFragment.newInstance(),
MainHaveMaterialFragment.newInstance(),
// FollowFragment.newInstance(),
NewMineFragment.newInstance()
)
private var mFragment: ArrayList<Fragment> =
if (VersionControl.showRedList()) {
arrayListOf(
MatchFragment.newInstance(),
MainNewsFragment.newInstance(),
MainFragment.newInstance(),
MainHaveMaterialFragment.newInstance(),
NewMineFragment.newInstance()
)
} else {
arrayListOf(
MatchFragment.newInstance(),
MainNewsFragment.newInstance(),
MainFragment.newInstance(),
NewMineFragment.newInstance()
)
}
override val layoutId: Int
get() = R.layout.activity_main2
......@@ -69,7 +80,6 @@ class MainActivity : RefreshActivity<IBasePresenter>(), IBaseDisplay {
override fun initialize() {
DialogSettings.modalDialog = true
// DialogSettings.init()
showAdDialog()
initTabLayout()
EventBus.getDefault().register(this)
......@@ -142,29 +152,62 @@ class MainActivity : RefreshActivity<IBasePresenter>(), IBaseDisplay {
val adapter = FragmentBasePagerAdapter(supportFragmentManager, mFragment)
mViewPager.offscreenPageLimit = mFragment.size
mViewPager.adapter = adapter
val mTitles = arrayOf(
getString(R.string.string_main_schedule),
getString(R.string.string_main_news),
getString(R.string.string_main_home),
getString(R.string.string_main_have_material),
getString(R.string.string_main_mine)
)
val mTitles =
if (VersionControl.showRedList()) {
arrayOf(
getString(R.string.string_main_schedule),
getString(R.string.string_main_news),
getString(R.string.string_main_home),
getString(R.string.string_main_have_material),
getString(R.string.string_main_mine)
)
} else {
arrayOf(
getString(R.string.string_main_schedule),
getString(R.string.string_main_news),
getString(R.string.string_main_home),
getString(R.string.string_main_mine)
)
}
val mIconUnSelectIds = intArrayOf(
R.mipmap.icon_main_match_nomal,
R.mipmap.icon_main_news_normal,
R.mipmap.icon_main_live_normal,
R.mipmap.icon_main_follow_normal,
R.mipmap.icon_main_mine_normal
)
val mIconSelectIds = intArrayOf(
R.mipmap.icon_main_match_select,
R.mipmap.icon_main_news_selected,
R.mipmap.icon_main_live_selected,
R.mipmap.icon_main_follow_selected,
R.mipmap.icon_main_mine_selected
)
val mIconUnSelectIds =
if (VersionControl.showRedList()) {
intArrayOf(
R.mipmap.icon_main_match_nomal,
R.mipmap.icon_main_news_normal,
R.mipmap.icon_main_live_normal,
R.mipmap.icon_main_follow_normal,
R.mipmap.icon_main_mine_normal
)
} else {
intArrayOf(
R.mipmap.icon_main_match_nomal,
R.mipmap.icon_main_news_normal,
R.mipmap.icon_main_live_normal,
R.mipmap.icon_main_mine_normal
)
}
val mIconSelectIds =
if (VersionControl.showRedList()) {
intArrayOf(
R.mipmap.icon_main_match_select,
R.mipmap.icon_main_news_selected,
R.mipmap.icon_main_live_selected,
R.mipmap.icon_main_follow_selected,
R.mipmap.icon_main_mine_selected
)
} else {
intArrayOf(
R.mipmap.icon_main_match_select,
R.mipmap.icon_main_news_selected,
R.mipmap.icon_main_live_selected,
R.mipmap.icon_main_mine_selected
)
}
val mTabEntities = ArrayList<CustomTabEntity>()
for (i in mTitles.indices) {
mTabEntities.add(TabEntityBean(mTitles[i], mIconSelectIds[i], mIconUnSelectIds[i]))
......@@ -173,7 +216,8 @@ class MainActivity : RefreshActivity<IBasePresenter>(), IBaseDisplay {
mTabLayout.setOnTabSelectListener(object : OnTabSelectListener {
override fun onTabSelect(position: Int) {
if (position == 4) {
val userPosition = if (VersionControl.showRedList()) 4 else 3
if (position == userPosition) {
if (SPUtil[Constants.USER_LOGIN, false] == true) {
oldSelected = position
mViewPager.currentItem = position
......@@ -191,6 +235,8 @@ class MainActivity : RefreshActivity<IBasePresenter>(), IBaseDisplay {
})
mTabLayout.currentTab = 2
mViewPager.currentItem = 2
}
fun getTabLayout(): CommonTabLayout {
......
......@@ -20,6 +20,7 @@ import com.hupu.tv.player.app.ui.presenter.NewMatchDetailPresenter
import com.hupu.tv.player.app.utils.CommonUtils
import com.hupu.tv.player.app.utils.DialogUtils
import com.hupu.tv.player.app.utils.GlideUtils
import com.hupu.tv.player.app.utils.VersionControl
import com.mirkowu.statusbarutil.StatusBarUtil
import com.softgarden.baselibrary.utils.DisplayUtil
import kotlinx.android.synthetic.main.activity_new_match_detail.*
......@@ -49,7 +50,7 @@ class NewMatchDetailActivity : RefreshActivity<NewMatchDetailPresenter>(),
get() = R.layout.activity_new_match_detail
override fun initialize() {
statusBarTranForView(ll_root_detail,false)
statusBarTranForView(ll_root_detail, false)
initData()
initStatusLayout(ll_root_detail)
mStatusLayoutManager.showLoadingLayout()
......@@ -135,18 +136,34 @@ class NewMatchDetailActivity : RefreshActivity<NewMatchDetailPresenter>(),
mFragment.add(MatchFootDataFragment.newInstance(id, bean?.gameStat, bean?.matchGoals))
mFragment.add(MatchDetailLiveFragment.newInstance(id))
mFragment.add(MatchIndexFragment.newInstance(id, Constants.SPORT_TYPE_FOOTBALL))
if (VersionControl.showIndex()) {
mFragment.add(MatchIndexFragment.newInstance(id, Constants.SPORT_TYPE_FOOTBALL))
}
mFragment.add(MatchAnalysisFragment.newInstance(id, sportType))
mFragment.add(RedListFragment.newInstance(id))
mFragment.add(MatchNewsFragment.newInstance(id))
val mTitles: Array<String?> = arrayOf(
getString(R.string.string_match_team),
getString(R.string.string_match_live),
getString(R.string.string_match_index),
getString(R.string.string_match_analysis),
getString(R.string.string_live_red_list),
getString(R.string.string_main_news)
)
val mTitles: Array<String?> =
if (VersionControl.showIndex()) {
arrayOf(
getString(R.string.string_match_team),
getString(R.string.string_match_live),
getString(R.string.string_match_index),
getString(R.string.string_match_analysis),
getString(R.string.string_live_red_list),
getString(R.string.string_main_news)
)
} else {
arrayOf(
getString(R.string.string_match_team),
getString(R.string.string_match_live),
getString(R.string.string_match_analysis),
getString(R.string.string_live_red_list),
getString(R.string.string_main_news)
)
}
val mAdapter =
FragmentBasePager2Adapter(supportFragmentManager, mFragment, mTitles, lifecycle)
vp_match.adapter = mAdapter
......@@ -189,16 +206,31 @@ class NewMatchDetailActivity : RefreshActivity<NewMatchDetailPresenter>(),
sportType
)
)
mFragment.add(MatchIndexFragment.newInstance(id, Constants.SPORT_TYPE_BASKETBALL))
if (VersionControl.showIndex()) {
mFragment.add(MatchIndexFragment.newInstance(id, Constants.SPORT_TYPE_BASKETBALL))
}
mFragment.add(RedListFragment.newInstance(id))
val mTitles: Array<String?> = arrayOf(
getString(R.string.string_match_team),
getString(R.string.string_match_player),
getString(R.string.string_match_live),
getString(R.string.string_match_analysis),
getString(R.string.string_match_index),
getString(R.string.string_live_red_list)
)
val mTitles: Array<String?> =
if (VersionControl.showIndex()) {
arrayOf(
getString(R.string.string_match_team),
getString(R.string.string_match_player),
getString(R.string.string_match_live),
getString(R.string.string_match_analysis),
getString(R.string.string_match_index),
getString(R.string.string_live_red_list)
)
} else {
arrayOf(
getString(R.string.string_match_team),
getString(R.string.string_match_player),
getString(R.string.string_match_live),
getString(R.string.string_match_analysis),
getString(R.string.string_live_red_list)
)
}
val mAdapter =
FragmentBasePager2Adapter(supportFragmentManager, mFragment, mTitles, lifecycle)
vp_match.adapter = mAdapter
......
......@@ -30,7 +30,7 @@ class LiveTopAdapter(private val basefragment: BaseFragment<*>) :
helper: BaseViewHolder,
item: MatchContentBean.MatchListsBean.MatchInfosBean
) {
val time = if (CommonUtils.time == item.matchTime) {
val time = if (CommonUtils.time == item.matchDate) {
"今天"
} else {
"明天"
......
......@@ -22,11 +22,13 @@ import com.hupu.tv.player.app.ui.adapter.HomeBannerAdapter
import com.hupu.tv.player.app.ui.contact.MainHaveMaterialContract
import com.hupu.tv.player.app.ui.presenter.MainHaveMaterialPresenter
import com.hupu.tv.player.app.utils.GlideUtils
import com.hupu.tv.player.app.utils.VersionControl
import com.softgarden.baselibrary.utils.SPUtil
import com.zhpan.bannerview.BannerViewPager
import com.zhpan.bannerview.constants.PageStyle
import com.zhpan.indicator.enums.IndicatorSlideMode
import kotlinx.android.synthetic.main.fragment_main_have_material.*
import kotlinx.android.synthetic.main.layout_empty.*
import org.greenrobot.eventbus.Subscribe
import org.greenrobot.eventbus.ThreadMode
......@@ -44,7 +46,6 @@ class MainHaveMaterialFragment : RefreshFragment<MainHaveMaterialPresenter>(), M
get() = R.layout.fragment_main_have_material
private fun initViewPager(list: List<TitleSortBean>) {
mFragments.clear()
val mTitles = arrayOfNulls<String>(list.size)
......@@ -66,7 +67,6 @@ class MainHaveMaterialFragment : RefreshFragment<MainHaveMaterialPresenter>(), M
}
override fun onBanner(data: ArrayList<BannerBean>?) {
// mStatusLayoutManager.showSuccessLayout()
initBanner(data)
}
......@@ -86,13 +86,10 @@ class MainHaveMaterialFragment : RefreshFragment<MainHaveMaterialPresenter>(), M
}
override fun onSpecialist(data: MutableList<SpecialistBean>?) {
// mStatusLayoutManager.showSuccessLayout()
setLoadData(mAdapter, data)
}
override fun onSchedule(data: MutableList<MaterialScheduleItemEntity>?) {
// mStatusLayoutManager.showSuccessLayout()
if (data?.size ?: 0 > 0) {
ll_schedule.visibility = View.VISIBLE
recycler_schedule.apply {
......@@ -104,7 +101,6 @@ class MainHaveMaterialFragment : RefreshFragment<MainHaveMaterialPresenter>(), M
(activity as? MainActivity)?.topMatch()
}
}
}
......@@ -123,9 +119,8 @@ class MainHaveMaterialFragment : RefreshFragment<MainHaveMaterialPresenter>(), M
initListener()
initAdapter()
initViewPager(defaultList())
initStatusLayout(ll_root as View)
setButton()
// mStatusLayoutManager.showLoadingLayout()
}
private fun initAdapter() {
......@@ -149,11 +144,9 @@ class MainHaveMaterialFragment : RefreshFragment<MainHaveMaterialPresenter>(), M
}
private fun initListener() {
(requireActivity() as MainActivity).setAvatar(iv_avatar_have,false)
iv_avatar_have.onSingleClick{
(requireActivity() as MainActivity).setAvatar(iv_avatar_have, false)
iv_avatar_have.onSingleClick {
(requireActivity() as MainActivity).toMineFragment()
}
......@@ -164,14 +157,17 @@ class MainHaveMaterialFragment : RefreshFragment<MainHaveMaterialPresenter>(), M
tv_famous_scholars.onSingleClick {
type = 0
setButton()
presenter?.getSpecialist(type)
}
tv_win_rate.onSingleClick {
type = 1
setButton()
presenter?.getSpecialist(type)
}
tv_continue_red.onSingleClick {
type = 2
setButton()
presenter?.getSpecialist(type)
}
}
......@@ -187,16 +183,18 @@ class MainHaveMaterialFragment : RefreshFragment<MainHaveMaterialPresenter>(), M
1 -> tv_win_rate.isSelected = true
2 -> tv_continue_red.isSelected = true
}
// presenter?.getSpecialist(type)
}
override fun showError(throwable: Throwable) {
super.showError(throwable)
mStatusLayoutManager.showErrorLayout()
}
// override fun showError(throwable: Throwable) {
// super.showError(throwable)
// mStatusLayoutManager.showErrorLayout()
// }
override fun lazyLoad() {
if (!VersionControl.showRedList()) {
ll_empty.visibility = View.VISIBLE
}
presenter?.getSpecialist(type)
presenter?.getBanner()
presenter?.getSchedule(mPage, PAGE_COUNT)
......@@ -216,8 +214,4 @@ class MainHaveMaterialFragment : RefreshFragment<MainHaveMaterialPresenter>(), M
}
}
}
\ No newline at end of file
......@@ -44,15 +44,15 @@ class MainFragmentPresenter : IBasePresenter, MainFragmentContact.Presenter {
}
override fun getShowConfig() {
RetrofitClient.retrofitService
.getLiveConfig()
.compose(NetworkTransformer(mView))
.subscribe(object : RxCallback<ShowConifgEntity>() {
override fun onSuccess(data: ShowConifgEntity?) {
VersionControl.saveConfig(data?.show?:false)
}
})
// RetrofitClient.retrofitService
// .getLiveConfig()
// .compose(NetworkTransformer(mView))
// .subscribe(object : RxCallback<ShowConifgEntity>() {
// override fun onSuccess(data: ShowConifgEntity?) {
// VersionControl.saveConfig(data?.show?:false)
//
// }
// })
}
......
......@@ -12,6 +12,7 @@ import com.hupu.tv.player.app.bean.*
import com.hupu.tv.player.app.ui.activity.MainActivity
import com.hupu.tv.player.app.ui.contact.SplashActivityContact
import com.hupu.tv.player.app.utils.JsonUtils
import com.hupu.tv.player.app.utils.VersionControl
/**
* @author by Dell
......@@ -63,6 +64,19 @@ class SplashActivityPresenter : IBasePresenter, SplashActivityContact.Presenter
override fun onSuccess(data: ArrayList<BannerBean>?) {
SPUtil.putSerializableObject(Constants.MAIN_BANNER, data)
mTvMessage?.text = mTvMessage?.text.toString() + "\n" + "请求广告成功"
getConfig()
}
})
}
private fun getConfig() {
RetrofitClient.retrofitService
.getLiveConfig()
.compose(NetworkTransformer(mView))
.subscribe(object : RxCallback<ShowConifgEntity>() {
override fun onSuccess(data: ShowConifgEntity?) {
VersionControl.saveConfig(data?.show?:false)
mTvMessage?.text = mTvMessage?.text.toString() + "\n" + "请求控制成功"
getBannerList()
}
})
......@@ -94,8 +108,8 @@ class SplashActivityPresenter : IBasePresenter, SplashActivityContact.Presenter
private fun getNewsList() {
RetrofitClient.retrofitService
.getNewsHeadList(JsonUtils.toRequestBody(hashMapOf<String,Any>().apply {
put("type",2)
.getNewsHeadList(JsonUtils.toRequestBody(hashMapOf<String, Any>().apply {
put("type", 2)
}))
.compose(NetworkTransformer(mView))
.subscribe(object : RxCallback<List<BannerBean>>() {
......
......@@ -8,14 +8,15 @@ import com.softgarden.baselibrary.utils.SPUtil
* @author by Dell
* @date on 2022/4/29
* @describe
*
*/
object VersionControl {
const val OFFICEL_1 = "0"
const val OFFICEL_2 = "qj_01"
const val OFFICEL_3 = "qj_02"
const val VIVO = "qj_vivo_01"
const val HUAWEI = "qj_huawei_01"
const val OPPO = "qj_oppo_01"
private const val OFFICIAL_1 = "qj_01"
private const val OFFICIAL_2 = "qj_02"
private const val BAIDU = "qj_baidu"
private const val VIVO = "qj_vivo_01"
private const val HUAWEI = "qj_huawei_01"
private const val OPPO = "qj_oppo_01"
fun isShowLive(): Boolean {
......@@ -24,10 +25,16 @@ object VersionControl {
fun saveConfig(showConfig: Boolean) {
when (BuildConfig.FLAVOR) {
OFFICEL_1, OFFICEL_2, OFFICEL_3, VIVO, HUAWEI, OPPO -> SPUtil.put(Constants.SHOW_LIVE_CONFIG, showConfig)
OFFICIAL_1, OFFICIAL_2 -> SPUtil.put(Constants.SHOW_LIVE_CONFIG, true)
else -> SPUtil.put(Constants.SHOW_LIVE_CONFIG, showConfig)
}
}
fun showIndex(): Boolean {
return isShowLive()
}
fun showRedList(): Boolean {
return isShowLive()
}
}
\ No newline at end of file
......@@ -97,6 +97,7 @@
android:visibility="gone" />
<WebView
android:paddingHorizontal="3dp"
android:id="@+id/mWebView"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
......
......@@ -10,7 +10,8 @@
app:srlEnableFooterFollowWhenLoadFinished="true"
app:srlEnableScrollContentWhenLoaded="true">
<!-- elevation 高版本自带一个阴影,不需要去掉即可 -->
<!-- <include layout="@layout/layout_empty"/>-->
<include layout="@layout/layout_empty"
android:visibility="gone"/>
<androidx.coordinatorlayout.widget.CoordinatorLayout
android:layout_width="match_parent"
......
......@@ -105,13 +105,13 @@
<string name="string_user_agreement_title_private">隐私协议</string>
<string name="string_user_agreement">1. 重要须知
\n\n1.1、本用户使用许可协议(下称“协议”或“本协议”)是用户与北京添迈科技有限公司旗下“球聚直播”视频直播平台(下称球聚直播)之间关于注册、登录“球聚直播”视频直播平台(下称“视频直播平台”或“平台”)以及使用平台服务所订立的协议,本协议约定了球聚直播与用户之间关于“球聚直播”服务方面的权利义务。 “用户”是指注册、登录、使用、浏览、获取本协议项下服务的个人或组织。
\n\n1.1、本用户使用许可协议(下称“协议”或“本协议”)是用户与河南夜澜网络科技有限公司旗下“球聚直播”视频直播平台(下称球聚直播)之间关于注册、登录“球聚直播”视频直播平台(下称“视频直播平台”或“平台”)以及使用平台服务所订立的协议,本协议约定了球聚直播与用户之间关于“球聚直播”服务方面的权利义务。 “用户”是指注册、登录、使用、浏览、获取本协议项下服务的个人或组织。
\n\n1.2、用户应认真阅读(未成年人应当在监护人陪同下阅读)、充分理解本协议中各条款,特别是免除或者限制球聚直播责任的免责条款及对用户的权利限制条款,并选择接受或不接受本协议。除非用户接受本协议所有条款,否则用户无权注册、登录或使用球聚直播为用户提供的服务。用户的注册、登录、使用等行为将视为对本协议的接受,并同意接受本协议各项条款的约束。
\n\n1.3、通过访问和/或使用球聚直播,用户表示同意接受本协议的所有条件和条款。球聚直播是面向最终用户提供播客实时在线演绎、互动直播等服务的网站。如果用户不愿接受本协议的全部条件和条款,请用户不要访问或使用球聚直播。如果用户愿意接受本协议,则意味着用户了解及完全同意本协议的各项内容,以及球聚直播对本协议及本协议附件随时所做的任何修改。
\n\n1.4、本协议下的条款可由球聚直播随时变更,用户须定期审阅本协议。协议条款一旦发生变动,球聚直播将会在网站相关的页面上发布。变更后的协议在相关的页面上公布即有效代替原来的协议,恕不再另行通知。用户如不同意球聚直播对本协议的所作的任何变更,应立即停止使用球聚直播提供的服务。如用户在本协议变更后继续使用球聚直播的服务,即视作用户已完全同意变更后的协议。
\n\n1.5、请注意:鉴于用户使用网络服务之习惯,用户有权利且有义务自使用球聚直播服务之日起每月自行主动对本协议之全部内容进行重新阅读,鉴于上述约定,用户因自身怠于行使该等权利或怠于履行该等义务的,无权以未获知上述内容而对相关条款的法律效力提出异议。
\n\n2. 服务内容
\n\n2.1、本用户使用许可协议(下称“协议”或“本协议”)是用户与北京添迈科技有限公司旗下“球聚直播”视频直播平台(下称球聚直播)之间关于注册、登录“球聚直播”视频直播平台(下称“视频直播平台”或“平台”)以及使用平台服务所订立的协议,本协议约定了球聚直播与用户之间关于“球聚直播”服务方面的权利义务。 “用户”是指注册、登录、使用、浏览、获取本协议项下服务的个人或组织。
\n\n2.1、本用户使用许可协议(下称“协议”或“本协议”)是用户与河南夜澜网络科技有限公司旗下“球聚直播”视频直播平台(下称球聚直播)之间关于注册、登录“球聚直播”视频直播平台(下称“视频直播平台”或“平台”)以及使用平台服务所订立的协议,本协议约定了球聚直播与用户之间关于“球聚直播”服务方面的权利义务。 “用户”是指注册、登录、使用、浏览、获取本协议项下服务的个人或组织。
\n\n2.2、用户应认真阅读(未成年人应当在监护人陪同下阅读)、充分理解本协议中各条款,特别是免除或者限制球聚直播责任的免责条款及对用户的权利限制条款,并选择接受或不接受本协议。除非用户接受本协议所有条款,否则用户无权注册、登录或使用球聚直播为用户提供的服务。用户的注册、登录、使用等行为将视为对本协议的接受,并同意接受本协议各项条款的约束。
\n\n2.3、通过访问和/或使用球聚直播,用户表示同意接受本协议的所有条件和条款。球聚直播是面向最终用户提供播客实时在线演绎、互动直播等服务的网站。如果用户不愿接受本协议的全部条件和条款,请用户不要访问或使用球聚直播。如果用户愿意接受本协议,则意味着用户了解及完全同意本协议的各项内容,以及球聚直播对本协议及本协议附件随时所做的任何修改。
\n\n2.4、本协议下的条款可由球聚直播随时变更,用户须定期审阅本协议。协议条款一旦发生变动,球聚直播将会在网站相关的页面上发布。变更后的协议在相关的页面上公布即有效代替原来的协议,恕不再另行通知。用户如不同意球聚直播对本协议的所作的任何变更,应立即停止使用球聚直播提供的服务。如用户在本协议变更后继续使用球聚直播的服务,即视作用户已完全同意变更后的协议。
......
{
"version": 1,
"artifactType": {
"type": "APK",
"kind": "Directory"
},
"applicationId": "com.hupu.tv.player.app",
"variantName": "um_10002Release",
"elements": [
{
"type": "SINGLE",
"filters": [],
"properties": [],
"versionCode": 16,
"versionName": "16",
"enabled": true,
"outputFile": "hslive_v1.0.3_release_um_10002_2022-04-02.apk"
}
]
}
\ No newline at end of file
{
"version": 1,
"artifactType": {
"type": "APK",
"kind": "Directory"
},
"applicationId": "com.hupu.tv.player.app",
"variantName": "vivo_01Release",
"elements": [
{
"type": "SINGLE",
"filters": [],
"properties": [],
"versionCode": 15,
"versionName": "15",
"enabled": true,
"outputFile": "hslive_v1.0.2_release_vivo_01_2022-03-18.apk"
}
]
}
\ No newline at end of file
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