Commit 63404314 authored by 周文华's avatar 周文华

【新增&修复】1.新增首次清理引导弹窗逻辑。2.尝试修复广告加载失败或者太久之后的跳转问题。

parent eda17d5e
......@@ -14,6 +14,7 @@ import com.base.filerecoveryrecyclebin.activity.repeat.RepeatActivity
import com.base.filerecoveryrecyclebin.activity.repeat.RepeatActivity.Companion.similarPhotoDeleted
import com.base.filerecoveryrecyclebin.activity.screenshot.ScreenShotActivity.Companion.screenPhotoDeleted
import com.base.filerecoveryrecyclebin.ads.admob.AdmobBannerUtils
import com.base.filerecoveryrecyclebin.bean.ConstObject
import com.base.filerecoveryrecyclebin.bean.MediaBean
import com.base.filerecoveryrecyclebin.databinding.ActivityMainBinding
import com.base.filerecoveryrecyclebin.fragment.HomeFragment
......@@ -68,7 +69,7 @@ class MainActivity : BaseActivity<ActivityMainBinding>() {
// System.loadLibrary("opencv_java4")
if (!checkStorePermission()) {
if (!checkStorePermission()&&ConstObject.hasCleaned) {
if (dialog == null) {
dialog = showPermissionBottomSheet(launcher) {
binding.flBanner.visibility = View.VISIBLE
......
......@@ -12,6 +12,7 @@ import androidx.core.view.updatePadding
import androidx.lifecycle.lifecycleScope
import com.base.filerecoveryrecyclebin.ads.AdmobMaxHelper
import com.base.filerecoveryrecyclebin.ads.AdmobMaxHelper.admobMaxShowInterstitialAd
import com.base.filerecoveryrecyclebin.bean.ConstObject
import com.base.filerecoveryrecyclebin.databinding.ActivityLayoutScanJunkBinding
import com.base.filerecoveryrecyclebin.help.BaseActivity
import com.base.filerecoveryrecyclebin.help.PermissionHelp.checkStorePermission
......@@ -50,6 +51,8 @@ class ScanJunkActivity : BaseActivity<ActivityLayoutScanJunkBinding>() {
}
})
})
}else{
ConstObject.hasCleaned=true
}
}
......
......@@ -87,8 +87,10 @@ class Splash2Activity : BaseActivity<ActivitySplashBinding>(),
loadAd()
}
private var isMaxComplete=false
override fun onProgressMax() {
if(isMaxComplete)return
isMaxComplete=true
Handler().postDelayed({
StartUtils.jumpNextPage(this)
}, 500)
......
......@@ -124,4 +124,12 @@ object ConstObject {
AppPreferences.getInstance().put("fcmNotification", value, true)
}
var hasCleaned = false
get() {
return AppPreferences.getInstance().getBoolean("hasCleaned", field)
}
set(value) {
field = value
AppPreferences.getInstance().put("hasCleaned", value, true)
}
}
\ No newline at end of file
......@@ -28,12 +28,14 @@ import com.base.filerecoveryrecyclebin.activity.repeat.RepeatAnimationActivity
import com.base.filerecoveryrecyclebin.activity.screenshot.ScreenShotAnimationActivity
import com.base.filerecoveryrecyclebin.activity.whatsapp.WhatsAppCleanerAnimationActivity
import com.base.filerecoveryrecyclebin.ads.AdmobMaxHelper
import com.base.filerecoveryrecyclebin.bean.ConstObject
import com.base.filerecoveryrecyclebin.databinding.FragmentHome3Binding
import com.base.filerecoveryrecyclebin.help.BaseFragment
import com.base.filerecoveryrecyclebin.help.KotlinExt.toFormatSize
import com.base.filerecoveryrecyclebin.help.PermissionHelp.checkStorePermission
import com.base.filerecoveryrecyclebin.help.WeatherUtils
import com.base.filerecoveryrecyclebin.utils.AppPreferences
import com.base.filerecoveryrecyclebin.view.CleanGuideDialog
import com.base.filerecoveryrecyclebin.view.WeatherInterface
import kotlinx.coroutines.flow.collectLatest
import kotlinx.coroutines.launch
......@@ -74,14 +76,19 @@ class HomeFragment : BaseFragment<FragmentHome3Binding>() {
}
}
showStorage()
AdmobMaxHelper.admobMaxShowNativeAd(requireActivity(),binding.idFlNative)
AdmobMaxHelper.admobMaxShowNativeAd(requireActivity(), binding.idFlNative)
if (!ConstObject.hasCleaned) {
//没有清理过就弹dialog引导
CleanGuideDialog.Builder(requireContext()).build(this).show()
}
}
var i = 0
var lastClickTime = 0L
override fun setListener() {
binding.flScan.setOnClickListener {
val jumpJunkFirstAd = AppPreferences.getInstance().getString("isjunkPlayAd", "0").toInt()
val jumpJunkFirstAd =
AppPreferences.getInstance().getString("isjunkPlayAd", "0").toInt()
if (jumpJunkFirstAd == 1) {
startActivity(Intent(requireContext(), ScanJunk2Activity::class.java))
} else {
......@@ -178,13 +185,16 @@ class HomeFragment : BaseFragment<FragmentHome3Binding>() {
binding.llStorage.visibility = View.VISIBLE
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
val storageStatsManager = requireContext().getSystemService(STORAGE_STATS_SERVICE) as StorageStatsManager
val storageStatsManager =
requireContext().getSystemService(STORAGE_STATS_SERVICE) as StorageStatsManager
Thread {
val totalBytes = storageStatsManager.getTotalBytes(StorageManager.UUID_DEFAULT)
val usedBytes = totalBytes - storageStatsManager.getFreeBytes(StorageManager.UUID_DEFAULT)
val usedBytes =
totalBytes - storageStatsManager.getFreeBytes(StorageManager.UUID_DEFAULT)
binding.root.post {
binding.tvStorage.text = "${usedBytes.toFormatSize()} / ${totalBytes.toFormatSize()}"
binding.tvStorage.text =
"${usedBytes.toFormatSize()} / ${totalBytes.toFormatSize()}"
}
}.start()
......@@ -194,7 +204,8 @@ class HomeFragment : BaseFragment<FragmentHome3Binding>() {
val path2: File = Environment.getExternalStorageDirectory()
val stat2 = StatFs(path2.path)
val totalSize = (stat1.totalBytes + stat2.totalBytes).toFormatSize()
val usedSize = ((stat1.totalBytes + stat2.totalBytes) - (stat1.availableBytes + stat2.availableBytes)).toFormatSize()
val usedSize =
((stat1.totalBytes + stat2.totalBytes) - (stat1.availableBytes + stat2.availableBytes)).toFormatSize()
binding.tvStorage.text = "$usedSize / $totalSize"
}
}
......
package com.base.filerecoveryrecyclebin.view
import android.animation.ValueAnimator
import android.app.Dialog
import android.content.Context
import android.content.Intent
import android.graphics.drawable.ColorDrawable
import android.os.Bundle
import android.view.Gravity
import android.view.LayoutInflater
import android.view.View.OnClickListener
import android.view.WindowManager
import androidx.lifecycle.DefaultLifecycleObserver
import androidx.lifecycle.LifecycleOwner
import com.base.filerecoveryrecyclebin.activity.junkclean.ScanJunk2Activity
import com.base.filerecoveryrecyclebin.activity.junkclean.ScanJunkActivity
import com.base.filerecoveryrecyclebin.databinding.DialogCleanGuideBinding
import com.base.filerecoveryrecyclebin.utils.AppPreferences
class CleanGuideDialog(
context: Context,
private val binding: DialogCleanGuideBinding) : Dialog(context),
DefaultLifecycleObserver {
override fun onCreate(savedInstanceState: Bundle?) {
super<Dialog>.onCreate(savedInstanceState)
init()
}
override fun onDestroy(owner: LifecycleOwner) {
cancel()
super.onDestroy(owner)
}
private fun gotoScan(){
val jumpJunkFirstAd = AppPreferences.getInstance().getString("isjunkPlayAd", "0").toInt()
if (jumpJunkFirstAd == 1) {
context.startActivity(Intent(context, ScanJunk2Activity::class.java))
} else {
context.startActivity(Intent(context, ScanJunkActivity::class.java))
}
cancel()
}
private fun init() {
binding.tvBtn.setOnClickListener {
gotoScan()
}
binding.lottie.repeatCount = ValueAnimator.INFINITE
binding.lottie.setOnClickListener {
gotoScan()
}
setCancelable(false)
setCanceledOnTouchOutside(false)
setContentView(binding.root)
window?.run {
setBackgroundDrawable(ColorDrawable())
setDimAmount(0.7f)
setGravity(Gravity.TOP)
val layoutParams = attributes
//设置dialog可以穿透并且有蒙层
layoutParams.flags =
// WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE or
WindowManager.LayoutParams.FLAG_DIM_BEHIND
layoutParams.width = WindowManager.LayoutParams.MATCH_PARENT
// layoutParams.height = WindowManager.LayoutParams.WRAP_CONTENT
// layoutParams.verticalMargin = 0.06f
attributes = layoutParams
decorView.setPadding(0, 0, 0, 0)
}
}
class Builder(private val context: Context) {
private lateinit var dialog: CleanGuideDialog
private val binding by lazy(LazyThreadSafetyMode.NONE) {
DialogCleanGuideBinding.inflate(LayoutInflater.from(context))
}
fun build(lifecycleOwner: LifecycleOwner? = null): CleanGuideDialog =
CleanGuideDialog(context, binding).also {
dialog = it
lifecycleOwner?.lifecycle?.addObserver(it)
}
}
}
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingVertical="14dp"
android:visibility="invisible">
<LinearLayout
android:id="@+id/ll_weather"
android:layout_width="wrap_content"
android:layout_height="36dp"
android:layout_gravity="center_vertical"
android:layout_marginStart="14dp"
android:orientation="horizontal"
android:visibility="invisible">
<TextView
android:id="@+id/tv_wendu"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginStart="15dp"
android:layout_marginEnd="2dp"
android:includeFontPadding="false"
android:textColor="@color/black"
android:textSize="18sp"
tools:text="20" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginEnd="4dp"
android:includeFontPadding="false"
android:text="℃"
android:textColor="@color/black"
tools:ignore="HardcodedText" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginEnd="9dp"
android:src="@mipmap/duoyun"
tools:ignore="ContentDescription" />
</LinearLayout>
<ImageView
android:id="@+id/fl_setting"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end|center_vertical"
android:layout_marginEnd="14dp"
android:src="@mipmap/shezhi"
android:visibility="invisible"
tools:ignore="ContentDescription" />
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/id_tv_xz"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end|center_vertical"
android:layout_marginEnd="58dp"
android:src="@mipmap/horoscope"
android:visibility="invisible" />
</FrameLayout>
<FrameLayout
android:layout_width="wrap_content"
android:layout_height="280dp"
android:layout_gravity="center_horizontal"
android:layout_marginTop="-20dp">
<View
android:layout_width="240dp"
android:layout_height="230dp"
android:layout_marginStart="35dp"
android:layout_marginTop="25dp"
android:background="@color/white" />
<com.base.filerecoveryrecyclebin.view.XmlLottieAnimationView
android:id="@+id/lottie"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:adjustViewBounds="true"
app:lottie_autoPlay="true"
app:lottie_rawRes="@raw/memosj" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:text="Clean"
android:textColor="@color/white"
android:textSize="30sp"
android:textStyle="bold"
tools:ignore="HardcodedText" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="10dp"
android:text="Junk File"
android:textColor="@color/white"
android:textSize="15sp"
tools:ignore="HardcodedText" />
</LinearLayout>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|center_horizontal"
android:text="Click the button to clean the phone"
android:textColor="@color/white"
android:textSize="16sp"
android:textStyle="bold" />
</FrameLayout>
<TextView
android:id="@+id/tv_btn"
android:layout_width="wrap_content"
android:text="clean junk"
android:layout_marginTop="15dp"
android:includeFontPadding="false"
android:textSize="16sp"
android:paddingVertical="10dp"
android:paddingHorizontal="16dp"
android:textColor="@color/black"
android:layout_gravity="center_horizontal"
android:background="@drawable/bg_ffffff_15"
android:layout_height="wrap_content" />
</LinearLayout>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment