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
c2c199f6
Commit
c2c199f6
authored
Aug 15, 2023
by
jyx
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
我的页面添加信息流
parent
81eecdef
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
961 additions
and
22 deletions
+961
-22
build.gradle
video/app/build.gradle
+4
-2
MyExpressManager.kt
...va/com/duben/miaoquplaylet/ad/express/MyExpressManager.kt
+896
-0
MobileLoginActivity.kt
...m/duben/miaoquplaylet/ui/activitys/MobileLoginActivity.kt
+3
-8
MyFragment.kt
...in/java/com/duben/miaoquplaylet/ui/fragment/MyFragment.kt
+39
-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
+17
-10
gradle.properties
video/gradle.properties
+1
-0
No files found.
video/app/build.gradle
View file @
c2c199f6
...
...
@@ -12,8 +12,8 @@ android {
applicationId
"com.duben.miaoquplaylet"
minSdkVersion
rootProject
.
ext
.
androidMinSdkVersion
targetSdkVersion
rootProject
.
ext
.
androidTargetSdkVersion
versionCode
2
versionName
"1.0.
1
"
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/duben/miaoquplaylet/ad/express/MyExpressManager.kt
0 → 100644
View file @
c2c199f6
package
com.duben.miaoquplaylet.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.duben.miaoquplaylet.MintsApplication
import
com.duben.miaoquplaylet.BuildConfig
import
com.duben.miaoquplaylet.R
import
com.duben.miaoquplaylet.ad.AdManager
import
com.duben.miaoquplaylet.utils.ForegroundOrBackground
import
com.duben.miaoquplaylet.utils.LogUtil
import
com.duben.miaoquplaylet.utils.TimeRender
import
com.duben.miaoquplaylet.utils.UIUtils
import
java.lang.Exception
import
java.util.ArrayList
/**
* 信息流
*/
class
MyExpressManager
{
private
val
TAG
=
MyExpressManager
::
class
.
java
.
simpleName
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/duben/miaoquplaylet/ui/activitys/MobileLoginActivity.kt
View file @
c2c199f6
...
...
@@ -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
=
"立即登录"
}
tv_title
.
text
=
"绑定手机号"
tvLoginNext
.
text
=
"立即绑定"
iv_left_icon
.
visibility
=
View
.
VISIBLE
iv_left_icon
.
setImageResource
(
R
.
mipmap
.
ic_arrow_back
)
...
...
video/app/src/main/java/com/duben/miaoquplaylet/ui/fragment/MyFragment.kt
View file @
c2c199f6
...
...
@@ -6,6 +6,7 @@ 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.duben.miaoquplaylet.R
...
...
@@ -30,6 +31,9 @@ import com.duben.miaoquplaylet.utils.TimeRender
import
com.duben.miaoquplaylet.utils.rxutil.CommonRxTask
import
com.duben.miaoquplaylet.utils.rxutil.RxjavaUtil
import
com.duben.library.utils.nodoubleclick.AntiShake
import
com.duben.miaoquplaylet.ad.express.ExpressAdCallback
import
com.duben.miaoquplaylet.ad.express.MyExpressManager
import
com.duben.miaoquplaylet.utils.UIUtils
import
kotlinx.android.synthetic.main.fragment_main_my.*
/**
...
...
@@ -84,6 +88,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 +165,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 +389,33 @@ 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 @
c2c199f6
...
...
@@ -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 @
c2c199f6
...
...
@@ -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"
/>
...
...
@@ -70,10 +70,10 @@
android:layout_height=
"wrap_content"
android:layout_marginLeft=
"10dp"
android:layout_marginRight=
"10dp"
android:visibility=
"gone"
android:background=
"@mipmap/bg_my_vip"
android:orientation=
"vertical"
android:paddingLeft=
"24dp"
>
android:paddingLeft=
"24dp"
android:visibility=
"gone"
>
<TextView
android:id=
"@+id/tv_my_vip"
...
...
@@ -108,11 +108,11 @@
<RelativeLayout
android:id=
"@+id/rl_lucky"
android:visibility=
"gone"
android:layout_width=
"300dp"
android:layout_height=
"300dp"
android:layout_gravity=
"center_horizontal"
android:layout_marginTop=
"10dp"
android:
layout_gravity=
"center_horizontal
"
>
android:
visibility=
"gone
"
>
<com.duben.miaoquplaylet.ui.widgets.luckymonkeypanel.LuckyMonkeyPanelView
android:id=
"@+id/lucky_panel"
...
...
@@ -141,10 +141,10 @@
</RelativeLayout>
<LinearLayout
android:layout_marginTop=
"10dp"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginStart=
"14dp"
android:layout_marginTop=
"10dp"
android:layout_marginEnd=
"14dp"
android:layout_marginBottom=
"10dp"
android:background=
"@drawable/shape_bg_mobile"
...
...
@@ -212,14 +212,14 @@
android:background=
"@color/my_color_gray"
/>
<LinearLayout
android:visibility=
"gone"
android:id=
"@+id/ll_my_payrecord"
android:layout_width=
"match_parent"
android:layout_height=
"50dp"
android:gravity=
"center_vertical"
android:orientation=
"horizontal"
android:paddingStart=
"20dp"
android:paddingEnd=
"15dp"
>
android:paddingEnd=
"15dp"
android:visibility=
"gone"
>
<TextView
android:layout_width=
"0dp"
...
...
@@ -276,14 +276,14 @@
android:background=
"@color/my_color_gray"
/>
<LinearLayout
android:visibility=
"gone"
android:id=
"@+id/ll_contactus"
android:layout_width=
"match_parent"
android:layout_height=
"50dp"
android:gravity=
"center_vertical"
android:orientation=
"horizontal"
android:paddingStart=
"20dp"
android:paddingEnd=
"15dp"
>
android:paddingEnd=
"15dp"
android:visibility=
"gone"
>
<TextView
android:id=
"@+id/tv_contact"
...
...
@@ -306,6 +306,13 @@
</LinearLayout>
</FrameLayout>
<com.duben.miaoquplaylet.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 @
c2c199f6
...
...
@@ -50,5 +50,6 @@ GROMORE_APP_ID="5418501"
GROMORE_SPLASH_CODE
=
"102412552"
GROMORE_VIDEO_CODE="102412179"
GROMORE_EXPRESS_CODE
=
"102412550"
GROMORE_MYEXPRESS_CODE="102424560"
GROMORE_DRAW_CODE
=
"102412837"
GROMORE_BANNER_CODE="102412551"
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