Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
A
android_vedio
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
android
android_vedio
Commits
5d609ef7
Commit
5d609ef7
authored
Aug 14, 2023
by
mengcuiguang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
个人中心添加信息流
parent
55fbb175
Changes
7
Show whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
946 additions
and
13 deletions
+946
-13
build.gradle
video/app/build.gradle
+4
-2
MyExpressManager.kt
...n/java/com/mints/helivideo/ad/express/MyExpressManager.kt
+892
-0
MobileLoginActivity.kt
...a/com/mints/helivideo/ui/activitys/MobileLoginActivity.kt
+3
-8
MyFragment.kt
...c/main/java/com/mints/helivideo/ui/fragment/MyFragment.kt
+38
-1
activity_mobile_login.xml
video/app/src/main/res/layout/activity_mobile_login.xml
+1
-1
fragment_main_my.xml
video/app/src/main/res/layout/fragment_main_my.xml
+7
-1
gradle.properties
video/gradle.properties
+1
-0
No files found.
video/app/build.gradle
View file @
5d609ef7
...
...
@@ -12,8 +12,8 @@ android {
applicationId
"com.mints.helivideo"
minSdkVersion
rootProject
.
ext
.
androidMinSdkVersion
targetSdkVersion
rootProject
.
ext
.
androidTargetSdkVersion
versionCode
9
versionName
"1.0.
8
"
versionCode
10
versionName
"1.0.
9
"
flavorDimensions
"default"
// dex突破65535的限制
...
...
@@ -66,6 +66,7 @@ android {
buildConfigField
"String"
,
"GROMORE_VIDEO_CODE"
,
GROMORE_VIDEO_CODE
buildConfigField
"String"
,
"GROMORE_DRAW_CODE"
,
GROMORE_DRAW_CODE
buildConfigField
"String"
,
"GROMORE_EXPRESS_CODE"
,
GROMORE_EXPRESS_CODE
buildConfigField
"String"
,
"GROMORE_MYEXPRESS_CODE"
,
GROMORE_MYEXPRESS_CODE
buildConfigField
"String"
,
"GROMORE_BANNER_CODE"
,
GROMORE_BANNER_CODE
buildConfigField
"String"
,
"RELEASE_TALKING_DATA_KEY"
,
RELEASE_TALKING_DATA_KEY
buildConfigField
"String"
,
"WEIXIN_APP_PAY_ID"
,
WEIXIN_APP_PAY_ID
...
...
@@ -89,6 +90,7 @@ android {
buildConfigField
"String"
,
"GROMORE_VIDEO_CODE"
,
GROMORE_VIDEO_CODE
buildConfigField
"String"
,
"GROMORE_DRAW_CODE"
,
GROMORE_DRAW_CODE
buildConfigField
"String"
,
"GROMORE_EXPRESS_CODE"
,
GROMORE_EXPRESS_CODE
buildConfigField
"String"
,
"GROMORE_MYEXPRESS_CODE"
,
GROMORE_MYEXPRESS_CODE
buildConfigField
"String"
,
"GROMORE_BANNER_CODE"
,
GROMORE_BANNER_CODE
buildConfigField
"String"
,
"RELEASE_TALKING_DATA_KEY"
,
RELEASE_TALKING_DATA_KEY
buildConfigField
"String"
,
"WEIXIN_APP_PAY_ID"
,
WEIXIN_APP_PAY_ID
...
...
video/app/src/main/java/com/mints/helivideo/ad/express/MyExpressManager.kt
0 → 100644
View file @
5d609ef7
package
com.mints.helivideo.ad.express
import
android.net.Uri
import
android.text.TextUtils
import
android.util.Log
import
android.view.LayoutInflater
import
android.view.View
import
android.view.ViewGroup
import
android.widget.*
import
com.bumptech.glide.Glide
import
com.bytedance.sdk.openadsdk.*
import
com.bytedance.sdk.openadsdk.mediation.ad.MediationExpressRenderListener
import
com.bytedance.sdk.openadsdk.mediation.ad.MediationViewBinder
import
com.mints.helivideo.MintsApplication
import
com.mints.helivideo.ad.AdManager
import
com.mints.helivideo.utils.ForegroundOrBackground
import
com.mints.helivideo.utils.LogUtil
import
com.mints.helivideo.utils.TimeRender
import
com.mints.helivideo.utils.UIUtils
import
java.lang.Exception
import
java.util.ArrayList
/**
* 信息流
*/
class
MyExpressManager
{
companion
object
{
val
instance
:
MyExpressManager
by
lazy
(
mode
=
LazyThreadSafetyMode
.
SYNCHRONIZED
)
{
MyExpressManager
()
}
}
private
var
frameLayout
:
FrameLayout
?
=
null
private
val
adLoadTime
:
Long
=
0
// 广告展示时间,45分钟后当前广告失效,重新预加载广告
private
var
adPreingTime
:
Long
=
0
// 防止预加载超时 2分钟
private
var
isLoadSuccess
=
0
//0-加载失败/未加载 1-加载中 2-加载成功
private
var
mExpressAdCallback
:
ExpressAdCallback
?
=
null
private
var
mTTFeedAd
:
TTFeedAd
?
=
null
fun
preLoadAd
()
{
val
isOversped
=
TimeRender
.
isOverspedMin
(
adLoadTime
,
AdManager
.
AD_NO_SHOWTIME_OUT
)
val
isPreingOversped
=
TimeRender
.
isOverspedMin
(
adPreingTime
,
AdManager
.
AD_REQUEST_TIME_OUT
)
LogUtil
.
d
(
TAG
,
"gromore信息流--> 1、进入预加载 isLoadSuccess=$isLoadSuccess isOversped=$isOversped isPreingOversped=$isPreingOversped"
)
if
((
isLoadSuccess
==
0
// 加载失败
||
adLoadTime
>
0
&&
isOversped
// 超过45分钟
||
adPreingTime
>
0
&&
isPreingOversped
&&
isLoadSuccess
==
1
)
// 预加载超时
)
{
LogUtil
.
d
(
TAG
,
"gromore信息流--> 2、执行预加载去了=$isLoadSuccess"
)
adPreingTime
=
System
.
currentTimeMillis
()
isLoadSuccess
=
1
// 销毁及移除事件
// destroy()
this
.
frameLayout
=
FrameLayout
(
MintsApplication
.
getContext
())
loadAd
()
}
}
private
fun
loadAd
()
{
val
activity
=
ForegroundOrBackground
.
getTopActivity
()
val
adNativeLoader
=
TTAdSdk
.
getAdManager
().
createAdNative
(
activity
)
val
adslot
=
AdSlot
.
Builder
()
.
setCodeId
(
BuildConfig
.
GROMORE_MYEXPRESS_CODE
)
/**
* 注:
* 1:单位为px
* 2:如果是信息流自渲染广告,设置广告图片期望的图片宽高 ,不能为0
* 2:如果是信息流模板广告,宽度设置为希望的宽度,高度设置为0(0为高度选择自适应参数)
*/
.
setImageAcceptedSize
(
UIUtils
.
getAdWidth
(
MintsApplication
.
getContext
()).
toInt
(),
0
)
.
setAdCount
(
3
)
//请求广告数量为1到3条 (优先采用平台配置的数量)
.
build
()
adNativeLoader
.
loadFeedAd
(
adslot
,
object
:
TTAdNative
.
FeedAdListener
{
override
fun
onError
(
p0
:
Int
,
p1
:
String
?)
{
LogUtil
.
e
(
TAG
,
"gromore信息流--> 3、load feed ad error : $p0, $p1"
)
isLoadSuccess
=
0
}
override
fun
onFeedAdLoad
(
ads
:
MutableList
<
TTFeedAd
>?)
{
ads
?.
let
{
if
(
it
.
isEmpty
())
{
isLoadSuccess
=
0
return
}
if
(
it
.
size
>
0
)
{
mTTFeedAd
=
it
[
0
]
isLoadSuccess
=
2
showAd
()
}
}
}
})
}
private
fun
showAd
()
{
mTTFeedAd
?.
let
{
if
(
it
.
mediationManager
.
isExpress
)
{
//--------------信息流模板广告渲染----------------
showExpressView
(
it
)
}
else
{
//--------------信息流自渲染广告渲染----------------
val
view
:
View
?
=
when
(
it
.
imageMode
)
{
TTAdConstant
.
IMAGE_MODE_SMALL_IMG
->
getSmallAdView
(
frameLayout
)
//信息流自渲染广告渲染 :小图广告
TTAdConstant
.
IMAGE_MODE_LARGE_IMG
->
getLargeAdView
(
frameLayout
)
//信息流自渲染广告渲染 :大图广告
TTAdConstant
.
IMAGE_MODE_GROUP_IMG
->
getGroupAdView
(
frameLayout
)
//信息流自渲染广告渲染 :组图广告
TTAdConstant
.
IMAGE_MODE_VIDEO
->
getVideoView
(
frameLayout
)
//信息流自渲染广告渲染 :视频广告
TTAdConstant
.
IMAGE_MODE_VERTICAL_IMG
->
getVerticalAdView
(
frameLayout
)
//信息流自渲染广告渲染 :竖图广告
TTAdConstant
.
IMAGE_MODE_VIDEO_VERTICAL
->
getVideoView
(
frameLayout
)
//信息流自渲染广告渲染 :竖版视频广告
else
->
{
Log
.
i
(
TAG
,
"展示样式错误"
)
null
}
}
view
?.
let
{
it
.
layoutParams
=
ViewGroup
.
LayoutParams
(
ViewGroup
.
LayoutParams
.
MATCH_PARENT
,
ViewGroup
.
LayoutParams
.
MATCH_PARENT
)
frameLayout
?.
removeAllViews
()
frameLayout
?.
addView
(
it
)
}
}
}
}
fun
getAdView
(
callback
:
ExpressAdCallback
?)
{
val
isOversped
=
TimeRender
.
isOverspedMin
(
adLoadTime
,
AdManager
.
AD_NO_SHOWTIME_OUT
)
// 若上一个广告还在加载中则返回
if
(
isLoadSuccess
==
1
)
{
this
.
mExpressAdCallback
=
callback
LogUtil
.
d
(
TAG
,
"gromore信息流--> 3.9、广告加载中 LoadSuccess = $isLoadSuccess"
)
return
}
this
.
mExpressAdCallback
=
null
if
(
isLoadSuccess
==
2
&&
!
isOversped
)
{
LogUtil
.
d
(
TAG
,
"gromore信息流--> 4、展示广告 LoadSuccess=$isLoadSuccess isOversped=$isOversped"
)
isLoadSuccess
=
0
callback
?.
loadSuccess
(
frameLayout
)
}
else
{
LogUtil
.
e
(
TAG
,
"gromore信息流--> 5、展示广告时失败了,广告可能超时45分钟 onError "
)
// 状态重置
isLoadSuccess
=
0
callback
?.
loadFail
()
}
}
private
fun
showExpressView
(
it
:
TTFeedAd
)
{
it
.
setExpressRenderListener
(
object
:
MediationExpressRenderListener
{
override
fun
onRenderSuccess
(
p0
:
View
?,
p1
:
Float
,
p2
:
Float
,
p3
:
Boolean
)
{
Log
.
i
(
TAG
,
"onRenderSuccess"
)
it
.
setDislikeCallback
(
ForegroundOrBackground
.
getTopActivity
(),
object
:
TTAdDislike
.
DislikeInteractionCallback
{
override
fun
onShow
()
{
Log
.
i
(
TAG
,
"express dislike 点击show"
)
}
override
fun
onSelected
(
position
:
Int
,
value
:
String
?,
enforce
:
Boolean
)
{
Log
.
i
(
TAG
,
"express 点击 $value"
)
}
override
fun
onCancel
()
{
Log
.
i
(
TAG
,
"express dislike 点击了取消"
)
}
})
it
.
adView
?.
let
{
view
->
if
(
view
.
parent
!=
null
)
{
(
view
.
parent
as
ViewGroup
).
removeView
(
view
)
}
frameLayout
?.
addView
(
view
)
}
mExpressAdCallback
?.
let
{
if
(
it
.
renderSuccess
(
frameLayout
))
{
isLoadSuccess
=
0
}
}
mExpressAdCallback
=
null
}
override
fun
onRenderFail
(
p0
:
View
?,
p1
:
String
?,
p2
:
Int
)
{
isLoadSuccess
=
0
LogUtil
.
e
(
TAG
,
"gromore信息流--> 5、展示广告时失败了,onRenderFail msg=${p1} code=${p2} "
)
}
override
fun
onAdClick
()
{
Log
.
i
(
TAG
,
"onAdClick"
)
}
override
fun
onAdShow
()
{
Log
.
i
(
TAG
,
"onAdShow"
)
Log
.
i
(
TAG
,
"ad mediaExtraInfo ${it.mediaExtraInfo}"
)
}
})
it
.
render
()
//必须要调用render方法进行渲染,在onRenderSuccess中处理模板的view
}
/**
* 销毁
*/
fun
destroy
()
{
// frameLayout?.removeAllViews()
// frameLayout = null
mTTFeedAd
?.
destroy
()
this
.
mExpressAdCallback
=
null
}
fun
getFrameLayout
():
View
?
{
return
frameLayout
}
private
fun
getSmallAdView
(
parent
:
ViewGroup
?):
View
?
{
val
convertView
=
LayoutInflater
.
from
(
ForegroundOrBackground
.
getTopActivity
())
.
inflate
(
R
.
layout
.
mediation_listitem_ad_small_pic
,
parent
,
false
)
val
adViewHolder
=
SmallAdViewHolder
()
adViewHolder
.
mTitle
=
convertView
.
findViewById
<
View
>(
R
.
id
.
tv_listitem_ad_title
)
as
TextView
adViewHolder
.
mSource
=
convertView
.
findViewById
<
View
>(
R
.
id
.
tv_listitem_ad_source
)
as
TextView
adViewHolder
.
mDescription
=
convertView
.
findViewById
<
View
>(
R
.
id
.
tv_listitem_ad_desc
)
as
TextView
adViewHolder
.
mSmallImage
=
convertView
.
findViewById
<
View
>(
R
.
id
.
iv_listitem_image
)
as
ImageView
adViewHolder
.
mIcon
=
convertView
.
findViewById
<
View
>(
R
.
id
.
iv_listitem_icon
)
as
ImageView
adViewHolder
.
mDislike
=
convertView
.
findViewById
<
View
>(
R
.
id
.
iv_listitem_dislike
)
as
ImageView
adViewHolder
.
mCreativeButton
=
convertView
.
findViewById
<
View
>(
R
.
id
.
btn_listitem_creative
)
as
Button
adViewHolder
.
app_info
=
convertView
.
findViewById
<
LinearLayout
>(
R
.
id
.
app_info
)
adViewHolder
.
app_name
=
convertView
.
findViewById
<
TextView
>(
R
.
id
.
app_name
)
adViewHolder
.
author_name
=
convertView
.
findViewById
<
TextView
>(
R
.
id
.
author_name
)
adViewHolder
.
package_size
=
convertView
.
findViewById
<
TextView
>(
R
.
id
.
package_size
)
adViewHolder
.
permissions_url
=
convertView
.
findViewById
<
TextView
>(
R
.
id
.
permissions_url
)
adViewHolder
.
permissions_content
=
convertView
.
findViewById
<
TextView
>(
R
.
id
.
permissions_content
)
adViewHolder
.
privacy_agreement
=
convertView
.
findViewById
<
TextView
>(
R
.
id
.
privacy_agreement
)
adViewHolder
.
version_name
=
convertView
.
findViewById
<
TextView
>(
R
.
id
.
version_name
)
val
viewBinder
=
MediationViewBinder
.
Builder
(
R
.
layout
.
mediation_listitem_ad_small_pic
)
.
titleId
(
R
.
id
.
tv_listitem_ad_title
)
.
sourceId
(
R
.
id
.
tv_listitem_ad_source
).
descriptionTextId
(
R
.
id
.
tv_listitem_ad_desc
)
.
mainImageId
(
R
.
id
.
iv_listitem_image
)
.
logoLayoutId
(
R
.
id
.
tt_ad_logo
)
.
callToActionId
(
R
.
id
.
btn_listitem_creative
)
.
iconImageId
(
R
.
id
.
iv_listitem_icon
).
build
()
adViewHolder
.
viewBinder
=
viewBinder
bindData
(
convertView
,
adViewHolder
)
if
(
mTTFeedAd
?.
imageList
?.
size
!=
0
)
{
mTTFeedAd
?.
let
{
ttfeedad
->
ttfeedad
.
imageList
[
0
]
?.
imageUrl
?.
let
{
Glide
.
with
(
ForegroundOrBackground
.
getTopActivity
()).
load
(
it
)
.
into
(
adViewHolder
.
mSmallImage
!!
)
}
}
}
return
convertView
;
}
private
fun
getLargeAdView
(
parent
:
ViewGroup
?):
View
{
val
adViewHolder
=
LargeAdViewHolder
()
var
convertView
:
View
=
LayoutInflater
.
from
(
ForegroundOrBackground
.
getTopActivity
())
.
inflate
(
R
.
layout
.
mediation_listitem_ad_large_pic
,
parent
,
false
)
adViewHolder
.
mTitle
=
convertView
.
findViewById
<
View
>(
R
.
id
.
tv_listitem_ad_title
)
as
TextView
adViewHolder
.
mDescription
=
convertView
.
findViewById
<
View
>(
R
.
id
.
tv_listitem_ad_desc
)
as
TextView
adViewHolder
.
mSource
=
convertView
.
findViewById
<
View
>(
R
.
id
.
tv_listitem_ad_source
)
as
TextView
adViewHolder
.
mLargeImage
=
convertView
.
findViewById
<
View
>(
R
.
id
.
iv_listitem_image
)
as
ImageView
adViewHolder
.
mIcon
=
convertView
.
findViewById
<
View
>(
R
.
id
.
iv_listitem_icon
)
as
ImageView
adViewHolder
.
mDislike
=
convertView
.
findViewById
<
View
>(
R
.
id
.
iv_listitem_dislike
)
as
ImageView
adViewHolder
.
mCreativeButton
=
convertView
.
findViewById
<
View
>(
R
.
id
.
btn_listitem_creative
)
as
Button
adViewHolder
.
mLogo
=
convertView
.
findViewById
<
RelativeLayout
>(
R
.
id
.
tt_ad_logo
)
//logoView 建议传入GroupView类型
adViewHolder
.
app_info
=
convertView
.
findViewById
<
LinearLayout
>(
R
.
id
.
app_info
)
adViewHolder
.
app_name
=
convertView
.
findViewById
<
TextView
>(
R
.
id
.
app_name
)
adViewHolder
.
author_name
=
convertView
.
findViewById
<
TextView
>(
R
.
id
.
author_name
)
adViewHolder
.
package_size
=
convertView
.
findViewById
<
TextView
>(
R
.
id
.
package_size
)
adViewHolder
.
permissions_url
=
convertView
.
findViewById
<
TextView
>(
R
.
id
.
permissions_url
)
adViewHolder
.
permissions_content
=
convertView
.
findViewById
<
TextView
>(
R
.
id
.
permissions_content
)
adViewHolder
.
privacy_agreement
=
convertView
.
findViewById
<
TextView
>(
R
.
id
.
privacy_agreement
)
adViewHolder
.
version_name
=
convertView
.
findViewById
<
TextView
>(
R
.
id
.
version_name
)
val
viewBinder
=
MediationViewBinder
.
Builder
(
R
.
layout
.
mediation_listitem_ad_large_pic
)
.
titleId
(
R
.
id
.
tv_listitem_ad_title
)
.
descriptionTextId
(
R
.
id
.
tv_listitem_ad_desc
).
sourceId
(
R
.
id
.
tv_listitem_ad_source
)
.
mainImageId
(
R
.
id
.
iv_listitem_image
)
.
callToActionId
(
R
.
id
.
btn_listitem_creative
)
.
logoLayoutId
(
R
.
id
.
tt_ad_logo
)
.
iconImageId
(
R
.
id
.
iv_listitem_icon
).
build
()
adViewHolder
.
viewBinder
=
viewBinder
bindData
(
convertView
,
adViewHolder
)
if
(
mTTFeedAd
?.
imageList
?.
size
!=
0
)
{
mTTFeedAd
?.
let
{
ttfeedad
->
ttfeedad
.
imageList
[
0
]
?.
imageUrl
?.
let
{
Glide
.
with
(
ForegroundOrBackground
.
getTopActivity
()).
load
(
it
)
.
into
(
adViewHolder
.
mLargeImage
!!
)
}
}
}
return
convertView
}
private
fun
getGroupAdView
(
parent
:
ViewGroup
?):
View
?
{
val
adViewHolder
=
GroupAdViewHolder
()
var
convertView
:
View
=
LayoutInflater
.
from
(
ForegroundOrBackground
.
getTopActivity
())
.
inflate
(
R
.
layout
.
mediation_listitem_ad_group_pic
,
parent
,
false
)
adViewHolder
.
mTitle
=
convertView
.
findViewById
<
View
>(
R
.
id
.
tv_listitem_ad_title
)
as
TextView
adViewHolder
.
mSource
=
convertView
.
findViewById
<
View
>(
R
.
id
.
tv_listitem_ad_source
)
as
TextView
adViewHolder
.
mDescription
=
convertView
.
findViewById
<
View
>(
R
.
id
.
tv_listitem_ad_desc
)
as
TextView
adViewHolder
.
mGroupImage1
=
convertView
.
findViewById
<
View
>(
R
.
id
.
iv_listitem_image1
)
as
ImageView
adViewHolder
.
mGroupImage2
=
convertView
.
findViewById
<
View
>(
R
.
id
.
iv_listitem_image2
)
as
ImageView
adViewHolder
.
mGroupImage3
=
convertView
.
findViewById
<
View
>(
R
.
id
.
iv_listitem_image3
)
as
ImageView
adViewHolder
.
mIcon
=
convertView
.
findViewById
<
View
>(
R
.
id
.
iv_listitem_icon
)
as
ImageView
adViewHolder
.
mDislike
=
convertView
.
findViewById
<
View
>(
R
.
id
.
iv_listitem_dislike
)
as
ImageView
adViewHolder
.
mCreativeButton
=
convertView
.
findViewById
<
View
>(
R
.
id
.
btn_listitem_creative
)
as
Button
adViewHolder
.
mLogo
=
convertView
.
findViewById
<
RelativeLayout
>(
R
.
id
.
tt_ad_logo
)
//logoView 建议传入GroupView类型
adViewHolder
.
app_info
=
convertView
.
findViewById
<
LinearLayout
>(
R
.
id
.
app_info
)
adViewHolder
.
app_name
=
convertView
.
findViewById
<
TextView
>(
R
.
id
.
app_name
)
adViewHolder
.
author_name
=
convertView
.
findViewById
<
TextView
>(
R
.
id
.
author_name
)
adViewHolder
.
package_size
=
convertView
.
findViewById
<
TextView
>(
R
.
id
.
package_size
)
adViewHolder
.
permissions_url
=
convertView
.
findViewById
<
TextView
>(
R
.
id
.
permissions_url
)
adViewHolder
.
permissions_content
=
convertView
.
findViewById
<
TextView
>(
R
.
id
.
permissions_content
)
adViewHolder
.
privacy_agreement
=
convertView
.
findViewById
<
TextView
>(
R
.
id
.
privacy_agreement
)
adViewHolder
.
version_name
=
convertView
.
findViewById
<
TextView
>(
R
.
id
.
version_name
)
val
viewBinder
=
MediationViewBinder
.
Builder
(
R
.
layout
.
mediation_listitem_ad_group_pic
)
.
titleId
(
R
.
id
.
tv_listitem_ad_title
)
.
descriptionTextId
(
R
.
id
.
tv_listitem_ad_desc
).
sourceId
(
R
.
id
.
tv_listitem_ad_source
)
.
mainImageId
(
R
.
id
.
iv_listitem_image1
)
.
logoLayoutId
(
R
.
id
.
tt_ad_logo
).
callToActionId
(
R
.
id
.
btn_listitem_creative
).
iconImageId
(
R
.
id
.
iv_listitem_icon
)
.
groupImage1Id
(
R
.
id
.
iv_listitem_image1
).
groupImage2Id
(
R
.
id
.
iv_listitem_image2
)
.
groupImage3Id
(
R
.
id
.
iv_listitem_image3
).
build
()
adViewHolder
.
viewBinder
=
viewBinder
bindData
(
convertView
,
adViewHolder
)
if
(
mTTFeedAd
?.
imageList
?.
size
?:
0
>=
3
)
{
val
image1
:
String
?
=
mTTFeedAd
?.
imageList
?.
get
(
0
)
?.
imageUrl
val
image2
:
String
?
=
mTTFeedAd
?.
imageList
?.
get
(
1
)
?.
imageUrl
val
image3
:
String
?
=
mTTFeedAd
?.
imageList
?.
get
(
2
)
?.
imageUrl
if
(
image1
!=
null
)
{
Glide
.
with
(
ForegroundOrBackground
.
getTopActivity
()).
load
(
image1
)
.
into
(
adViewHolder
.
mGroupImage1
!!
)
}
if
(
image2
!=
null
)
{
Glide
.
with
(
ForegroundOrBackground
.
getTopActivity
()).
load
(
image2
)
.
into
(
adViewHolder
.
mGroupImage2
!!
)
}
if
(
image3
!=
null
)
{
Glide
.
with
(
ForegroundOrBackground
.
getTopActivity
()).
load
(
image3
)
.
into
(
adViewHolder
.
mGroupImage3
!!
)
}
}
return
convertView
}
private
fun
getVideoView
(
parent
:
ViewGroup
?):
View
?
{
val
adViewHolder
=
VideoAdViewHolder
()
var
convertView
:
View
?
=
null
try
{
convertView
=
LayoutInflater
.
from
(
ForegroundOrBackground
.
getTopActivity
())
.
inflate
(
R
.
layout
.
mediation_listitem_ad_large_video
,
parent
,
false
)
adViewHolder
.
mTitle
=
convertView
.
findViewById
<
View
>(
R
.
id
.
tv_listitem_ad_title
)
as
TextView
adViewHolder
.
mDescription
=
convertView
.
findViewById
<
View
>(
R
.
id
.
tv_listitem_ad_desc
)
as
TextView
adViewHolder
.
mSource
=
convertView
.
findViewById
<
View
>(
R
.
id
.
tv_listitem_ad_source
)
as
TextView
adViewHolder
.
videoView
=
convertView
.
findViewById
<
View
>(
R
.
id
.
iv_listitem_video
)
as
FrameLayout
adViewHolder
.
mIcon
=
convertView
.
findViewById
<
View
>(
R
.
id
.
iv_listitem_icon
)
as
ImageView
adViewHolder
.
mDislike
=
convertView
.
findViewById
<
View
>(
R
.
id
.
iv_listitem_dislike
)
as
ImageView
adViewHolder
.
mCreativeButton
=
convertView
.
findViewById
<
View
>(
R
.
id
.
btn_listitem_creative
)
as
Button
adViewHolder
.
mLogo
=
convertView
.
findViewById
<
RelativeLayout
>(
R
.
id
.
tt_ad_logo
)
//logoView 建议传入GroupView类型
adViewHolder
.
app_info
=
convertView
.
findViewById
<
LinearLayout
>(
R
.
id
.
app_info
)
adViewHolder
.
app_name
=
convertView
.
findViewById
<
TextView
>(
R
.
id
.
app_name
)
adViewHolder
.
author_name
=
convertView
.
findViewById
<
TextView
>(
R
.
id
.
author_name
)
adViewHolder
.
package_size
=
convertView
.
findViewById
<
TextView
>(
R
.
id
.
package_size
)
adViewHolder
.
permissions_url
=
convertView
.
findViewById
<
TextView
>(
R
.
id
.
permissions_url
)
adViewHolder
.
permissions_content
=
convertView
.
findViewById
<
TextView
>(
R
.
id
.
permissions_content
)
adViewHolder
.
privacy_agreement
=
convertView
.
findViewById
<
TextView
>(
R
.
id
.
privacy_agreement
)
adViewHolder
.
version_name
=
convertView
.
findViewById
<
TextView
>(
R
.
id
.
version_name
)
val
viewBinder
=
MediationViewBinder
.
Builder
(
R
.
layout
.
mediation_listitem_ad_large_video
)
.
titleId
(
R
.
id
.
tv_listitem_ad_title
)
.
sourceId
(
R
.
id
.
tv_listitem_ad_source
)
.
descriptionTextId
(
R
.
id
.
tv_listitem_ad_desc
)
.
mediaViewIdId
(
R
.
id
.
iv_listitem_video
)
.
callToActionId
(
R
.
id
.
btn_listitem_creative
)
.
logoLayoutId
(
R
.
id
.
tt_ad_logo
)
.
iconImageId
(
R
.
id
.
iv_listitem_icon
).
build
()
adViewHolder
.
viewBinder
=
viewBinder
// 如果自己有需求进行视频播放操作,则按如下步骤进行。注意:不是所有adn都支持,因此需要进行判空操作。
// mTTFeedAd?.csjmAdInfo?.setUseCustomVideo(true) // 注意:要在registerView之前调用
val
videoUrl
:
String
?
=
mTTFeedAd
?.
customVideo
?.
videoUrl
// 注意:不是所有adn都支持,这里务必要进行判空操作
if
(!
TextUtils
.
isEmpty
(
videoUrl
))
{
// 如果通过getVideoUrl返回的url不是空,则自己处理视频播放操作,并通过reporter上报视频状态
playAdVideo
(
adViewHolder
.
videoView
as
FrameLayout
,
videoUrl
?:
""
)
}
else
{
// 注意:即使该adn支持返回url,但某次偶然原因返回的videoUrl为空,则仍然会用adn自己的视频播放作为兜底
}
//视频广告设置播放状态回调(可选)
mTTFeedAd
?.
setVideoAdListener
(
object
:
TTFeedAd
.
VideoAdListener
{
override
fun
onVideoLoad
(
ad
:
TTFeedAd
?)
{
Log
.
i
(
TAG
,
"onVideoLoad"
)
}
override
fun
onVideoError
(
errorCode
:
Int
,
extraCode
:
Int
)
{
Log
.
i
(
TAG
,
"onVideoError"
)
}
override
fun
onVideoAdStartPlay
(
ad
:
TTFeedAd
?)
{
Log
.
i
(
TAG
,
"onVideoAdStartPlay"
)
}
override
fun
onVideoAdPaused
(
ad
:
TTFeedAd
?)
{
Log
.
i
(
TAG
,
"onVideoAdPaused"
)
}
override
fun
onVideoAdContinuePlay
(
ad
:
TTFeedAd
?)
{
Log
.
i
(
TAG
,
"onVideoAdContinuePlay"
)
}
override
fun
onProgressUpdate
(
current
:
Long
,
duration
:
Long
)
{
Log
.
i
(
TAG
,
"onProgressUpdate"
)
}
override
fun
onVideoAdComplete
(
ad
:
TTFeedAd
?)
{
Log
.
i
(
TAG
,
"onVideoAdComplete"
)
}
})
mTTFeedAd
?.
setDownloadListener
(
object
:
TTAppDownloadListener
{
override
fun
onIdle
()
{
Log
.
i
(
TAG
,
"setDownloadListener"
)
}
override
fun
onDownloadActive
(
totalBytes
:
Long
,
currBytes
:
Long
,
fileName
:
String
?,
appName
:
String
?
)
{
Log
.
i
(
TAG
,
"onDownloadActive"
)
}
override
fun
onDownloadPaused
(
totalBytes
:
Long
,
currBytes
:
Long
,
fileName
:
String
?,
appName
:
String
?
)
{
Log
.
i
(
TAG
,
"onDownloadPaused"
)
}
override
fun
onDownloadFailed
(
totalBytes
:
Long
,
currBytes
:
Long
,
fileName
:
String
?,
appName
:
String
?
)
{
Log
.
i
(
TAG
,
"onDownloadFailed"
)
}
override
fun
onDownloadFinished
(
totalBytes
:
Long
,
fileName
:
String
?,
appName
:
String
?
)
{
Log
.
i
(
TAG
,
"onDownloadFinished"
)
}
override
fun
onInstalled
(
fileName
:
String
?,
appName
:
String
?)
{
Log
.
i
(
TAG
,
"onInstalled"
)
}
})
//绑定广告数据、设置交互回调
bindData
(
convertView
,
adViewHolder
)
}
catch
(
e
:
Exception
)
{
e
.
printStackTrace
()
}
return
convertView
}
private
var
mVideoView
:
VideoView
?
=
null
private
var
customVideoReporter
:
TTFeedAd
.
CustomizeVideo
?
=
null
private
fun
playAdVideo
(
videoContainer
:
ViewGroup
,
videoUrl
:
String
)
{
mVideoView
=
VideoView
(
MintsApplication
.
getContext
())
videoContainer
.
addView
(
mVideoView
)
customVideoReporter
=
mTTFeedAd
?.
customVideo
// 开发者根据自己的需求,做相应的视频控制界面,播放暂停等
mVideoView
?.
setVideoURI
(
Uri
.
parse
(
videoUrl
))
mVideoView
?.
setOnErrorListener
{
mp
,
what
,
extra
->
if
(
customVideoReporter
!=
null
)
{
customVideoReporter
?.
reportVideoError
(
mVideoView
!!
.
currentPosition
.
toLong
(),
what
,
extra
)
}
false
}
mVideoView
?.
setOnCompletionListener
{
if
(
customVideoReporter
!=
null
)
{
customVideoReporter
?.
reportVideoFinish
()
}
}
mVideoView
?.
start
()
customVideoReporter
?.
reportVideoStart
()
}
private
fun
getVerticalAdView
(
parent
:
ViewGroup
?):
View
?
{
val
adViewHolder
=
VerticalAdViewHolder
()
var
convertView
=
LayoutInflater
.
from
(
ForegroundOrBackground
.
getTopActivity
())
.
inflate
(
R
.
layout
.
mediation_listitem_ad_vertical_pic
,
parent
,
false
)
adViewHolder
.
mTitle
=
convertView
.
findViewById
<
View
>(
R
.
id
.
tv_listitem_ad_title
)
as
TextView
adViewHolder
.
mSource
=
convertView
.
findViewById
<
View
>(
R
.
id
.
tv_listitem_ad_source
)
as
TextView
adViewHolder
.
mDescription
=
convertView
?.
findViewById
<
View
>(
R
.
id
.
tv_listitem_ad_desc
)
as
TextView
adViewHolder
.
mVerticalImage
=
convertView
.
findViewById
<
ImageView
>(
R
.
id
.
iv_listitem_image
)
adViewHolder
.
mIcon
=
convertView
.
findViewById
<
View
>(
R
.
id
.
iv_listitem_icon
)
as
ImageView
adViewHolder
.
mDislike
=
convertView
.
findViewById
<
View
>(
R
.
id
.
iv_listitem_dislike
)
as
ImageView
adViewHolder
.
mCreativeButton
=
convertView
.
findViewById
<
View
>(
R
.
id
.
btn_listitem_creative
)
as
Button
// adViewHolder.mLogo =
// convertView.findViewById<RelativeLayout>(R.id.tt_ad_logo) //logoView 建议传入GroupView类型
adViewHolder
.
app_info
=
convertView
.
findViewById
<
LinearLayout
>(
R
.
id
.
app_info
)
adViewHolder
.
app_name
=
convertView
.
findViewById
<
TextView
>(
R
.
id
.
app_name
)
adViewHolder
.
author_name
=
convertView
.
findViewById
<
TextView
>(
R
.
id
.
author_name
)
adViewHolder
.
package_size
=
convertView
.
findViewById
<
TextView
>(
R
.
id
.
package_size
)
adViewHolder
.
permissions_url
=
convertView
.
findViewById
<
TextView
>(
R
.
id
.
permissions_url
)
adViewHolder
.
permissions_content
=
convertView
.
findViewById
<
TextView
>(
R
.
id
.
permissions_content
)
adViewHolder
.
privacy_agreement
=
convertView
.
findViewById
<
TextView
>(
R
.
id
.
privacy_agreement
)
adViewHolder
.
version_name
=
convertView
.
findViewById
<
TextView
>(
R
.
id
.
version_name
)
val
viewBinder
=
MediationViewBinder
.
Builder
(
R
.
layout
.
mediation_listitem_ad_vertical_pic
)
.
titleId
(
R
.
id
.
tv_listitem_ad_title
)
.
descriptionTextId
(
R
.
id
.
tv_listitem_ad_desc
)
.
mainImageId
(
R
.
id
.
iv_listitem_image
)
.
iconImageId
(
R
.
id
.
iv_listitem_icon
)
.
callToActionId
(
R
.
id
.
btn_listitem_creative
)
.
sourceId
(
R
.
id
.
tv_listitem_ad_source
)
.
logoLayoutId
(
R
.
id
.
tt_ad_logo
)
//logoView 建议传入GroupView类型
.
build
()
adViewHolder
.
viewBinder
=
viewBinder
bindData
(
convertView
,
adViewHolder
)
if
(
mTTFeedAd
?.
imageList
?.
size
!=
0
)
{
mTTFeedAd
?.
let
{
ttfeedad
->
ttfeedad
.
imageList
[
0
]
?.
imageUrl
?.
let
{
Glide
.
with
(
ForegroundOrBackground
.
getTopActivity
()).
load
(
it
)
.
into
(
adViewHolder
.
mVerticalImage
!!
)
}
}
}
return
convertView
}
private
fun
bindData
(
convertView
:
View
,
adViewHolder
:
AdViewHolder
)
{
mTTFeedAd
?.
let
{
if
(
it
.
mediationManager
?.
hasDislike
()
==
true
)
{
val
ttAdDislike
:
TTAdDislike
=
it
.
getDislikeDialog
(
ForegroundOrBackground
.
getTopActivity
())
adViewHolder
.
mDislike
?.
visibility
=
View
.
VISIBLE
adViewHolder
.
mDislike
?.
setOnClickListener
(
View
.
OnClickListener
{
//使用接口来展示
ttAdDislike
.
showDislikeDialog
()
ttAdDislike
.
setDislikeInteractionCallback
(
object
:
TTAdDislike
.
DislikeInteractionCallback
{
override
fun
onShow
()
{
Log
.
i
(
TAG
,
"dislike 点击show"
)
}
override
fun
onSelected
(
position
:
Int
,
value
:
String
?,
enforce
:
Boolean
)
{
Log
.
i
(
TAG
,
"点击 $value"
)
//用户选择不喜欢原因后,移除广告展示
frameLayout
?.
removeAllViews
()
}
override
fun
onCancel
()
{
Log
.
i
(
TAG
,
"dislike 点击了取消"
)
}
})
})
}
else
{
if
(
adViewHolder
.
mDislike
!=
null
)
adViewHolder
.
mDislike
?.
visibility
=
View
.
GONE
}
setDownLoadAppInfo
(
it
,
adViewHolder
)
//可以被点击的view, 也可以把convertView放进来意味item可被点击
val
clickViewList
:
MutableList
<
View
?>
=
ArrayList
()
clickViewList
.
add
(
convertView
)
clickViewList
.
add
(
adViewHolder
.
mSource
)
clickViewList
.
add
(
adViewHolder
.
mTitle
)
clickViewList
.
add
(
adViewHolder
.
mDescription
)
clickViewList
.
add
(
adViewHolder
.
mIcon
)
//添加点击区域
if
(
adViewHolder
is
LargeAdViewHolder
)
{
clickViewList
.
add
(
adViewHolder
.
mLargeImage
)
}
else
if
(
adViewHolder
is
SmallAdViewHolder
)
{
clickViewList
.
add
(
adViewHolder
.
mSmallImage
)
}
else
if
(
adViewHolder
is
VerticalAdViewHolder
)
{
clickViewList
.
add
(
adViewHolder
.
mVerticalImage
)
}
else
if
(
adViewHolder
is
VideoAdViewHolder
)
{
clickViewList
.
add
(
adViewHolder
.
videoView
)
}
else
if
(
adViewHolder
is
GroupAdViewHolder
)
{
clickViewList
.
add
(
adViewHolder
.
mGroupImage1
)
clickViewList
.
add
(
adViewHolder
.
mGroupImage2
)
clickViewList
.
add
(
adViewHolder
.
mGroupImage3
)
}
//触发创意广告的view(点击下载或拨打电话)
val
creativeViewList
:
MutableList
<
View
?>
=
ArrayList
()
creativeViewList
.
add
(
adViewHolder
.
mCreativeButton
)
//重要! 这个涉及到广告计费,必须正确调用。**** convertView必须是com.bytedance.msdk.api.format.TTNativeAdView ****
it
.
registerViewForInteraction
(
ForegroundOrBackground
.
getTopActivity
(),
convertView
as
ViewGroup
,
clickViewList
,
creativeViewList
,
null
,
object
:
TTNativeAd
.
AdInteractionListener
{
override
fun
onAdClicked
(
view
:
View
?,
ad
:
TTNativeAd
?)
{
Log
.
i
(
TAG
,
"onAdClicked"
)
}
override
fun
onAdCreativeClick
(
view
:
View
?,
ad
:
TTNativeAd
?)
{
Log
.
i
(
TAG
,
"onAdCreativeClick"
)
}
override
fun
onAdShow
(
ad
:
TTNativeAd
?)
{
Log
.
i
(
TAG
,
"onAdShow"
)
ad
?.
let
{
// PrintUtil.printShowInfo(ad.mediationManager)
}
}
},
adViewHolder
.
viewBinder
)
adViewHolder
.
mTitle
?.
text
=
it
.
title
//title为广告的简单信息提示
adViewHolder
.
mDescription
?.
text
=
it
.
description
//description为广告的较长的说明
adViewHolder
.
mSource
?.
text
=
if
(
TextUtils
.
isEmpty
(
it
.
source
))
"广告来源"
else
it
.
source
val
icon
:
TTImage
?
=
it
.
icon
if
(
icon
!=
null
)
{
Glide
.
with
(
ForegroundOrBackground
.
getTopActivity
()).
load
(
icon
.
imageUrl
)
.
into
(
adViewHolder
.
mIcon
!!
)
}
val
adCreativeButton
=
adViewHolder
.
mCreativeButton
when
(
it
.
interactionType
)
{
TTAdConstant
.
INTERACTION_TYPE_DOWNLOAD
->
{
adCreativeButton
?.
visibility
=
View
.
VISIBLE
;
adCreativeButton
?.
setText
(
it
.
buttonText
?:
"立即下载"
)
}
TTAdConstant
.
INTERACTION_TYPE_DIAL
->
{
adCreativeButton
?.
visibility
=
View
.
VISIBLE
;
adCreativeButton
?.
setText
(
"立即拨打"
);
}
TTAdConstant
.
INTERACTION_TYPE_LANDING_PAGE
,
TTAdConstant
.
INTERACTION_TYPE_BROWSER
->
{
adCreativeButton
?.
visibility
=
View
.
VISIBLE
;
adCreativeButton
?.
setText
(
it
.
buttonText
?:
"查看详情"
)
}
else
->
{
adCreativeButton
?.
visibility
=
View
.
GONE
Log
.
i
(
TAG
,
"交互类型异常"
)
}
}
}
}
private
fun
setDownLoadAppInfo
(
ttNativeAd
:
TTFeedAd
,
adViewHolder
:
AdViewHolder
)
{
if
(
ttNativeAd
.
complianceInfo
==
null
)
{
adViewHolder
.
app_info
?.
visibility
=
View
.
GONE
}
else
{
adViewHolder
.
app_info
?.
visibility
=
View
.
VISIBLE
val
appInfo
=
ttNativeAd
.
complianceInfo
adViewHolder
.
app_name
?.
text
=
"应用名称:"
+
appInfo
.
appName
adViewHolder
.
author_name
?.
text
=
"开发者:"
+
appInfo
.
developerName
adViewHolder
.
package_size
?.
text
=
"包大小:不支持"
adViewHolder
.
permissions_url
?.
text
=
"权限url:不支持"
adViewHolder
.
privacy_agreement
?.
text
=
"隐私url:"
+
appInfo
.
privacyUrl
adViewHolder
.
version_name
?.
text
=
"版本号:"
+
appInfo
.
appVersion
adViewHolder
.
permissions_content
!!
.
text
=
"权限内容:"
+
getPermissionsContent
(
appInfo
.
permissionsMap
)
}
}
private
fun
getPermissionsContent
(
permissionsMap
:
Map
<
String
,
String
>?):
String
{
if
(
permissionsMap
==
null
)
{
return
""
}
val
stringBuffer
=
StringBuffer
()
val
keyList
=
permissionsMap
.
keys
for
(
s
in
keyList
)
{
stringBuffer
.
append
(
"""$s : ${permissionsMap[s]} """
)
}
return
stringBuffer
.
toString
()
}
private
class
VideoAdViewHolder
:
AdViewHolder
()
{
var
videoView
:
FrameLayout
?
=
null
}
private
class
LargeAdViewHolder
:
AdViewHolder
()
{
var
mLargeImage
:
ImageView
?
=
null
}
private
class
SmallAdViewHolder
:
AdViewHolder
()
{
var
mSmallImage
:
ImageView
?
=
null
}
private
class
VerticalAdViewHolder
:
AdViewHolder
()
{
var
mVerticalImage
:
ImageView
?
=
null
}
private
class
GroupAdViewHolder
:
AdViewHolder
()
{
var
mGroupImage1
:
ImageView
?
=
null
var
mGroupImage2
:
ImageView
?
=
null
var
mGroupImage3
:
ImageView
?
=
null
}
private
class
ExpressAdViewHolder
{
var
mAdContainerView
:
FrameLayout
?
=
null
}
open
private
class
AdViewHolder
{
var
viewBinder
:
MediationViewBinder
?
=
null
var
mIcon
:
ImageView
?
=
null
var
mDislike
:
ImageView
?
=
null
var
mCreativeButton
:
Button
?
=
null
var
mTitle
:
TextView
?
=
null
var
mDescription
:
TextView
?
=
null
var
mSource
:
TextView
?
=
null
var
mLogo
:
RelativeLayout
?
=
null
var
app_info
:
LinearLayout
?
=
null
var
app_name
:
TextView
?
=
null
var
author_name
:
TextView
?
=
null
var
package_size
:
TextView
?
=
null
var
permissions_url
:
TextView
?
=
null
var
privacy_agreement
:
TextView
?
=
null
var
version_name
:
TextView
?
=
null
var
permissions_content
:
TextView
?
=
null
}
}
\ No newline at end of file
video/app/src/main/java/com/mints/helivideo/ui/activitys/MobileLoginActivity.kt
View file @
5d609ef7
...
...
@@ -138,7 +138,7 @@ class MobileLoginActivity : BaseActivity(), LoginView, View.OnClickListener {
if
(
isFinishing
)
return
// false-登录 true-绑定手机号
showToast
(
"
登录
成功"
)
showToast
(
"
绑定
成功"
)
hideLoading
()
...
...
@@ -158,13 +158,8 @@ class MobileLoginActivity : BaseActivity(), LoginView, View.OnClickListener {
}
private
fun
initView
()
{
if
(
TextUtils
.
equals
(
enterType
,
"vip"
))
{
tv_title
.
text
=
"绑定手机号"
tvLoginNext
.
text
=
"立即绑定"
}
else
{
tv_title
.
text
=
"手机号登录"
tvLoginNext
.
text
=
"立即登录"
}
tvLoginNext
.
text
=
"绑定手机号"
iv_left_icon
.
visibility
=
View
.
VISIBLE
iv_left_icon
.
setImageResource
(
R
.
mipmap
.
ic_arrow_back
)
...
...
video/app/src/main/java/com/mints/helivideo/ui/fragment/MyFragment.kt
View file @
5d609ef7
...
...
@@ -6,12 +6,16 @@ import android.os.Handler
import
android.os.Looper
import
android.text.TextUtils
import
android.view.View
import
android.widget.FrameLayout
import
com.daimajia.androidanimations.library.Techniques
import
com.daimajia.androidanimations.library.YoYo
import
com.mints.helivideo.R
import
com.mints.helivideo.ad.AdManager
import
com.mints.helivideo.ad.AdStatusListener
import
com.mints.helivideo.ad.NoPreAdManager
import
com.mints.helivideo.ad.express.ExpressAdCallback
import
com.mints.helivideo.ad.express.ExpressManager
import
com.mints.helivideo.ad.express.MyExpressManager
import
com.mints.helivideo.common.AppConfig
import
com.mints.helivideo.common.Constant
import
com.mints.helivideo.manager.UserManager
...
...
@@ -27,6 +31,7 @@ import com.mints.helivideo.ui.widgets.NineContinueDialog
import
com.mints.helivideo.utils.AppPreferencesManager
import
com.mints.helivideo.utils.SpanUtils
import
com.mints.helivideo.utils.TimeRender
import
com.mints.helivideo.utils.UIUtils
import
com.mints.helivideo.utils.rxutil.CommonRxTask
import
com.mints.helivideo.utils.rxutil.RxjavaUtil
import
com.mints.library.utils.nodoubleclick.AntiShake
...
...
@@ -84,6 +89,11 @@ class MyFragment : LazyLoadBaseFragment(), MyView, View.OnClickListener {
if
(
AppConfig
.
fragmentClickFlag
==
Constant
.
FRAGMENT_CLICK_THREE
)
{
if
(
AntiShake
.
check
(
ll_my_record
?.
id
))
return
if
(
userManager
.
vipFlag
){
MyExpressManager
.
instance
.
preLoadAd
()
showAd
()
}
if
(!
TextUtils
.
isEmpty
(
userManager
?.
userID
))
{
myPresenter
.
showTurn
()
myPresenter
.
getMyInfo
()
...
...
@@ -156,7 +166,7 @@ class MyFragment : LazyLoadBaseFragment(), MyView, View.OnClickListener {
iv_my_bind
.
visibility
=
View
.
GONE
}
else
{
// 未登录
tv_my_account
.
text
=
"
登录/注册
"
tv_my_account
.
text
=
"
绑定手机号
"
iv_my_bind
.
visibility
=
View
.
VISIBLE
}
...
...
@@ -380,4 +390,31 @@ class MyFragment : LazyLoadBaseFragment(), MyView, View.OnClickListener {
}
//----9宫格逻辑--结束--//
private
fun
showAd
()
{
MyExpressManager
.
instance
.
getAdView
(
object
:
ExpressAdCallback
{
override
fun
loadSuccess
(
adView
:
FrameLayout
?)
{
adView
?.
let
{
UIUtils
.
removeFromParent
(
it
)
fl_ad
.
removeAllViews
()
fl_ad
.
addView
(
it
)
}
MyExpressManager
.
instance
.
preLoadAd
()
}
override
fun
renderSuccess
(
adView
:
FrameLayout
?):
Boolean
{
adView
?.
let
{
UIUtils
.
removeFromParent
(
it
)
fl_ad
.
removeAllViews
()
fl_ad
.
addView
(
it
)
}
MyExpressManager
.
instance
.
preLoadAd
()
return
false
}
override
fun
loadFail
()
{
}
})
}
}
\ No newline at end of file
video/app/src/main/res/layout/activity_mobile_login.xml
View file @
5d609ef7
...
...
@@ -149,7 +149,7 @@
android:layout_marginRight=
"40dp"
android:background=
"@drawable/shape_red"
android:gravity=
"center"
android:text=
"
立即登录
"
android:text=
"
绑定手机号
"
android:textColor=
"@color/white"
android:textSize=
"20sp"
/>
...
...
video/app/src/main/res/layout/fragment_main_my.xml
View file @
5d609ef7
...
...
@@ -40,7 +40,7 @@
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_vertical"
android:layout_marginStart=
"10dp"
android:text=
"
登录/注册
"
android:text=
"
绑定手机号
"
android:textColor=
"#000000"
android:textSize=
"20sp"
android:textStyle=
"bold"
/>
...
...
@@ -306,6 +306,12 @@
</LinearLayout>
</FrameLayout>
<com.mints.helivideo.ui.widgets.RoundRectLayout
android:id=
"@+id/fl_ad"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:background=
"@drawable/shape_bg_write"
/>
</LinearLayout>
</ScrollView>
...
...
video/gradle.properties
View file @
5d609ef7
...
...
@@ -50,5 +50,6 @@ GROMORE_APP_ID="5412556"
GROMORE_SPLASH_CODE="102398740"
GROMORE_VIDEO_CODE
=
"102398300"
GROMORE_EXPRESS_CODE="102405261"
GROMORE_MYEXPRESS_CODE
=
"102413160"
GROMORE_DRAW_CODE="102405069"
GROMORE_BANNER_CODE
=
"102405532"
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment