Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Sign in / Register
Toggle navigation
E
Easy Cleaner Junk
Project
Project
Details
Activity
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
Packages
Packages
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wanglei
Easy Cleaner Junk
Commits
1ffd1573
Commit
1ffd1573
authored
Aug 05, 2024
by
maxiaoliang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
1
parent
8e35d0a9
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
309 additions
and
24 deletions
+309
-24
AndroidManifest.xml
app/src/main/AndroidManifest.xml
+2
-0
NewMainActivity.kt
...est/easy/easycleanerjunk/activity/home/NewMainActivity.kt
+2
-0
CleanJunkActivity.kt
...sy/easycleanerjunk/activity/scanjunk/CleanJunkActivity.kt
+34
-14
PrepareScanActivity.kt
.../easycleanerjunk/activity/scanjunk/PrepareScanActivity.kt
+11
-6
PrepareScanAt.kt
...t/easy/easycleanerjunk/activity/scanjunk/PrepareScanAt.kt
+173
-0
HomeFragment.kt
...va/com/test/easy/easycleanerjunk/fragment/HomeFragment.kt
+1
-0
ConfigHelper.kt
.../java/com/test/easy/easycleanerjunk/helps/ConfigHelper.kt
+2
-1
AdmobBannerUtils.kt
...m/test/easy/easycleanerjunk/helps/ads/AdmobBannerUtils.kt
+53
-0
AdsUtils.kt
.../java/com/test/easy/easycleanerjunk/helps/ads/AdsUtils.kt
+14
-0
activity_main.xml
app/src/main/res/layout/activity_main.xml
+17
-3
No files found.
app/src/main/AndroidManifest.xml
View file @
1ffd1573
...
@@ -148,6 +148,8 @@
...
@@ -148,6 +148,8 @@
android:launchMode=
"singleTop"
android:launchMode=
"singleTop"
android:screenOrientation=
"portrait"
android:screenOrientation=
"portrait"
tools:ignore=
"DiscouragedApi,LockedOrientationActivity"
/>
tools:ignore=
"DiscouragedApi,LockedOrientationActivity"
/>
<activity
android:name=
".activity.scanjunk.PrepareScanAt"
android:screenOrientation=
"portrait"
/>
<activity
<activity
android:name=
".activity.batteryinfo.BatteryInfoActivity"
android:name=
".activity.batteryinfo.BatteryInfoActivity"
android:launchMode=
"singleTop"
android:launchMode=
"singleTop"
...
...
app/src/main/java/com/test/easy/easycleanerjunk/activity/home/NewMainActivity.kt
View file @
1ffd1573
...
@@ -15,6 +15,7 @@ import com.test.easy.easycleanerjunk.fragment.HomeFragment
...
@@ -15,6 +15,7 @@ import com.test.easy.easycleanerjunk.fragment.HomeFragment
import
com.test.easy.easycleanerjunk.fragment.ToolsFragment
import
com.test.easy.easycleanerjunk.fragment.ToolsFragment
import
com.test.easy.easycleanerjunk.helps.BaseActivity
import
com.test.easy.easycleanerjunk.helps.BaseActivity
import
com.test.easy.easycleanerjunk.helps.EventUtils
import
com.test.easy.easycleanerjunk.helps.EventUtils
import
com.test.easy.easycleanerjunk.helps.ads.AdmobBannerUtils
import
com.test.easy.easycleanerjunk.utils.BarUtils
import
com.test.easy.easycleanerjunk.utils.BarUtils
import
com.test.easy.easycleanerjunk.utils.SPUtils
import
com.test.easy.easycleanerjunk.utils.SPUtils
import
com.test.easy.easycleanerjunk.view.NotifyTips
import
com.test.easy.easycleanerjunk.view.NotifyTips
...
@@ -47,6 +48,7 @@ class NewMainActivity : BaseActivity<ActivityMainBinding>() {
...
@@ -47,6 +48,7 @@ class NewMainActivity : BaseActivity<ActivityMainBinding>() {
// ConfigHelper.enterHomeTimes++
// ConfigHelper.enterHomeTimes++
BarUtils
.
setStatusBarLightMode
(
this
,
true
)
BarUtils
.
setStatusBarLightMode
(
this
,
true
)
BarUtils
.
setStatusBarColor
(
this
,
Color
.
TRANSPARENT
)
BarUtils
.
setStatusBarColor
(
this
,
Color
.
TRANSPARENT
)
AdmobBannerUtils
.
showCollapsibleBannerAd
(
this
,
binding
.
banner
)
// binding.root.updatePadding(top = BarUtils.getStatusBarHeight())
// binding.root.updatePadding(top = BarUtils.getStatusBarHeight())
EventUtils
.
event
(
"page_home"
)
EventUtils
.
event
(
"page_home"
)
if
(!
hasNotifications
())
{
if
(!
hasNotifications
())
{
...
...
app/src/main/java/com/test/easy/easycleanerjunk/activity/scanjunk/CleanJunkActivity.kt
View file @
1ffd1573
...
@@ -133,16 +133,40 @@ class CleanJunkActivity : BaseActivity<ActivityLayoutCleanJunkBinding>() {
...
@@ -133,16 +133,40 @@ class CleanJunkActivity : BaseActivity<ActivityLayoutCleanJunkBinding>() {
})
})
binding
.
idClBtn
.
setOnClickListener
{
binding
.
idClBtn
.
setOnClickListener
{
if
(
binding
.
idClBtn
.
text
==
"Got it"
)
{
if
(
binding
.
idClBtn
.
text
==
"Got it"
)
{
startActivity
(
Intent
(
this
@CleanJunkActivity
,
ResultActivity
::
class
.
java
).
apply
{
if
(
ConfigHelper
.
admobTrueMaxFlase
==
0
){
putExtra
(
"clean_size"
,
0
)
MaxAdUtils
.
showInterstitialAd
(
this
){
putExtra
(
"from"
,
AFunOb
.
JUNK_CLEANER
)
startActivity
(
Intent
(
this
@CleanJunkActivity
,
ResultActivity
::
class
.
java
).
apply
{
})
putExtra
(
"clean_size"
,
0
)
putExtra
(
"from"
,
AFunOb
.
JUNK_CLEANER
)
})
}
}
else
{
AdmobUtils
.
showInterstitialAd
(
this
){
startActivity
(
Intent
(
this
@CleanJunkActivity
,
ResultActivity
::
class
.
java
).
apply
{
putExtra
(
"clean_size"
,
0
)
putExtra
(
"from"
,
AFunOb
.
JUNK_CLEANER
)
})
}
}
}
else
{
}
else
{
startActivity
(
if
(
ConfigHelper
.
admobTrueMaxFlase
==
0
)
{
Intent
(
this
,
CleaningActivity
::
class
.
java
)
MaxAdUtils
.
showInterstitialAd
(
this
)
{
.
putExtra
(
"list"
,
selectList
.
toTypedArray
())
startActivity
(
.
putExtra
(
"size"
,
selectSize
)
Intent
(
this
,
CleaningActivity
::
class
.
java
)
)
.
putExtra
(
"list"
,
selectList
.
toTypedArray
())
.
putExtra
(
"size"
,
selectSize
)
)
}
}
else
{
AdmobUtils
.
showInterstitialAd
(
this
){
startActivity
(
Intent
(
this
,
CleaningActivity
::
class
.
java
)
.
putExtra
(
"list"
,
selectList
.
toTypedArray
())
.
putExtra
(
"size"
,
selectSize
)
)
}
}
}
}
finish
()
finish
()
}
}
...
@@ -227,11 +251,7 @@ class CleanJunkActivity : BaseActivity<ActivityLayoutCleanJunkBinding>() {
...
@@ -227,11 +251,7 @@ class CleanJunkActivity : BaseActivity<ActivityLayoutCleanJunkBinding>() {
binding
.
idClBtn
.
isVisible
=
scanCount
>=
3
binding
.
idClBtn
.
isVisible
=
scanCount
>=
3
binding
.
idClBtn
.
isEnabled
=
sizes
.
sum
()
>
0
binding
.
idClBtn
.
isEnabled
=
sizes
.
sum
()
>
0
if
(
scanCount
>=
3
&&
sizes
.
sum
().
toInt
()
==
0
)
{
if
(
scanCount
>=
3
&&
sizes
.
sum
().
toInt
()
==
0
)
{
if
(
ConfigHelper
.
admobTrueMaxFlase
==
0
){
MaxAdUtils
.
showInterstitialAd
(
this
)
}
else
{
AdmobUtils
.
showInterstitialAd
(
this
)
}
// MaxAdUtils.showInterstitialAd(this) {
// MaxAdUtils.showInterstitialAd(this) {
// startActivity(
// startActivity(
// Intent(this, ResultActivity::class.java).putExtra(
// Intent(this, ResultActivity::class.java).putExtra(
...
...
app/src/main/java/com/test/easy/easycleanerjunk/activity/scanjunk/PrepareScanActivity.kt
View file @
1ffd1573
...
@@ -4,7 +4,8 @@ import android.content.Intent
...
@@ -4,7 +4,8 @@ import android.content.Intent
import
android.graphics.Color
import
android.graphics.Color
import
android.util.Log
import
android.util.Log
import
android.view.View
import
android.view.View
import
androidx.activity.OnBackPressedCallback
import
android.widget.Toast
import
androidx.activity.addCallback
import
androidx.core.view.updatePadding
import
androidx.core.view.updatePadding
import
androidx.lifecycle.lifecycleScope
import
androidx.lifecycle.lifecycleScope
import
com.test.easy.easycleanerjunk.databinding.ActivityLayoutParepreScanBinding
import
com.test.easy.easycleanerjunk.databinding.ActivityLayoutParepreScanBinding
...
@@ -41,11 +42,15 @@ class PrepareScanActivity : BaseActivity<ActivityLayoutParepreScanBinding>() {
...
@@ -41,11 +42,15 @@ class PrepareScanActivity : BaseActivity<ActivityLayoutParepreScanBinding>() {
binding
.
idBackJunkScan
.
setOnClickListener
{
binding
.
idBackJunkScan
.
setOnClickListener
{
onBackPressedDispatcher
.
onBackPressed
()
onBackPressedDispatcher
.
onBackPressed
()
}
}
onBackPressedDispatcher
.
addCallback
(
object
:
OnBackPressedCallback
(
true
)
{
onBackPressedDispatcher
.
addCallback
{
override
fun
handleOnBackPressed
()
{
Toast
.
makeText
(
this
@PrepareScanActivity
,
"wait a moment"
,
Toast
.
LENGTH_SHORT
).
show
()
finishToMain
()
}
}
})
// onBackPressedDispatcher.addCallback(object : OnBackPressedCallback(true) {
// override fun handleOnBackPressed() {
// finishToMain()
// }
// })
if
(!
checkStorePermission
())
{
if
(!
checkStorePermission
())
{
showGerPermission
(
showGerPermission
(
deny
=
{
finishToMain
()
},
deny
=
{
finishToMain
()
},
...
...
app/src/main/java/com/test/easy/easycleanerjunk/activity/scanjunk/PrepareScanAt.kt
0 → 100644
View file @
1ffd1573
package
com.test.easy.easycleanerjunk.activity.scanjunk
import
android.content.Intent
import
android.graphics.Color
import
android.util.Log
import
android.view.View
import
android.widget.Toast
import
androidx.activity.addCallback
import
androidx.core.view.updatePadding
import
androidx.lifecycle.lifecycleScope
import
com.test.easy.easycleanerjunk.databinding.ActivityLayoutParepreScanBinding
import
com.test.easy.easycleanerjunk.helps.BaseActivity
import
com.test.easy.easycleanerjunk.helps.ConfigHelper
import
com.test.easy.easycleanerjunk.helps.PermissionHelp.checkStorePermission
import
com.test.easy.easycleanerjunk.helps.PermissionHelp.requestStorePermission
import
com.test.easy.easycleanerjunk.helps.ads.AdsUtils
import
com.test.easy.easycleanerjunk.utils.BarUtils
import
com.test.easy.easycleanerjunk.view.DialogViews.showGerPermission
import
kotlinx.coroutines.Dispatchers
import
kotlinx.coroutines.Job
import
kotlinx.coroutines.delay
import
kotlinx.coroutines.launch
class
PrepareScanAt
:
BaseActivity
<
ActivityLayoutParepreScanBinding
>()
{
override
val
binding
:
ActivityLayoutParepreScanBinding
by
lazy
{
ActivityLayoutParepreScanBinding
.
inflate
(
layoutInflater
)
}
private
var
job
:
Job
?
=
null
override
fun
initView
()
{
if
(
ConfigHelper
.
isInterAdShow
){
finish
()
return
}
BarUtils
.
setStatusBarLightMode
(
this
,
true
)
BarUtils
.
setStatusBarColor
(
this
,
Color
.
TRANSPARENT
)
binding
.
root
.
updatePadding
(
top
=
BarUtils
.
getStatusBarHeight
())
binding
.
idBackJunkScan
.
setOnClickListener
{
onBackPressedDispatcher
.
onBackPressed
()
}
// onBackPressedDispatcher.addCallback(object : OnBackPressedCallback(true) {
// override fun handleOnBackPressed() {
// finishToMain()
// }
// })
onBackPressedDispatcher
.
addCallback
{
Toast
.
makeText
(
this
@PrepareScanAt
,
"wait a moment"
,
Toast
.
LENGTH_SHORT
).
show
()
}
// requestPermisson()
}
// override fun onStart() {
// super.onStart()
// checkPermission()
// }
// override fun onPermissionsResult(isGranted: Boolean) {
// Log.e("MXL", "权限回调: " + isGranted)
// if (isGranted) {
// playLottie()
// } else {
// finishToMain()
// }
// }
override
fun
onPause
()
{
super
.
onPause
()
binding
.
lottie
.
pauseAnimation
()
job
?.
cancel
()
}
override
fun
onResume
()
{
super
.
onResume
()
if
(
checkStorePermission
())
{
resumeLottie
()
job
=
waitJob
()
}
}
private
fun
resumeLottie
()
{
binding
.
lottie
.
imageAssetsFolder
=
"easy_junk_scan/images/"
binding
.
lottie
.
setAnimation
(
"easy_junk_scan/data.json"
)
binding
.
lottie
.
playAnimation
()
}
var
isPlayAd
=
false
private
fun
waitJob
()
=
lifecycleScope
.
launch
(
Dispatchers
.
Main
)
{
Log
.
e
(
"MXL"
,
"waitJob: "
+
1111
)
delay
(
5000
)
binding
.
lottie
.
visibility
=
View
.
GONE
binding
.
lottieCompleted
.
visibility
=
View
.
VISIBLE
binding
.
lottieCompleted
.
playAnimation
()
binding
.
idTv
.
text
=
"Completed!"
delay
(
1000
)
if
(
isPlayAd
){
if
(!
checkStorePermission
())
{
showGerPermission
(
deny
=
{
finishToMain
()
},
allow
=
{
requestStorePermission
(
launcher
,
result
=
{
if
(
it
)
{
startActivity
(
Intent
(
this
@PrepareScanAt
,
CleanJunkActivity
::
class
.
java
))
finish
()
}
else
{
finishToMain
()
}
})
})
}
}
else
{
AdsUtils
.
showInterAds
(
this
@PrepareScanAt
){
isPlayAd
=
true
if
(!
checkStorePermission
())
{
showGerPermission
(
deny
=
{
finishToMain
()
},
allow
=
{
requestStorePermission
(
launcher
,
result
=
{
if
(
it
)
{
startActivity
(
Intent
(
this
@PrepareScanAt
,
CleanJunkActivity
::
class
.
java
))
finish
()
}
else
{
finishToMain
()
}
})
})
}
}
}
// if (ConfigHelper.admobTrueMaxFlase == 0) {
// MaxAdUtils.showInterstitialAd(this@PrepareScanAt) {
// isPlayAd=true
// if (!checkStorePermission()) {
// showGerPermission(
// deny = { finishToMain() },
// allow = {
// requestStorePermission(launcher, result = {
// if (it) {
// startActivity(Intent(this@PrepareScanAt, CleanJunkActivity::class.java))
// finish()
// } else {
// finishToMain()
// }
// })
// })
// }
// }
//
// } else {
// AdmobUtils.showInterstitialAd(this@PrepareScanAt) {
// if (!checkStorePermission()) {
// showGerPermission(
// deny = { finishToMain() },
// allow = {
// requestStorePermission(launcher, result = {
// if (it) {
// startActivity(Intent(this@PrepareScanAt, CleanJunkActivity::class.java))
// finish()
// } else {
// finishToMain()
// }
// })
// })
// }
// }
// }
}
}
\ No newline at end of file
app/src/main/java/com/test/easy/easycleanerjunk/fragment/HomeFragment.kt
View file @
1ffd1573
...
@@ -79,6 +79,7 @@ class HomeFragment : BaseFragment<FragmentLayoutHomeBinding>() {
...
@@ -79,6 +79,7 @@ class HomeFragment : BaseFragment<FragmentLayoutHomeBinding>() {
}
}
listOf
(
binding
.
idFlClean
,
binding
.
idCleanUp
).
setOnClickListener
{
listOf
(
binding
.
idFlClean
,
binding
.
idCleanUp
).
setOnClickListener
{
startActivity
(
Intent
(
requireContext
(),
PrepareScanActivity
::
class
.
java
))
startActivity
(
Intent
(
requireContext
(),
PrepareScanActivity
::
class
.
java
))
// startActivity(Intent(requireContext(), PrepareScanAt::class.java))
}
}
binding
.
idPhotoCompress
.
setOnClickListener
{
binding
.
idPhotoCompress
.
setOnClickListener
{
...
...
app/src/main/java/com/test/easy/easycleanerjunk/helps/ConfigHelper.kt
View file @
1ffd1573
...
@@ -19,10 +19,11 @@ object ConfigHelper {
...
@@ -19,10 +19,11 @@ object ConfigHelper {
const
val
apiUrl
=
"https://api.easyfilemanager.xyz"
const
val
apiUrl
=
"https://api.easyfilemanager.xyz"
// admob广告id
// admob广告id
const
val
bannerAdmobIdTest
=
"ca-app-pub-3940256099942544/9214589741"
const
val
interAdmobId
=
"ca-app-pub-3940256099942544/1033173712"
const
val
interAdmobId
=
"ca-app-pub-3940256099942544/1033173712"
const
val
nativeAdmobId
=
"ca-app-pub-3940256099942544/2247696110"
const
val
nativeAdmobId
=
"ca-app-pub-3940256099942544/2247696110"
const
val
openAdmobId
=
"/6499/example/app-open"
const
val
openAdmobId
=
"/6499/example/app-open"
const
val
bannerAdmobId
=
""
//max广告id
//max广告id
const
val
interMaxId
=
"b31e7f6d11ee659e"
const
val
interMaxId
=
"b31e7f6d11ee659e"
const
val
nativeMaxId
=
"96e8fe78b0efc5d1"
const
val
nativeMaxId
=
"96e8fe78b0efc5d1"
...
...
app/src/main/java/com/test/easy/easycleanerjunk/helps/ads/AdmobBannerUtils.kt
0 → 100644
View file @
1ffd1573
package
com.test.easy.easycleanerjunk.helps.ads
import
android.content.Context
import
android.os.Bundle
import
android.view.ViewGroup
import
android.view.ViewTreeObserver
import
com.google.ads.mediation.admob.AdMobAdapter
import
com.google.android.gms.ads.AdListener
import
com.google.android.gms.ads.AdRequest
import
com.google.android.gms.ads.AdSize
import
com.google.android.gms.ads.AdView
import
com.test.easy.easycleanerjunk.BuildConfig
import
com.test.easy.easycleanerjunk.helps.ConfigHelper
import
java.util.UUID
object
AdmobBannerUtils
{
private
var
adView
:
AdView
?
=
null
private
var
listener
:
ViewTreeObserver
.
OnGlobalLayoutListener
?
=
null
fun
showCollapsibleBannerAd
(
context
:
Context
,
parent
:
ViewGroup
)
{
if
(
adView
!=
null
)
{
adView
?.
destroy
()
}
adView
=
AdView
(
context
)
parent
.
removeAllViews
()
parent
.
addView
(
adView
)
listener
=
ViewTreeObserver
.
OnGlobalLayoutListener
{
val
screenPixelDensity
=
context
.
resources
.
displayMetrics
.
density
val
adWidth
=
(
parent
.
width
/
screenPixelDensity
).
toInt
()
val
adSize
=
AdSize
.
getCurrentOrientationAnchoredAdaptiveBannerAdSize
(
context
,
adWidth
)
adView
?.
adUnitId
=
if
(
BuildConfig
.
DEBUG
)
ConfigHelper
.
bannerAdmobIdTest
else
ConfigHelper
.
bannerAdmobId
adView
?.
setAdSize
(
adSize
)
loadCollapsibleBanner
()
parent
.
viewTreeObserver
.
removeOnGlobalLayoutListener
(
listener
)
}
parent
.
viewTreeObserver
.
addOnGlobalLayoutListener
(
listener
)
}
private
fun
loadCollapsibleBanner
()
{
val
extras
=
Bundle
()
extras
.
putString
(
"collapsible"
,
"bottom"
)
extras
.
putString
(
"collapsible_request_id"
,
UUID
.
randomUUID
().
toString
())
val
adRequest
=
AdRequest
.
Builder
().
addNetworkExtrasBundle
(
AdMobAdapter
::
class
.
java
,
extras
).
build
()
adView
?.
adListener
=
object
:
AdListener
()
{
override
fun
onAdLoaded
()
{}
}
adView
?.
loadAd
(
adRequest
)
}
}
\ No newline at end of file
app/src/main/java/com/test/easy/easycleanerjunk/helps/ads/AdsUtils.kt
0 → 100644
View file @
1ffd1573
package
com.test.easy.easycleanerjunk.helps.ads
import
android.app.Activity
import
com.test.easy.easycleanerjunk.helps.ConfigHelper
object
AdsUtils
{
fun
showInterAds
(
activity
:
Activity
,
callback
:
(()
->
Unit
)?
=
null
){
if
(
ConfigHelper
.
admobTrueMaxFlase
==
0
)
{
MaxAdUtils
.
showInterstitialAd
(
activity
,
onHidden
=
callback
)
}
else
{
AdmobUtils
.
showInterstitialAd
(
activity
,
onHidden
=
callback
)
}
}
}
\ No newline at end of file
app/src/main/res/layout/activity_main.xml
View file @
1ffd1573
...
@@ -13,14 +13,22 @@
...
@@ -13,14 +13,22 @@
app:layout_constraintBottom_toTopOf=
"@+id/id_ll_nav"
app:layout_constraintBottom_toTopOf=
"@+id/id_ll_nav"
app:layout_constraintTop_toTopOf=
"parent"
/>
app:layout_constraintTop_toTopOf=
"parent"
/>
<View
android:id=
"@+id/id_view"
android:layout_width=
"match_parent"
android:layout_height=
"1dp"
android:background=
"#EEEEEE"
app:layout_constraintBottom_toTopOf=
"@+id/id_ll_nav"
app:layout_constraintTop_toBottomOf=
"@+id/id_vp"
/>
<androidx.appcompat.widget.LinearLayoutCompat
<androidx.appcompat.widget.LinearLayoutCompat
android:id=
"@+id/id_ll_nav"
android:id=
"@+id/id_ll_nav"
android:layout_width=
"match_parent"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_height=
"wrap_content"
android:background=
"@color/white"
android:background=
"@color/white"
android:elevation=
"10dp"
android:visibility=
"visible"
android:visibility=
"visible"
app:layout_constraintBottom_toBottomOf=
"parent"
>
app:layout_constraintBottom_toTopOf=
"@+id/banner"
app:layout_constraintTop_toBottomOf=
"@+id/id_view"
>
<androidx.appcompat.widget.LinearLayoutCompat
<androidx.appcompat.widget.LinearLayoutCompat
android:id=
"@+id/id_bottom_1"
android:id=
"@+id/id_bottom_1"
...
@@ -84,5 +92,11 @@
...
@@ -84,5 +92,11 @@
</androidx.appcompat.widget.LinearLayoutCompat>
</androidx.appcompat.widget.LinearLayoutCompat>
<FrameLayout
android:id=
"@+id/banner"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintTop_toBottomOf=
"@id/id_ll_nav"
tools:ignore=
"UselessLeaf"
/>
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
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