Commit 0ce876e5 authored by wanglei's avatar wanglei

...

parent 090fac62
...@@ -26,7 +26,7 @@ object GlobalConfig { ...@@ -26,7 +26,7 @@ object GlobalConfig {
/** /**
* Url Use 使用条款 * Url Use 使用条款
*/ */
const val URL_USE = "" const val URL_USE = "https://sites.google.com/view/dumpster-cleaner/dumpster-cleaner"
/** /**
* Key Aes 加密key * Key Aes 加密key
......
...@@ -32,6 +32,7 @@ import com.airbnb.lottie.LottieAnimationView ...@@ -32,6 +32,7 @@ import com.airbnb.lottie.LottieAnimationView
import com.base.appzxhy.SpConstObject.appLanguageCountrySp import com.base.appzxhy.SpConstObject.appLanguageCountrySp
import com.base.appzxhy.SpConstObject.appLanguageSp import com.base.appzxhy.SpConstObject.appLanguageSp
import com.base.appzxhy.R import com.base.appzxhy.R
import com.base.appzxhy.SpConstObject.cleanedSize
import com.base.appzxhy.base.goToAc import com.base.appzxhy.base.goToAc
import com.base.appzxhy.bean.FeatureBean.Companion.BATTERY_INFO import com.base.appzxhy.bean.FeatureBean.Companion.BATTERY_INFO
import com.base.appzxhy.bean.FeatureBean.Companion.JUNK_CLEAN import com.base.appzxhy.bean.FeatureBean.Companion.JUNK_CLEAN
...@@ -505,7 +506,9 @@ fun AppCompatActivity.cleanFileBeans(list: List<FileBean>) { ...@@ -505,7 +506,9 @@ fun AppCompatActivity.cleanFileBeans(list: List<FileBean>) {
lifecycleScope.launch(Dispatchers.IO) { lifecycleScope.launch(Dispatchers.IO) {
val paths = list.filter { it.isSelected }.map { it.path }.toTypedArray() val paths = list.filter { it.isSelected }.map { it.path }.toTypedArray()
paths.forEach { paths.forEach {
RecycleBinUtils.addRecycleBinFile(File(it)) val file = File(it)
cleanedSize = cleanedSize + file.length()
RecycleBinUtils.addRecycleBinFile(file)
FileUtils.deleteFile(it) FileUtils.deleteFile(it)
} }
launch(Dispatchers.Main) { MediaUtils.updateMedia(applicationContext, paths) } launch(Dispatchers.Main) { MediaUtils.updateMedia(applicationContext, paths) }
......
...@@ -63,7 +63,7 @@ object NotificationUiUtil { ...@@ -63,7 +63,7 @@ object NotificationUiUtil {
} }
sendBean.bigRemoteViews = RemoteViews(context.packageName, R.layout.notification_common_large).apply { sendBean.bigRemoteViews = RemoteViews(context.packageName, R.layout.notification_common_large).apply {
setTextViewText(R.id.tv1, text) setTextViewText(R.id.tv1, text)
setImageViewResource(R.id.ivIcon, R.drawable.icon_clean) setImageViewResource(R.id.ivIcon, R.drawable.icon_clean_push)
debugAction.invoke(this) debugAction.invoke(this)
} }
} }
...@@ -76,7 +76,7 @@ object NotificationUiUtil { ...@@ -76,7 +76,7 @@ object NotificationUiUtil {
} }
sendBean.bigRemoteViews = RemoteViews(context.packageName, R.layout.notification_common_large).apply { sendBean.bigRemoteViews = RemoteViews(context.packageName, R.layout.notification_common_large).apply {
setTextViewText(R.id.tv1, text) setTextViewText(R.id.tv1, text)
setImageViewResource(R.id.ivIcon, R.drawable.icon_battery) setImageViewResource(R.id.ivIcon, R.drawable.icon_battery_info_push)
debugAction.invoke(this) debugAction.invoke(this)
} }
} }
...@@ -89,7 +89,7 @@ object NotificationUiUtil { ...@@ -89,7 +89,7 @@ object NotificationUiUtil {
} }
sendBean.bigRemoteViews = RemoteViews(context.packageName, R.layout.notification_common_large).apply { sendBean.bigRemoteViews = RemoteViews(context.packageName, R.layout.notification_common_large).apply {
setTextViewText(R.id.tv1, text) setTextViewText(R.id.tv1, text)
setImageViewResource(R.id.ivIcon, R.drawable.icon_large_file_cleanner) setImageViewResource(R.id.ivIcon, R.drawable.icon_large_file_cleaner_push)
debugAction.invoke(this) debugAction.invoke(this)
} }
} }
...@@ -102,7 +102,7 @@ object NotificationUiUtil { ...@@ -102,7 +102,7 @@ object NotificationUiUtil {
} }
sendBean.bigRemoteViews = RemoteViews(context.packageName, R.layout.notification_common_large).apply { sendBean.bigRemoteViews = RemoteViews(context.packageName, R.layout.notification_common_large).apply {
setTextViewText(R.id.tv1, text) setTextViewText(R.id.tv1, text)
setImageViewResource(R.id.ivIcon, R.drawable.icon_duplicate_photos) setImageViewResource(R.id.ivIcon, R.drawable.icon_similar_pictures_push)
debugAction.invoke(this) debugAction.invoke(this)
} }
} }
...@@ -115,7 +115,7 @@ object NotificationUiUtil { ...@@ -115,7 +115,7 @@ object NotificationUiUtil {
} }
sendBean.bigRemoteViews = RemoteViews(context.packageName, R.layout.notification_common_large).apply { sendBean.bigRemoteViews = RemoteViews(context.packageName, R.layout.notification_common_large).apply {
setTextViewText(R.id.tv1, text) setTextViewText(R.id.tv1, text)
setImageViewResource(R.id.ivIcon, R.drawable.icon_screenshot_cleaner) setImageViewResource(R.id.ivIcon, R.drawable.icon_screenshot_clean_push)
debugAction.invoke(this) debugAction.invoke(this)
} }
} }
...@@ -128,7 +128,7 @@ object NotificationUiUtil { ...@@ -128,7 +128,7 @@ object NotificationUiUtil {
} }
sendBean.bigRemoteViews = RemoteViews(context.packageName, R.layout.notification_common_large).apply { sendBean.bigRemoteViews = RemoteViews(context.packageName, R.layout.notification_common_large).apply {
setTextViewText(R.id.tv1, text) setTextViewText(R.id.tv1, text)
setImageViewResource(R.id.ivIcon, R.drawable.icon_compression) setImageViewResource(R.id.ivIcon, R.drawable.icon_compression_push)
debugAction.invoke(this) debugAction.invoke(this)
} }
} }
......
...@@ -114,9 +114,9 @@ class StayJobService : JobService() { ...@@ -114,9 +114,9 @@ class StayJobService : JobService() {
return false return false
} }
val millisInFuture = if (BuildConfig.DEBUG) 5000L else PopupConfigBean.popupConfigBean.notifyForegroundInterval val notifyInterval = if (BuildConfig.DEBUG) 5000L else PopupConfigBean.popupConfigBean.notifyForegroundInterval
private inner class Timer() : CountDownTimer(millisInFuture, 1000) { private inner class Timer() : CountDownTimer(notifyInterval, 1000) {
override fun onTick(millisUntilFinished: Long) { override fun onTick(millisUntilFinished: Long) {
// LogEx.logDebug(TAG, "Timer onTick") // LogEx.logDebug(TAG, "Timer onTick")
} }
......
...@@ -13,6 +13,7 @@ import androidx.recyclerview.widget.LinearLayoutManager ...@@ -13,6 +13,7 @@ import androidx.recyclerview.widget.LinearLayoutManager
import com.base.appzxhy.R import com.base.appzxhy.R
import com.base.appzxhy.base.BaseActivity import com.base.appzxhy.base.BaseActivity
import com.base.appzxhy.base.LottieEnum import com.base.appzxhy.base.LottieEnum
import com.base.appzxhy.base.cleanFileBeans
import com.base.appzxhy.bean.FeatureBean.Companion.JUNK_CLEAN import com.base.appzxhy.bean.FeatureBean.Companion.JUNK_CLEAN
import com.base.appzxhy.bean.FileBean import com.base.appzxhy.bean.FileBean
import com.base.appzxhy.business.ads.AdsMgr import com.base.appzxhy.business.ads.AdsMgr
...@@ -170,7 +171,7 @@ class JunkCleanActivity : BaseActivity<ActivityJunkCleanBinding>(ActivityJunkCle ...@@ -170,7 +171,7 @@ class JunkCleanActivity : BaseActivity<ActivityJunkCleanBinding>(ActivityJunkCle
if (total > 0) { if (total > 0) {
showAdAnimation(LottieEnum.CLEAN_LOTTIE) { showAdAnimation(LottieEnum.CLEAN_LOTTIE) {
// cleanFiles(selectedFiles) cleanFileBeans(selectedFiles)
CleanResultActivity.functionKey = JUNK_CLEAN CleanResultActivity.functionKey = JUNK_CLEAN
CleanResultActivity.titleName = this@JunkCleanActivity.getString(R.string.junk_clean) CleanResultActivity.titleName = this@JunkCleanActivity.getString(R.string.junk_clean)
...@@ -179,7 +180,7 @@ class JunkCleanActivity : BaseActivity<ActivityJunkCleanBinding>(ActivityJunkCle ...@@ -179,7 +180,7 @@ class JunkCleanActivity : BaseActivity<ActivityJunkCleanBinding>(ActivityJunkCle
finish() finish()
} }
} else { } else {
// goToAc(CleanResultActivity) goToAc(CleanResultActivity::class.java)
} }
} }
......
...@@ -57,7 +57,6 @@ class RateDialog( ...@@ -57,7 +57,6 @@ class RateDialog(
view.setOnClickListener { view.setOnClickListener {
starList.forEachIndexed { index2, view2 -> starList.forEachIndexed { index2, view2 ->
view2.setImageResource(if (index2 <= index) R.drawable.icon_star_s else R.drawable.icon_star_n) view2.setImageResource(if (index2 <= index) R.drawable.icon_star_s else R.drawable.icon_star_n)
} }
score = index + 1 score = index + 1
} }
...@@ -74,7 +73,7 @@ class RateDialog( ...@@ -74,7 +73,7 @@ class RateDialog(
} }
dialog.dismiss() dialog.dismiss()
} }
binding.star1.callOnClick() binding.star5.callOnClick()
} }
} }
\ No newline at end of file
...@@ -53,7 +53,6 @@ class LargeFileCleanActivity : BaseActivity<ActivityLargeFileCleanBinding>(Activ ...@@ -53,7 +53,6 @@ class LargeFileCleanActivity : BaseActivity<ActivityLargeFileCleanBinding>(Activ
FileBean(getString(R.string.other_types)), FileBean(getString(R.string.other_types)),
) )
} }
private val sizeList by lazy { private val sizeList by lazy {
listOf( listOf(
FileBean(getString(R.string.mb_10), isSelected = true), FileBean(getString(R.string.mb_10), isSelected = true),
...@@ -63,7 +62,6 @@ class LargeFileCleanActivity : BaseActivity<ActivityLargeFileCleanBinding>(Activ ...@@ -63,7 +62,6 @@ class LargeFileCleanActivity : BaseActivity<ActivityLargeFileCleanBinding>(Activ
FileBean(getString(R.string.mb_500)), FileBean(getString(R.string.mb_500)),
) )
} }
private val timeList by lazy { private val timeList by lazy {
listOf( listOf(
FileBean(getString(R.string.all_time), isSelected = true), FileBean(getString(R.string.all_time), isSelected = true),
......
package com.base.appzxhy.ui.main package com.base.appzxhy.ui.main
import android.annotation.SuppressLint import android.annotation.SuppressLint
import android.view.View
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import com.base.appzxhy.R import com.base.appzxhy.R
import com.base.appzxhy.base.BaseFragment import com.base.appzxhy.base.BaseFragment
...@@ -16,6 +17,8 @@ import com.base.appzxhy.business.ads.AdsMgr ...@@ -16,6 +17,8 @@ import com.base.appzxhy.business.ads.AdsMgr
import com.base.appzxhy.databinding.FragmentHome2Binding import com.base.appzxhy.databinding.FragmentHome2Binding
import com.base.appzxhy.ui.dialog.permissionStorageJump import com.base.appzxhy.ui.dialog.permissionStorageJump
import com.base.appzxhy.ui.set.SettingActivity import com.base.appzxhy.ui.set.SettingActivity
import com.base.appzxhy.ui.similar.SimilarPhotosActivity
import com.base.appzxhy.utils.KotlinExt.toFormatSize
import com.base.appzxhy.utils.Utils import com.base.appzxhy.utils.Utils
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.async import kotlinx.coroutines.async
...@@ -78,4 +81,16 @@ class Home2Fragment : BaseFragment<FragmentHome2Binding>(FragmentHome2Binding::i ...@@ -78,4 +81,16 @@ class Home2Fragment : BaseFragment<FragmentHome2Binding>(FragmentHome2Binding::i
} }
} }
} }
override fun onResume() {
super.onResume()
if (SimilarPhotosActivity.similarSize != 0L) {
binding.tvDupSize.visibility = View.VISIBLE
binding.tvDupSize.text = SimilarPhotosActivity.similarSize.toFormatSize()
} else {
binding.tvDupSize.visibility = View.INVISIBLE
}
}
} }
\ No newline at end of file
...@@ -5,6 +5,7 @@ import androidx.lifecycle.ViewModel ...@@ -5,6 +5,7 @@ import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope import androidx.lifecycle.viewModelScope
import com.base.appzxhy.SpConstObject.isScoreRated import com.base.appzxhy.SpConstObject.isScoreRated
import com.base.appzxhy.ui.recyclebin.RecycleBinUtils.getRecycleBinData import com.base.appzxhy.ui.recyclebin.RecycleBinUtils.getRecycleBinData
import com.base.appzxhy.utils.PermissionUtils.areNotificationsEnabled
import com.base.appzxhy.utils.PermissionUtils.checkNotificationPermission import com.base.appzxhy.utils.PermissionUtils.checkNotificationPermission
import com.base.appzxhy.utils.PermissionUtils.checkStorePermission import com.base.appzxhy.utils.PermissionUtils.checkStorePermission
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
...@@ -30,7 +31,10 @@ class MainViewModel : ViewModel() { ...@@ -30,7 +31,10 @@ class MainViewModel : ViewModel() {
return return
} }
if (!context.checkNotificationPermission()) { if (
!context.checkNotificationPermission() ||
!context.areNotificationsEnabled()
) {
dialogFlow.update { "NotificationDialog" } dialogFlow.update { "NotificationDialog" }
return return
} }
......
...@@ -29,7 +29,7 @@ class RecycleBinDetailActivity : BaseActivity<ActivityRecycleBinDetailBinding>(A ...@@ -29,7 +29,7 @@ class RecycleBinDetailActivity : BaseActivity<ActivityRecycleBinDetailBinding>(A
override fun initView() { override fun initView() {
super.initView() super.initView()
if (mImageStr.contains("." + recycleBinFile.extension) || mVideoStr.contains("." + recycleBinFile.extension)) { if (mImageStr.contains("." + recycleBinFile.extension) || mVideoStr.contains("." + recycleBinFile.extension)) {
Glide.with(this).load(recycleBinFile.absoluteFile).into(binding.iv) Glide.with(this).load(recycleBinFile.absoluteFile).placeholder(R.drawable.icon_file).into(binding.iv)
} else { } else {
binding.iv.setImageResource(recycleBinFile.getImgRes()) binding.iv.setImageResource(recycleBinFile.getImgRes())
} }
...@@ -54,7 +54,7 @@ class RecycleBinDetailActivity : BaseActivity<ActivityRecycleBinDetailBinding>(A ...@@ -54,7 +54,7 @@ class RecycleBinDetailActivity : BaseActivity<ActivityRecycleBinDetailBinding>(A
lifecycleScope.launch { lifecycleScope.launch {
recycleBinFile.deleteIfExists() recycleBinFile.deleteIfExists()
} }
onBackPressedDispatcher.onBackPressed()
} }
binding.tvRestore.setOnClickListener { binding.tvRestore.setOnClickListener {
lifecycleScope.launch { lifecycleScope.launch {
......
...@@ -8,7 +8,6 @@ import com.base.appzxhy.databinding.ActivitySettingBinding ...@@ -8,7 +8,6 @@ import com.base.appzxhy.databinding.ActivitySettingBinding
class SettingActivity : BaseActivity<ActivitySettingBinding>(ActivitySettingBinding::inflate) { class SettingActivity : BaseActivity<ActivitySettingBinding>(ActivitySettingBinding::inflate) {
var insetsCallBack: ((insets: Insets) -> Unit)? = null var insetsCallBack: ((insets: Insets) -> Unit)? = null
override fun useDefaultImmersive() { override fun useDefaultImmersive() {
...@@ -32,4 +31,8 @@ class SettingActivity : BaseActivity<ActivitySettingBinding>(ActivitySettingBind ...@@ -32,4 +31,8 @@ class SettingActivity : BaseActivity<ActivitySettingBinding>(ActivitySettingBind
super.initListener() super.initListener()
} }
override fun handleBackCallBack() {
// super.handleBackCallBack()
finish()
}
} }
\ No newline at end of file
...@@ -18,9 +18,7 @@ import com.base.appzxhy.bean.config.ConfigBean ...@@ -18,9 +18,7 @@ import com.base.appzxhy.bean.config.ConfigBean
import com.base.appzxhy.business.ads.AdsMgr import com.base.appzxhy.business.ads.AdsMgr
import com.base.appzxhy.ui.dialog.RateDialog import com.base.appzxhy.ui.dialog.RateDialog
import com.base.appzxhy.utils.ClipboardUtils.copyText import com.base.appzxhy.utils.ClipboardUtils.copyText
import com.base.appzxhy.utils.MyAnimationUtils
import com.base.appzxhy.utils.ToastUtils.toast import com.base.appzxhy.utils.ToastUtils.toast
import com.google.gson.Gson
import com.google.gson.GsonBuilder import com.google.gson.GsonBuilder
...@@ -40,8 +38,9 @@ class SettingsFragment : BaseFragment<FragmentSettingsBinding>(FragmentSettingsB ...@@ -40,8 +38,9 @@ class SettingsFragment : BaseFragment<FragmentSettingsBinding>(FragmentSettingsB
override fun initView() { override fun initView() {
super.initView() super.initView()
binding.tvCleanedUp.text = cleanedSize.toFormatSize()
binding.tvVersion.text = "v${BuildConfig.VERSION_NAME}" binding.tvVersion.text = "v${BuildConfig.VERSION_NAME}"
MyAnimationUtils.rotation(binding.ivBlade) // MyAnimationUtils.rotation(binding.ivBlade)
AdsMgr.showNative(binding.flAd, R.layout.layout_admob_native_custom) AdsMgr.showNative(binding.flAd, R.layout.layout_admob_native_custom)
if (BuildConfig.DEBUG) { if (BuildConfig.DEBUG) {
...@@ -71,7 +70,9 @@ class SettingsFragment : BaseFragment<FragmentSettingsBinding>(FragmentSettingsB ...@@ -71,7 +70,9 @@ class SettingsFragment : BaseFragment<FragmentSettingsBinding>(FragmentSettingsB
val dialog = RateDialog(requireActivity()) val dialog = RateDialog(requireActivity())
dialog.showDialog(true) dialog.showDialog(true)
} }
binding.ivBack.setOnClickListener {
(requireActivity() as SettingActivity).onBackPressedDispatcher.onBackPressed()
}
} }
override fun onResume() { override fun onResume() {
......
package com.base.appzxhy.ui.similar package com.base.appzxhy.ui.similar
import android.annotation.SuppressLint import android.annotation.SuppressLint
import android.content.Context
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
...@@ -8,12 +9,14 @@ import android.widget.TextView ...@@ -8,12 +9,14 @@ import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.ViewCompat import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat import androidx.core.view.WindowInsetsCompat
import androidx.lifecycle.LifecycleCoroutineScope
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import androidx.recyclerview.widget.GridLayoutManager import androidx.recyclerview.widget.GridLayoutManager
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
import com.airbnb.lottie.LottieAnimationView import com.airbnb.lottie.LottieAnimationView
import com.base.appzxhy.R import com.base.appzxhy.R
import com.base.appzxhy.SpConstObject.cleanedSize
import com.base.appzxhy.base.BaseActivity import com.base.appzxhy.base.BaseActivity
import com.base.appzxhy.base.LottieEnum import com.base.appzxhy.base.LottieEnum
import com.base.appzxhy.bean.FeatureBean.Companion.SIMILAR_PHOTOS import com.base.appzxhy.bean.FeatureBean.Companion.SIMILAR_PHOTOS
...@@ -26,6 +29,7 @@ import com.base.appzxhy.databinding.ItemSimilarPhotosChildBinding ...@@ -26,6 +29,7 @@ import com.base.appzxhy.databinding.ItemSimilarPhotosChildBinding
import com.base.appzxhy.ui.cleanresult.CleanResultActivity import com.base.appzxhy.ui.cleanresult.CleanResultActivity
import com.base.appzxhy.ui.dialog.ConfirmDialog import com.base.appzxhy.ui.dialog.ConfirmDialog
import com.base.appzxhy.ui.recyclebin.RecycleBinUtils import com.base.appzxhy.ui.recyclebin.RecycleBinUtils
import com.base.appzxhy.ui.similar.SimilarPhotosActivity
import com.base.appzxhy.utils.FileUtils import com.base.appzxhy.utils.FileUtils
import com.base.appzxhy.utils.MediaUtils import com.base.appzxhy.utils.MediaUtils
import com.base.appzxhy.utils.Utils import com.base.appzxhy.utils.Utils
...@@ -47,7 +51,6 @@ class SimilarPhotosActivity : BaseActivity<ActivitySimilarPhotosBinding>(Activit ...@@ -47,7 +51,6 @@ class SimilarPhotosActivity : BaseActivity<ActivitySimilarPhotosBinding>(Activit
private var selectedFiles = listOf<SimilarBean>() private var selectedFiles = listOf<SimilarBean>()
private var total: Long = 0 private var total: Long = 0
private val adapter by lazy { private val adapter by lazy {
class ViewHolder(val binding: ItemSimilarPhotosBinding) : RecyclerView.ViewHolder(binding.root) class ViewHolder(val binding: ItemSimilarPhotosBinding) : RecyclerView.ViewHolder(binding.root)
...@@ -167,7 +170,6 @@ class SimilarPhotosActivity : BaseActivity<ActivitySimilarPhotosBinding>(Activit ...@@ -167,7 +170,6 @@ class SimilarPhotosActivity : BaseActivity<ActivitySimilarPhotosBinding>(Activit
view.text = if (total > 0) "$content (${Utils.getSizeFormat(total)})" else content view.text = if (total > 0) "$content (${Utils.getSizeFormat(total)})" else content
} }
override fun useDefaultImmersive() { override fun useDefaultImmersive() {
setStatusBarColor() setStatusBarColor()
ViewCompat.setOnApplyWindowInsetsListener(binding.root) { v, insets -> ViewCompat.setOnApplyWindowInsetsListener(binding.root) { v, insets ->
...@@ -217,6 +219,11 @@ class SimilarPhotosActivity : BaseActivity<ActivitySimilarPhotosBinding>(Activit ...@@ -217,6 +219,11 @@ class SimilarPhotosActivity : BaseActivity<ActivitySimilarPhotosBinding>(Activit
} }
} }
list = similarBeans.filter { it.items.size > 1 }.toMutableList() list = similarBeans.filter { it.items.size > 1 }.toMutableList()
launch(Dispatchers.IO) {
similarSize = list.sumOf { it.size } + list.sumOf { it.items.sumOf { it.size } }
}
launch(Dispatchers.Main) { launch(Dispatchers.Main) {
if (state != 0) scanComplete() if (state != 0) scanComplete()
state = 2 state = 2
...@@ -285,11 +292,17 @@ class SimilarPhotosActivity : BaseActivity<ActivitySimilarPhotosBinding>(Activit ...@@ -285,11 +292,17 @@ class SimilarPhotosActivity : BaseActivity<ActivitySimilarPhotosBinding>(Activit
lifecycleScope.launch(Dispatchers.IO) { lifecycleScope.launch(Dispatchers.IO) {
val paths = list.map { it.url }.toTypedArray() val paths = list.map { it.url }.toTypedArray()
paths.forEach { paths.forEach {
RecycleBinUtils.addRecycleBinFile(File(it)) val file = File(it)
cleanedSize = cleanedSize + file.length()
RecycleBinUtils.addRecycleBinFile(file)
FileUtils.deleteFile(it) FileUtils.deleteFile(it)
} }
launch(Dispatchers.Main) { MediaUtils.updateMedia(applicationContext, paths) } launch(Dispatchers.Main) { MediaUtils.updateMedia(applicationContext, paths) }
} }
} }
companion object {
var similarSize = 0L
}
} }
\ No newline at end of file
...@@ -2,47 +2,42 @@ package com.base.appzxhy.ui.splash ...@@ -2,47 +2,42 @@ package com.base.appzxhy.ui.splash
import android.Manifest import android.Manifest
import android.annotation.SuppressLint import android.annotation.SuppressLint
import android.app.ComponentCaller
import android.content.Intent import android.content.Intent
import android.graphics.Color
import android.net.Uri
import android.os.Build import android.os.Build
import android.os.Bundle import android.os.Bundle
import android.text.Spannable
import android.text.SpannableString import android.text.SpannableString
import android.text.TextPaint import android.text.Spanned
import android.text.method.LinkMovementMethod import android.text.method.LinkMovementMethod
import android.text.style.ClickableSpan import android.text.style.ClickableSpan
import android.text.style.UnderlineSpan
import android.view.View import android.view.View
import androidx.activity.viewModels import androidx.activity.viewModels
import androidx.core.graphics.toColorInt
import androidx.core.net.toUri
import androidx.core.view.ViewCompat import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat import androidx.core.view.WindowInsetsCompat
import com.base.appzxhy.SpConstObject.ifAgreePrivacy
import com.base.appzxhy.GlobalConfig.URL_PRIVACY import com.base.appzxhy.GlobalConfig.URL_PRIVACY
import com.base.appzxhy.GlobalConfig.URL_USE
import com.base.appzxhy.MyApplication import com.base.appzxhy.MyApplication
import com.base.appzxhy.R import com.base.appzxhy.SpConstObject.ifAgreePrivacy
import com.base.appzxhy.SpConstObject.isGuided import com.base.appzxhy.SpConstObject.isGuided
import com.base.appzxhy.base.BaseActivity import com.base.appzxhy.base.BaseActivity
import com.base.appzxhy.base.jumpAction import com.base.appzxhy.base.jumpAction
import com.base.appzxhy.bean.FeatureBean.Companion.BATTERY_INFO import com.base.appzxhy.bean.FeatureBean.Companion.BATTERY_INFO
import com.base.appzxhy.bean.FeatureBean.Companion.JUNK_CLEAN
import com.base.appzxhy.business.ads.AdsMgr import com.base.appzxhy.business.ads.AdsMgr
import com.base.appzxhy.business.ads.AdsShowCallBack import com.base.appzxhy.business.ads.AdsShowCallBack
import com.base.appzxhy.business.helper.EventUtils import com.base.appzxhy.business.helper.EventUtils
import com.base.appzxhy.business.service.StayJobService.Companion.startStayJobService import com.base.appzxhy.business.service.StayJobService.Companion.startStayJobService
import com.base.appzxhy.databinding.ActivitySplashBinding import com.base.appzxhy.databinding.ActivitySplashBinding
import com.base.appzxhy.ui.batteryinfo.BatteryInfoActivity
import com.base.appzxhy.ui.clean.JunkCleanActivity
import com.base.appzxhy.ui.dialog.StoragePermissionDialog import com.base.appzxhy.ui.dialog.StoragePermissionDialog
import com.base.appzxhy.ui.dialog.permissionStorageJump
import com.base.appzxhy.ui.guide.GuideCleanActivity import com.base.appzxhy.ui.guide.GuideCleanActivity
import com.base.appzxhy.ui.main.MainActivity import com.base.appzxhy.ui.main.MainActivity
import com.base.appzxhy.utils.PermissionUtils.checkStorePermission import com.base.appzxhy.utils.PermissionUtils.checkStorePermission
import com.base.appzxhy.utils.PermissionUtils.requestStoragePermission import com.base.appzxhy.utils.PermissionUtils.requestStoragePermission
import com.base.appzxhy.utils.UmpUtils import com.base.appzxhy.utils.UmpUtils
import kotlinx.coroutines.MainScope
import java.util.concurrent.atomic.AtomicBoolean import java.util.concurrent.atomic.AtomicBoolean
@SuppressLint("CustomSplashScreen") @SuppressLint("CustomSplashScreen")
class SplashActivity : BaseActivity<ActivitySplashBinding>(ActivitySplashBinding::inflate) { class SplashActivity : BaseActivity<ActivitySplashBinding>(ActivitySplashBinding::inflate) {
...@@ -81,28 +76,34 @@ class SplashActivity : BaseActivity<ActivitySplashBinding>(ActivitySplashBinding ...@@ -81,28 +76,34 @@ class SplashActivity : BaseActivity<ActivitySplashBinding>(ActivitySplashBinding
} }
private fun setPrivacyPolicy() { private fun setPrivacyPolicy() {
val privacyPolicy = getString(R.string.privacy_policy)
val text = "${getString(R.string.agree)} $privacyPolicy" val spannableString = SpannableString("privacy")
val spannableString = SpannableString(text) spannableString.setSpan(UnderlineSpan(), 0, spannableString.length, Spanned.SPAN_INCLUSIVE_INCLUSIVE)
val start = text.indexOf(privacyPolicy) spannableString.setSpan(object : ClickableSpan() {
val end = start + privacyPolicy.length
val clickableSpan = object : ClickableSpan() {
override fun onClick(widget: View) { override fun onClick(widget: View) {
startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(URL_PRIVACY))) startActivity(Intent(Intent.ACTION_VIEW, URL_PRIVACY.toUri()))
} }
}, 0, spannableString.length, Spanned.SPAN_INCLUSIVE_INCLUSIVE)
override fun updateDrawState(ds: TextPaint) { binding.tvPrivacy.text = spannableString
super.updateDrawState(ds) binding.tvPrivacy.movementMethod = LinkMovementMethod.getInstance()
ds.color = getColor(R.color.colorPrimary) binding.tvPrivacy.setLinkTextColor("#328EF6".toColorInt())
ds.bgColor = 0
} val spannableString2 = SpannableString("terms of service")
spannableString2.setSpan(UnderlineSpan(), 0, spannableString2.length, Spanned.SPAN_INCLUSIVE_INCLUSIVE)
spannableString2.setSpan(object : ClickableSpan() {
override fun onClick(widget: View) {
startActivity(Intent(Intent.ACTION_VIEW, URL_USE.toUri()))
} }
spannableString.setSpan(clickableSpan, start, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE) }, 0, spannableString2.length, Spanned.SPAN_INCLUSIVE_INCLUSIVE)
binding.tvAgree.text = spannableString
binding.tvAgree.movementMethod = LinkMovementMethod.getInstance() binding.tvTerms.text = spannableString2
binding.tvAgree.highlightColor = Color.TRANSPARENT binding.tvTerms.movementMethod = LinkMovementMethod.getInstance()
binding.tvTerms.setLinkTextColor("#328EF6".toColorInt())
} }
private fun requestNotificationPermission() { private fun requestNotificationPermission() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
val array = arrayOf(Manifest.permission.POST_NOTIFICATIONS) val array = arrayOf(Manifest.permission.POST_NOTIFICATIONS)
...@@ -123,6 +124,8 @@ class SplashActivity : BaseActivity<ActivitySplashBinding>(ActivitySplashBinding ...@@ -123,6 +124,8 @@ class SplashActivity : BaseActivity<ActivitySplashBinding>(ActivitySplashBinding
viewModel.startCountdown() viewModel.startCountdown()
MyApplication.appContext.initApp() MyApplication.appContext.initApp()
} }
} }
private fun initUMP() { private fun initUMP() {
...@@ -168,7 +171,8 @@ class SplashActivity : BaseActivity<ActivitySplashBinding>(ActivitySplashBinding ...@@ -168,7 +171,8 @@ class SplashActivity : BaseActivity<ActivitySplashBinding>(ActivitySplashBinding
goToAc(GuideCleanActivity::class.java) goToAc(GuideCleanActivity::class.java)
finish() finish()
} }
isHotLaunch->{
isHotLaunch -> {
goToAc(MainActivity::class.java) goToAc(MainActivity::class.java)
finish() finish()
} }
......
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#80FBFBFB"/>
<corners android:radius="@dimen/dp_20"/>
</shape>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?><!--<shape xmlns:android="http://schemas.android.com/apk/res/android">-->
<shape xmlns:android="http://schemas.android.com/apk/res/android"> <!-- <gradient-->
<gradient <!-- android:angle="270"-->
android:startColor="@color/white" <!-- android:centerColor="#D4E6FA"-->
android:endColor="@color/white" <!-- android:centerX="0.1"-->
android:angle="270" <!-- android:centerY="0.5"-->
android:centerX="0.5" <!-- android:endColor="@color/white"-->
android:centerY="0.5" /> <!-- android:startColor="#C5D8F6"-->
</shape> <!-- android:type="linear" />-->
\ No newline at end of file
<!--</shape>-->
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<bitmap android:src="@drawable/bg_bg_splash" />
</item>
</layer-list>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"> <shape xmlns:android="http://schemas.android.com/apk/res/android">
<gradient <gradient
android:endColor="#FF3D7AF7" android:endColor="#328EF6"
android:startColor="#FF6AB4FF" /> android:startColor="#328EF6" />
<corners android:radius="64dp" /> <corners android:radius="@dimen/dp_10" />
</shape> </shape>
\ No newline at end of file
...@@ -121,13 +121,14 @@ ...@@ -121,13 +121,14 @@
android:id="@+id/iv_empty" android:id="@+id/iv_empty"
android:layout_width="@dimen/dp_150" android:layout_width="@dimen/dp_150"
android:layout_height="@dimen/dp_150" android:layout_height="@dimen/dp_150"
android:layout_marginTop="@dimen/dp_80"
android:src="@drawable/queshengtu" android:src="@drawable/queshengtu"
android:visibility="invisible" android:visibility="invisible"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="@id/expandable_files"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" /> app:layout_constraintTop_toTopOf="@id/expandable_files"
app:layout_constraintVertical_bias="0.2" />
<androidx.appcompat.widget.LinearLayoutCompat <androidx.appcompat.widget.LinearLayoutCompat
android:id="@+id/ll_bottom" android:id="@+id/ll_bottom"
......
...@@ -11,12 +11,12 @@ ...@@ -11,12 +11,12 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="0dp" android:layout_height="0dp"
android:orientation="horizontal" android:orientation="horizontal"
app:layout_constraintGuide_percent="0.2" /> app:layout_constraintGuide_percent="0.15" />
<androidx.appcompat.widget.AppCompatImageView <androidx.appcompat.widget.AppCompatImageView
android:id="@+id/iv_logo" android:id="@+id/iv_logo"
android:layout_width="@dimen/dp_150" android:layout_width="@dimen/dp_136"
android:layout_height="@dimen/dp_150" android:layout_height="@dimen/dp_136"
android:src="@mipmap/logo" android:src="@mipmap/logo"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
...@@ -27,7 +27,7 @@ ...@@ -27,7 +27,7 @@
android:id="@+id/tvName" android:id="@+id/tvName"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_20" android:layout_marginTop="@dimen/dp_40"
android:text="@string/app_name" android:text="@string/app_name"
android:textColor="@color/black" android:textColor="@color/black"
android:textSize="20sp" android:textSize="20sp"
...@@ -38,23 +38,27 @@ ...@@ -38,23 +38,27 @@
<LinearLayout <LinearLayout
android:id="@+id/llConsent" android:id="@+id/llConsent"
android:layout_width="match_parent" android:layout_width="@dimen/dp_306"
android:layout_height="wrap_content" android:layout_height="@dimen/dp_150"
android:layout_marginHorizontal="33dp" android:layout_marginHorizontal="33dp"
android:background="@drawable/bg_f8f9fa_20" android:background="@drawable/bg_fbfbfb_20"
android:orientation="vertical" android:orientation="vertical"
android:padding="18dp"
app:layout_constraintBottom_toTopOf="@id/cl_bottom_start" app:layout_constraintBottom_toTopOf="@id/cl_bottom_start"
app:layout_constraintTop_toBottomOf="@id/tvName"> app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.495"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tvName"
app:layout_constraintVertical_bias="0.291">
<LinearLayout <LinearLayout
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"> android:layout_gravity="center_horizontal"
android:layout_marginTop="@dimen/dp_10">
<androidx.appcompat.widget.AppCompatImageView <androidx.appcompat.widget.AppCompatImageView
android:layout_width="wrap_content" android:layout_width="@dimen/dp_24"
android:layout_height="wrap_content" android:layout_height="@dimen/dp_24"
android:layout_gravity="center_vertical" android:layout_gravity="center_vertical"
android:src="@drawable/essentiona" /> android:src="@drawable/essentiona" />
...@@ -65,66 +69,93 @@ ...@@ -65,66 +69,93 @@
android:layout_marginStart="8dp" android:layout_marginStart="8dp"
android:text="@string/consent_required" android:text="@string/consent_required"
android:textColor="#838383" android:textColor="#838383"
android:textSize="16sp" android:textSize="@dimen/sp_13"
android:textStyle="bold"
tools:ignore="TextContrastCheck" /> tools:ignore="TextContrastCheck" />
</LinearLayout> </LinearLayout>
<ScrollView <ScrollView
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="150dp" android:layout_height="wrap_content"
android:layout_marginTop="12dp"> android:layout_marginTop="12dp">
<TextView <TextView
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginHorizontal="@dimen/dp_20"
android:gravity="center" android:gravity="center"
android:text="@string/consent" android:text="@string/consent"
android:textColor="#A8A8A8" android:textColor="#1A1A1A"
android:textSize="13sp" android:textSize="@dimen/sp_12"
tools:ignore="TextContrastCheck" /> tools:ignore="TextContrastCheck" />
</ScrollView> </ScrollView>
</LinearLayout> </LinearLayout>
<androidx.constraintlayout.widget.ConstraintLayout <LinearLayout
android:id="@+id/cl_bottom_start" android:id="@+id/cl_bottom_start"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginBottom="52dp" android:layout_marginBottom="@dimen/dp_50"
android:gravity="center_horizontal"
android:orientation="vertical"
app:layout_constraintBottom_toBottomOf="parent"> app:layout_constraintBottom_toBottomOf="parent">
<androidx.appcompat.widget.AppCompatTextView <androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tvStart" android:id="@+id/tvStart"
android:layout_width="match_parent" android:layout_width="@dimen/dp_260"
android:layout_height="wrap_content" android:layout_height="@dimen/dp_55"
android:layout_marginHorizontal="36dp" android:layout_marginTop="@dimen/dp_20"
android:layout_marginTop="16dp"
android:background="@drawable/bg_splash_button" android:background="@drawable/bg_splash_button"
android:paddingTop="10dp" android:gravity="center"
android:paddingBottom="10dp"
android:text="@string/start" android:text="@string/start"
android:textAlignment="center" android:textAlignment="center"
android:textColor="@color/white" android:textColor="@color/white"
android:textSize="24sp" android:textSize="@dimen/sp_16"
android:textStyle="bold" android:textStyle="bold" />
app:layout_constraintTop_toTopOf="parent" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_agree" <LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_14"
android:gravity="center_vertical">
<TextView
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:text="@string/agree" android:text="@string/agree"
android:textColor="@color/color_8b8b8b" android:textColor="#1A1A1A"
android:textSize="14sp" android:textSize="@dimen/sp_14" />
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tvStart"
tools:ignore="TextContrastCheck" />
</androidx.constraintlayout.widget.ConstraintLayout> <TextView
android:id="@+id/tvPrivacy"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/privacy"
android:textSize="@dimen/sp_14" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=" &amp; "
android:textColor="#1A1A1A"
android:textSize="@dimen/sp_14"
tools:ignore="HardcodedText" />
<TextView
android:id="@+id/tvTerms"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/terms_of_service"
android:textSize="@dimen/sp_14" />
</LinearLayout>
</LinearLayout>
<androidx.constraintlayout.widget.ConstraintLayout <androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/cl_bottom_loading" android:id="@+id/cl_bottom_loading"
......
...@@ -131,6 +131,7 @@ ...@@ -131,6 +131,7 @@
android:layout_marginHorizontal="@dimen/dp_50" android:layout_marginHorizontal="@dimen/dp_50"
android:layout_marginTop="@dimen/dp_20" android:layout_marginTop="@dimen/dp_20"
android:background="@drawable/bg_btn_50" android:background="@drawable/bg_btn_50"
android:foreground="?attr/selectableItemBackground"
android:gravity="center" android:gravity="center"
android:text="@string/clean_junk" android:text="@string/clean_junk"
android:textColor="@color/white" android:textColor="@color/white"
...@@ -173,9 +174,11 @@ ...@@ -173,9 +174,11 @@
<LinearLayout <LinearLayout
android:id="@+id/llClean" android:id="@+id/llClean"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout_weight="1" android:layout_weight="1"
android:foreground="?attr/selectableItemBackground"
android:gravity="center" android:gravity="center"
android:orientation="vertical"> android:orientation="vertical">
...@@ -199,6 +202,7 @@ ...@@ -199,6 +202,7 @@
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout_weight="1" android:layout_weight="1"
android:foreground="?attr/selectableItemBackground"
android:gravity="center" android:gravity="center"
android:orientation="vertical"> android:orientation="vertical">
...@@ -222,6 +226,7 @@ ...@@ -222,6 +226,7 @@
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout_weight="1" android:layout_weight="1"
android:foreground="?attr/selectableItemBackground"
android:gravity="center" android:gravity="center"
android:orientation="vertical"> android:orientation="vertical">
...@@ -262,6 +267,7 @@ ...@@ -262,6 +267,7 @@
android:layout_marginHorizontal="@dimen/dp_15" android:layout_marginHorizontal="@dimen/dp_15"
android:layout_marginTop="@dimen/dp_16" android:layout_marginTop="@dimen/dp_16"
android:background="@drawable/bg_f5f7f8_8" android:background="@drawable/bg_f5f7f8_8"
android:foreground="?attr/selectableItemBackground"
android:gravity="center_vertical" android:gravity="center_vertical"
android:orientation="horizontal"> android:orientation="horizontal">
...@@ -285,6 +291,7 @@ ...@@ -285,6 +291,7 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_10" android:layout_marginStart="@dimen/dp_10"
android:layout_marginEnd="@dimen/dp_8"
android:background="@drawable/bg_ff3434_4" android:background="@drawable/bg_ff3434_4"
android:paddingHorizontal="@dimen/dp_4" android:paddingHorizontal="@dimen/dp_4"
android:textColor="@color/white" android:textColor="@color/white"
...@@ -306,6 +313,7 @@ ...@@ -306,6 +313,7 @@
android:layout_marginHorizontal="@dimen/dp_15" android:layout_marginHorizontal="@dimen/dp_15"
android:layout_marginTop="@dimen/dp_16" android:layout_marginTop="@dimen/dp_16"
android:background="@drawable/bg_f5f7f8_8" android:background="@drawable/bg_f5f7f8_8"
android:foreground="?attr/selectableItemBackground"
android:gravity="center_vertical" android:gravity="center_vertical"
android:orientation="horizontal"> android:orientation="horizontal">
...@@ -340,6 +348,7 @@ ...@@ -340,6 +348,7 @@
android:layout_marginHorizontal="@dimen/dp_15" android:layout_marginHorizontal="@dimen/dp_15"
android:layout_marginTop="@dimen/dp_16" android:layout_marginTop="@dimen/dp_16"
android:background="@drawable/bg_f5f7f8_8" android:background="@drawable/bg_f5f7f8_8"
android:foreground="?attr/selectableItemBackground"
android:gravity="center_vertical" android:gravity="center_vertical"
android:orientation="horizontal"> android:orientation="horizontal">
......
...@@ -13,18 +13,33 @@ ...@@ -13,18 +13,33 @@
android:orientation="horizontal" android:orientation="horizontal"
app:layout_constraintTop_toTopOf="parent"> app:layout_constraintTop_toTopOf="parent">
<androidx.appcompat.widget.AppCompatTextView
<LinearLayout
android:id="@+id/tv_settings" android:id="@+id/tv_settings"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="20dp" android:layout_marginStart="@dimen/dp_8"
android:layout_marginTop="24dp" android:layout_marginTop="@dimen/dp_8"
android:gravity="center_vertical"
android:orientation="horizontal"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/ivBack"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="@dimen/dp_8"
app:srcCompat="@drawable/icon_return_w" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/settings" android:text="@string/settings"
android:textColor="@color/white" android:textColor="@color/white"
android:textSize="20sp" android:textSize="20sp"
android:textStyle="bold" android:textStyle="bold" />
app:layout_constraintStart_toStartOf="parent" </LinearLayout>
app:layout_constraintTop_toTopOf="parent" />
<androidx.appcompat.widget.AppCompatTextView <androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tv_cleaned_up" android:id="@+id/tv_cleaned_up"
...@@ -62,22 +77,31 @@ ...@@ -62,22 +77,31 @@
<androidx.appcompat.widget.AppCompatImageView <androidx.appcompat.widget.AppCompatImageView
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="32dp" app:layout_constraintBottom_toBottomOf="parent"
android:src="@drawable/zhuti"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:ignore="ImageContrastCheck" />
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/ivBlade"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/yezi"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintTop_toTopOf="parent"
tools:ignore="ImageContrastCheck" /> app:srcCompat="@drawable/image_set" />
<!-- <androidx.appcompat.widget.AppCompatImageView-->
<!-- android:layout_width="wrap_content"-->
<!-- android:layout_height="wrap_content"-->
<!-- android:layout_marginTop="32dp"-->
<!-- android:src="@drawable/zhuti"-->
<!-- app:layout_constraintEnd_toEndOf="parent"-->
<!-- app:layout_constraintStart_toStartOf="parent"-->
<!-- app:layout_constraintTop_toTopOf="parent"-->
<!-- tools:ignore="ImageContrastCheck" />-->
<!-- <androidx.appcompat.widget.AppCompatImageView-->
<!-- android:id="@+id/ivBlade"-->
<!-- android:layout_width="wrap_content"-->
<!-- android:layout_height="wrap_content"-->
<!-- android:src="@drawable/yezi"-->
<!-- app:layout_constraintEnd_toEndOf="parent"-->
<!-- app:layout_constraintStart_toStartOf="parent"-->
<!-- app:layout_constraintTop_toTopOf="parent"-->
<!-- tools:ignore="ImageContrastCheck" />-->
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
......
...@@ -47,8 +47,8 @@ ...@@ -47,8 +47,8 @@
<androidx.appcompat.widget.AppCompatImageView <androidx.appcompat.widget.AppCompatImageView
android:id="@+id/iv_select" android:id="@+id/iv_select"
android:layout_width="wrap_content" android:layout_width="@dimen/dp_20"
android:layout_height="wrap_content" android:layout_height="@dimen/dp_20"
android:src="@drawable/bg_select_yuan" android:src="@drawable/bg_select_yuan"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
......
...@@ -67,12 +67,13 @@ ...@@ -67,12 +67,13 @@
<androidx.appcompat.widget.AppCompatImageView <androidx.appcompat.widget.AppCompatImageView
android:id="@+id/iv_select" android:id="@+id/iv_select"
android:layout_width="wrap_content" android:layout_width="@dimen/dp_24"
android:layout_height="wrap_content" android:layout_height="@dimen/dp_24"
android:src="@drawable/bg_select_yuan" android:src="@drawable/bg_select_yuan"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" /> app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
<View <View
......
...@@ -40,4 +40,11 @@ ...@@ -40,4 +40,11 @@
<dimen name="sp_15">15sp</dimen> <dimen name="sp_15">15sp</dimen>
<dimen name="dp_280">280dp</dimen> <dimen name="dp_280">280dp</dimen>
<dimen name="dp_295">295dp</dimen> <dimen name="dp_295">295dp</dimen>
<dimen name="dp_288">288dp</dimen>
<dimen name="dp_306">306dp</dimen>
<dimen name="dp_136">136dp</dimen>
<dimen name="dp_24">24dp</dimen>
<dimen name="sp_13">13sp</dimen>
<dimen name="dp_260">260dp</dimen>
<dimen name="dp_26">26dp</dimen>
</resources> </resources>
\ No newline at end of file
...@@ -8,12 +8,9 @@ ...@@ -8,12 +8,9 @@
<string name="consent_required">Consent Required</string> <string name="consent_required">Consent Required</string>
<string name="consent"> <string name="consent">
During the use of this APP, we need to obtain the following information:Mobile phone model, mobile phone manufacturer,Android system version,Application version number, application version name,Package name,Google Ad ID,Mobile phone local time zone,Mobile phone photo album, empty folders, apk files, temp files, log files,Battery power, mobile phone standby time, battery temperature, battery voltage, battery technology, battery capacity, battery current, current average value of the battery During the use of this APP, we need to obtain the following information:Mobile phone model, mobile phone manufacturer,Android system version,Application version number, application version name,Package
Please rest assured that we will handle your information in strict accordance with relevant laws and regulations. All the information we collect will be used reasonably to ensure the normal operation and service improvement of the APP, and we will take all necessary measures to protect the security of your personal information. Your privacy is of utmost importance to us.
</string> </string>
<string name="start">Start</string> <string name="start">Start</string>
<string name="agree">By continuing you are agreeing to the</string>
<string name="privacy_policy">Privacy Policy</string> <string name="privacy_policy">Privacy Policy</string>
<string name="photo">Photo</string> <string name="photo">Photo</string>
<string name="audio">Audio</string> <string name="audio">Audio</string>
...@@ -146,5 +143,12 @@ Please rest assured that we will handle your information in strict accordance wi ...@@ -146,5 +143,12 @@ Please rest assured that we will handle your information in strict accordance wi
<string name="logout_content">Are you sure you want to quit without trying to clean up the garbage again?</string> <string name="logout_content">Are you sure you want to quit without trying to clean up the garbage again?</string>
<string name="please_wait_a_moment">Please wait a moment</string> <string name="please_wait_a_moment">Please wait a moment</string>
<string name="exit">Exit</string> <string name="exit">Exit</string>
<string name="start_to_use">START TO USE</string>
<string name="privacy">privacy</string>
<string name="agree">agree\u0020</string>
<string name="terms_of_service">terms of service</string>
<string name="notification_title">Turn on notification</string>
<string name="notification_content">Never miss important phone cleaning notification reminders</string>
<string name="turn_on">Turn on</string>
</resources> </resources>
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