Commit a4d0efe0 authored by guest's avatar guest

删除app管理功能

parent 02983f02
...@@ -63,13 +63,13 @@ ...@@ -63,13 +63,13 @@
android:screenOrientation="portrait" android:screenOrientation="portrait"
tools:ignore="DiscouragedApi,LockedOrientationActivity" /> tools:ignore="DiscouragedApi,LockedOrientationActivity" />
<activity <activity
android:name=".activity.appmanager.AppManagerActivity" android:name=".activity.videomanager.ManagerActivity"
android:exported="false" android:exported="false"
android:launchMode="singleTop" android:launchMode="singleTop"
android:screenOrientation="portrait" android:screenOrientation="portrait"
tools:ignore="DiscouragedApi,LockedOrientationActivity" /> tools:ignore="DiscouragedApi,LockedOrientationActivity" />
<activity <activity
android:name=".activity.appmanager.AppManagerAnimationActivity" android:name=".activity.videomanager.VideoCleanAnimationActivity"
android:exported="false" android:exported="false"
android:launchMode="singleTop" android:launchMode="singleTop"
android:screenOrientation="portrait" android:screenOrientation="portrait"
...@@ -86,18 +86,6 @@ ...@@ -86,18 +86,6 @@
android:launchMode="singleTop" android:launchMode="singleTop"
android:screenOrientation="portrait" android:screenOrientation="portrait"
tools:ignore="DiscouragedApi,LockedOrientationActivity" /> tools:ignore="DiscouragedApi,LockedOrientationActivity" />
<!-- <activity-->
<!-- android:name=".activity.appprocess.AppProcessAnimationActivity"-->
<!-- android:exported="false"-->
<!-- android:launchMode="singleTop"-->
<!-- android:screenOrientation="portrait"-->
<!-- tools:ignore="DiscouragedApi,LockedOrientationActivity" />-->
<!-- <activity-->
<!-- android:name=".activity.appprocess.AppProcessActivity"-->
<!-- android:exported="false"-->
<!-- android:launchMode="singleTop"-->
<!-- android:screenOrientation="portrait"-->
<!-- tools:ignore="DiscouragedApi,LockedOrientationActivity" />-->
<activity <activity
android:name=".activity.photomanager.PhotoManagerActivity" android:name=".activity.photomanager.PhotoManagerActivity"
android:exported="false" android:exported="false"
...@@ -183,24 +171,6 @@ ...@@ -183,24 +171,6 @@
android:launchMode="singleTop" android:launchMode="singleTop"
android:screenOrientation="portrait" android:screenOrientation="portrait"
tools:ignore="DiscouragedApi,LockedOrientationActivity" /> tools:ignore="DiscouragedApi,LockedOrientationActivity" />
<!-- <activity-->
<!-- android:name=".activity.whatsapp.WhatsAppCleanerAnimationActivity"-->
<!-- android:exported="false"-->
<!-- android:launchMode="singleTop"-->
<!-- android:screenOrientation="portrait"-->
<!-- tools:ignore="DiscouragedApi,LockedOrientationActivity" />-->
<!-- <activity-->
<!-- android:name=".activity.whatsapp.WhatsAppCleanerActivity"-->
<!-- android:exported="false"-->
<!-- android:launchMode="singleTop"-->
<!-- android:screenOrientation="portrait"-->
<!-- tools:ignore="DiscouragedApi,LockedOrientationActivity" />-->
<!-- <activity-->
<!-- android:name=".activity.whatsapp.WhatsAppMessageCleanActivity"-->
<!-- android:exported="false"-->
<!-- android:launchMode="singleTop"-->
<!-- android:screenOrientation="portrait"-->
<!-- tools:ignore="DiscouragedApi,LockedOrientationActivity" />-->
<activity <activity
android:name=".activity.privacyspace.PrivacyPinTwoActivity" android:name=".activity.privacyspace.PrivacyPinTwoActivity"
android:exported="false" android:exported="false"
......
...@@ -5,7 +5,6 @@ import android.content.Intent ...@@ -5,7 +5,6 @@ import android.content.Intent
import android.graphics.Color import android.graphics.Color
import androidx.activity.OnBackPressedCallback import androidx.activity.OnBackPressedCallback
import androidx.core.view.updatePadding import androidx.core.view.updatePadding
import com.base.datarecovery.activity.appmanager.AppManagerAnimationActivity
import com.base.datarecovery.activity.battery.BatteryInfoAnimationActivity import com.base.datarecovery.activity.battery.BatteryInfoAnimationActivity
import com.base.datarecovery.activity.junkclean.ScanJunkActivity import com.base.datarecovery.activity.junkclean.ScanJunkActivity
import com.base.datarecovery.activity.largefile.LargeFileAnimationActivity import com.base.datarecovery.activity.largefile.LargeFileAnimationActivity
...@@ -14,9 +13,9 @@ import com.base.datarecovery.activity.privacyspace.PrivacySpaceActivity ...@@ -14,9 +13,9 @@ import com.base.datarecovery.activity.privacyspace.PrivacySpaceActivity
import com.base.datarecovery.activity.recovery.FileScanResultActivity import com.base.datarecovery.activity.recovery.FileScanResultActivity
import com.base.datarecovery.activity.repeat.RepeatAnimationActivity import com.base.datarecovery.activity.repeat.RepeatAnimationActivity
import com.base.datarecovery.activity.screenshot.ScreenShotAnimationActivity import com.base.datarecovery.activity.screenshot.ScreenShotAnimationActivity
import com.base.datarecovery.activity.videomanager.VideoCleanAnimationActivity
import com.base.datarecovery.adapter.AppFunctionAdapter import com.base.datarecovery.adapter.AppFunctionAdapter
import com.base.datarecovery.ads.AdmobMaxHelper import com.base.datarecovery.ads.AdmobMaxHelper
import com.base.datarecovery.bean.ConstObject.APP_MANAGER
import com.base.datarecovery.bean.ConstObject.BATTERY_INFO import com.base.datarecovery.bean.ConstObject.BATTERY_INFO
import com.base.datarecovery.bean.ConstObject.JUNK_CLEANER import com.base.datarecovery.bean.ConstObject.JUNK_CLEANER
import com.base.datarecovery.bean.ConstObject.LARGE_FILE import com.base.datarecovery.bean.ConstObject.LARGE_FILE
...@@ -31,6 +30,7 @@ import com.base.datarecovery.bean.ConstObject.SCAN_DOCUMENTS ...@@ -31,6 +30,7 @@ import com.base.datarecovery.bean.ConstObject.SCAN_DOCUMENTS
import com.base.datarecovery.bean.ConstObject.SCAN_PHOTOS import com.base.datarecovery.bean.ConstObject.SCAN_PHOTOS
import com.base.datarecovery.bean.ConstObject.SCAN_VIDEOS import com.base.datarecovery.bean.ConstObject.SCAN_VIDEOS
import com.base.datarecovery.bean.ConstObject.SCREENSHOT_CLEANER import com.base.datarecovery.bean.ConstObject.SCREENSHOT_CLEANER
import com.base.datarecovery.bean.ConstObject.VIDEO_CLEAN
import com.base.datarecovery.bean.ConstObject.privacyPinPassword import com.base.datarecovery.bean.ConstObject.privacyPinPassword
import com.base.datarecovery.databinding.ActivityLayoutResultBinding import com.base.datarecovery.databinding.ActivityLayoutResultBinding
import com.base.datarecovery.help.BaseActivity import com.base.datarecovery.help.BaseActivity
...@@ -112,8 +112,8 @@ class ResultActivity : BaseActivity<ActivityLayoutResultBinding>() { ...@@ -112,8 +112,8 @@ class ResultActivity : BaseActivity<ActivityLayoutResultBinding>() {
// startActivity(Intent(this, AppProcessAnimationActivity::class.java)) // startActivity(Intent(this, AppProcessAnimationActivity::class.java))
// } // }
APP_MANAGER -> { VIDEO_CLEAN -> {
startActivity(Intent(this, AppManagerAnimationActivity::class.java)) startActivity(Intent(this, VideoCleanAnimationActivity::class.java))
} }
BATTERY_INFO -> { BATTERY_INFO -> {
......
package com.base.datarecovery.activity.appmanager
import android.annotation.SuppressLint
import android.content.Context
import android.content.Intent
import android.content.pm.ApplicationInfo
import android.content.pm.PackageInfo
import android.graphics.Color
import android.net.Uri
import android.view.View
import androidx.activity.addCallback
import androidx.core.view.updatePadding
import androidx.lifecycle.lifecycleScope
import com.base.datarecovery.adapter.AppManagerAdapter
import com.base.datarecovery.ads.AdmobMaxHelper
import com.base.datarecovery.bean.AppBean
import com.base.datarecovery.databinding.ActivityAppManagerBinding
import com.base.datarecovery.help.BaseActivity
import com.base.datarecovery.utils.BarUtils
import com.base.datarecovery.utils.RamUtils.ramPair
import com.base.datarecovery.view.DialogViews.showExitFunctionDialog
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
class AppManagerActivity : BaseActivity<ActivityAppManagerBinding>() {
var uninstallTimes = 0
override val binding: ActivityAppManagerBinding by lazy {
ActivityAppManagerBinding.inflate(layoutInflater)
}
private lateinit var adapter: AppManagerAdapter
private var ePercent = 0
@SuppressLint("SetTextI18n")
override fun initView() {
BarUtils.setStatusBarLightMode(this, true)
BarUtils.setStatusBarColor(this, Color.TRANSPARENT)
binding.root.updatePadding(top = BarUtils.getStatusBarHeight())
AdmobMaxHelper.admobMaxShowNativeAd(this,binding.idFlNative,1)
val ramPair = ramPair()
val percent = ((ramPair.first.toFloat() / ramPair.second.toFloat()) * 100).toInt()
ePercent = percent
adapter = AppManagerAdapter(true) { pkg ->
if (uninstallTimes % 3 == 0 && uninstallTimes > 0) {
AdmobMaxHelper.admobMaxShowInterstitialAd(this,false) { unInstall(pkg) }
} else {
unInstall(pkg)
}
}
binding.rv.adapter = adapter
initData()
}
private fun unInstall(pkg: String) {
val intent = Intent(Intent.ACTION_DELETE, Uri.parse("package:${pkg}"))
launcher.launch(intent) {
if (!isInstalled(this, pkg)) {
adapter.removeBean(pkg)
uninstallTimes++
}
}
}
private fun isInstalled(context: Context, pkg: String, error: (() -> Unit)? = null): Boolean {
return try {
context.packageManager.getPackageInfo(pkg, 0)
true
} catch (e: Exception) {
error?.invoke()
false
}
}
override fun initListener() {
super.initListener()
onBackPressedDispatcher.addCallback {
showExitFunctionDialog{showAd ->
if (showAd){
AdmobMaxHelper.admobMaxShowInterstitialAd(this@AppManagerActivity, isLoading = false) {
finishToMain()
}
}else{
finishToMain()
}
}
}
binding.flFanhui.setOnClickListener {
onBackPressedDispatcher.onBackPressed()
}
}
@SuppressLint("QueryPermissionsNeeded")
private fun initData() = lifecycleScope.launch(Dispatchers.IO) {
val pm = packageManager
val packages = pm.getInstalledPackages(0)
val list = arrayListOf<AppBean>()
packages.forEach { app ->
if (isLaunchApp(this@AppManagerActivity, app)) {
val appBean = AppBean(
app.applicationInfo.loadIcon(pm),
app.applicationInfo.loadLabel(pm).toString(),
app.applicationInfo.packageName
)
list.add(appBean)
}
}
launch(Dispatchers.Main) {
binding.pbLoading.visibility = View.GONE
adapter.setData(list)
}
}
private fun isLaunchApp(context: Context, app: PackageInfo, filterSystem: Boolean = true): Boolean {
val flagSystem = (app.applicationInfo.flags and ApplicationInfo.FLAG_SYSTEM) < 1
val flag = if (filterSystem) flagSystem else true
return flag && app.applicationInfo.packageName != context.packageName
}
}
\ No newline at end of file
//package com.base.datarecovery.activity.appprocess
//
//import android.annotation.SuppressLint
//import android.content.Context
//import android.content.Intent
//import android.content.pm.ApplicationInfo
//import android.content.pm.PackageInfo
//import android.graphics.Color
//import android.net.Uri
//import android.provider.Settings
//import android.view.View
//import androidx.activity.addCallback
//import androidx.core.view.updatePadding
//import androidx.lifecycle.lifecycleScope
//import com.base.datarecovery.adapter.AppManagerAdapter
//import com.base.datarecovery.ads.AdmobMaxHelper
//import com.base.datarecovery.ads.AdmobMaxHelper.showBackInterAdSp
//import com.base.datarecovery.bean.AppBean
//import com.base.datarecovery.databinding.ActivityAppProcessBinding
//import com.base.datarecovery.help.BaseActivity
//import com.base.datarecovery.help.KotlinExt.toFormatSize
//import com.base.datarecovery.utils.BarUtils
//import com.base.datarecovery.utils.RamUtils.ramPair
//import com.base.datarecovery.view.DialogViews.showAppProcessExitDialog
//import kotlinx.coroutines.Dispatchers
//import kotlinx.coroutines.launch
//
//
//class AppProcessActivity : BaseActivity<ActivityAppProcessBinding>() {
//
// override val binding: ActivityAppProcessBinding by lazy {
// ActivityAppProcessBinding.inflate(layoutInflater)
// }
//
// private lateinit var adapter: AppManagerAdapter
//
// private var ePercent = 0
//
// @SuppressLint("SetTextI18n")
// override fun initView() {
// BarUtils.setStatusBarLightMode(this, true)
// BarUtils.setStatusBarColor(this, Color.TRANSPARENT)
// binding.root.updatePadding(top = BarUtils.getStatusBarHeight())
// AdmobMaxHelper.admobMaxShowNativeAd(this,binding.idFlNative,1)
// val ramPair = ramPair()
// val percent = ((ramPair.first.toFloat() / ramPair.second.toFloat()) * 100).toInt()
// ePercent = percent
// binding.tvPercent.text = percent.toString()
// binding.pbRam.progress = percent
// binding.tvSize.text = "${ramPair.first.toFormatSize()}/${ramPair.second.toFormatSize()}"
//
// adapter = AppManagerAdapter { pkg ->
// val intent = Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS)
// val uri = Uri.fromParts("package", pkg, null) // 替换为需要跳转的应用包名
// intent.setData(uri)
// startActivity(intent)
// }
// binding.rv.adapter = adapter
//
// initData()
// }
//
// override fun initListener() {
// super.initListener()
// onBackPressedDispatcher.addCallback {
// showAppProcessExitDialog(ePercent) {
// if (showBackInterAdSp()) {
// AdmobMaxHelper.admobMaxShowInterstitialAd(this@AppProcessActivity, false) {
// finishToMain()
// }
// } else {
// finishToMain()
// }
// }
// }
// binding.flFanhui.setOnClickListener {
// onBackPressedDispatcher.onBackPressed()
// }
// }
//
// @SuppressLint("QueryPermissionsNeeded")
// private fun initData() = lifecycleScope.launch(Dispatchers.IO) {
// val pm = packageManager
// val packages = pm.getInstalledPackages(0)
// val list = arrayListOf<AppBean>()
//
// packages.forEach { app ->
// if (isLaunchApp(this@AppProcessActivity, app)) {
//
// val appBean = AppBean(
// app.applicationInfo.loadIcon(pm),
// app.applicationInfo.loadLabel(pm).toString(),
// app.applicationInfo.packageName
// )
// list.add(appBean)
// }
// }
// launch(Dispatchers.Main) {
// binding.pbLoading.visibility = View.GONE
// adapter.setData(list)
// }
// }
//
// private fun isLaunchApp(context: Context, app: PackageInfo, filterSystem: Boolean = true): Boolean {
//
// val flagSystem = (app.applicationInfo.flags and ApplicationInfo.FLAG_SYSTEM) < 1
// val flag = if (filterSystem) flagSystem else true
//
// return flag && app.applicationInfo.packageName != context.packageName
// }
//
//}
\ No newline at end of file
//package com.base.datarecovery.activity.appprocess
//
//import android.annotation.SuppressLint
//import android.content.Intent
//import android.view.View
//import android.widget.Toast
//import androidx.activity.addCallback
//import androidx.lifecycle.lifecycleScope
//import com.base.datarecovery.ads.AdmobMaxHelper
//import com.base.datarecovery.databinding.ActivityAppManagerAnimationBinding
//import com.base.datarecovery.help.BaseActivity
//import kotlinx.coroutines.Dispatchers
//import kotlinx.coroutines.Job
//import kotlinx.coroutines.delay
//import kotlinx.coroutines.launch
//import kotlin.random.Random
//
//class AppProcessAnimationActivity : BaseActivity<ActivityAppManagerAnimationBinding>() {
//
// override val binding: ActivityAppManagerAnimationBinding by lazy {
// ActivityAppManagerAnimationBinding.inflate(layoutInflater)
// }
// private var job: Job? = null
//
// override fun initView() {
// playLottie()
// AdmobMaxHelper.admobMaxShowNativeAd(this,binding.idFlNative,1)
// }
//
// override fun initListener() {
// onBackPressedDispatcher.addCallback {
// Toast.makeText(this@AppProcessAnimationActivity, "wait a moment", Toast.LENGTH_SHORT).show()
// }
// }
//
// @SuppressLint("SetTextI18n")
// private fun playLottie() {
// binding.lottie.imageAssetsFolder = "app_manager/images/"
// binding.lottie.setAnimation("app_manager/data.json")
// binding.lottie.playAnimation()
// }
//
// @SuppressLint("SetTextI18n")
// private fun jumpJob() = lifecycleScope.launch(Dispatchers.Main) {
// delay(Random.nextLong(4000, 6000))
// binding.lottie.visibility = View.GONE
// binding.lottieCompleted.visibility = View.VISIBLE
// binding.lottieCompleted.playAnimation()
// binding.tv.text = "Completed!"
// delay(1000)
//
// AdmobMaxHelper.admobMaxShowInterstitialAd(this@AppProcessAnimationActivity) {
// startActivity(Intent(this@AppProcessAnimationActivity, AppProcessActivity::class.java))
// finish()
// }
//
// }
//
//
// override fun onResume() {
// super.onResume()
// if (job?.isActive == false || job == null) {
// job = jumpJob()
// }
// }
//
// override fun onPause() {
// super.onPause()
// job?.cancel()
// job = null
// }
//}
\ No newline at end of file
...@@ -4,7 +4,6 @@ import android.app.Activity ...@@ -4,7 +4,6 @@ import android.app.Activity
import android.content.Intent import android.content.Intent
import android.util.Log import android.util.Log
import com.base.datarecovery.activity.MainActivity import com.base.datarecovery.activity.MainActivity
import com.base.datarecovery.activity.appmanager.AppManagerAnimationActivity
import com.base.datarecovery.activity.battery.BatteryInfoAnimationActivity import com.base.datarecovery.activity.battery.BatteryInfoAnimationActivity
import com.base.datarecovery.activity.guide.GuideActivity import com.base.datarecovery.activity.guide.GuideActivity
import com.base.datarecovery.activity.junkclean.ScanJunkActivity import com.base.datarecovery.activity.junkclean.ScanJunkActivity
...@@ -12,6 +11,7 @@ import com.base.datarecovery.activity.newfunction.WeatherInterface ...@@ -12,6 +11,7 @@ import com.base.datarecovery.activity.newfunction.WeatherInterface
import com.base.datarecovery.activity.newfunction.XingzuoLoadingActivity import com.base.datarecovery.activity.newfunction.XingzuoLoadingActivity
import com.base.datarecovery.activity.photomanager.PhotoManagerAnimationActivity import com.base.datarecovery.activity.photomanager.PhotoManagerAnimationActivity
import com.base.datarecovery.activity.recovery.FileScanResultActivity import com.base.datarecovery.activity.recovery.FileScanResultActivity
import com.base.datarecovery.activity.videomanager.VideoCleanAnimationActivity
import com.base.datarecovery.bean.ConstObject import com.base.datarecovery.bean.ConstObject
import com.base.datarecovery.bean.ConstObject.ID_APP_MANAGER import com.base.datarecovery.bean.ConstObject.ID_APP_MANAGER
import com.base.datarecovery.bean.ConstObject.ID_BATTERY_INFO import com.base.datarecovery.bean.ConstObject.ID_BATTERY_INFO
...@@ -92,7 +92,7 @@ object StartUtils { ...@@ -92,7 +92,7 @@ object StartUtils {
// } // }
ID_APP_MANAGER -> { ID_APP_MANAGER -> {
context.startActivity(Intent(context, AppManagerAnimationActivity::class.java)) context.startActivity(Intent(context, VideoCleanAnimationActivity::class.java))
} }
ID_BATTERY_INFO -> { ID_BATTERY_INFO -> {
......
...@@ -33,6 +33,7 @@ class TaskManager { ...@@ -33,6 +33,7 @@ class TaskManager {
} }
fun startProgress() { fun startProgress() {
binding.idLlTishi.isVisible=false
binding.idTvStart.isVisible = false binding.idTvStart.isVisible = false
binding.llStart.visibility = View.GONE binding.llStart.visibility = View.GONE
binding.llProgress.visibility = View.VISIBLE binding.llProgress.visibility = View.VISIBLE
......
package com.base.datarecovery.activity.appmanager package com.base.datarecovery.activity.videomanager
import android.annotation.SuppressLint import android.annotation.SuppressLint
import android.content.Intent import android.content.Intent
import android.view.View import android.view.View
...@@ -14,7 +14,7 @@ import kotlinx.coroutines.delay ...@@ -14,7 +14,7 @@ import kotlinx.coroutines.delay
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import kotlin.random.Random import kotlin.random.Random
class AppManagerAnimationActivity : BaseActivity<ActivityAppProcessAnimationBinding>() { class VideoCleanAnimationActivity : BaseActivity<ActivityAppProcessAnimationBinding>() {
override val binding: ActivityAppProcessAnimationBinding by lazy { override val binding: ActivityAppProcessAnimationBinding by lazy {
ActivityAppProcessAnimationBinding.inflate(layoutInflater) ActivityAppProcessAnimationBinding.inflate(layoutInflater)
...@@ -28,7 +28,7 @@ class AppManagerAnimationActivity : BaseActivity<ActivityAppProcessAnimationBind ...@@ -28,7 +28,7 @@ class AppManagerAnimationActivity : BaseActivity<ActivityAppProcessAnimationBind
override fun initListener() { override fun initListener() {
onBackPressedDispatcher.addCallback { onBackPressedDispatcher.addCallback {
Toast.makeText(this@AppManagerAnimationActivity, "wait a moment", Toast.LENGTH_SHORT).show() Toast.makeText(this@VideoCleanAnimationActivity, "wait a moment", Toast.LENGTH_SHORT).show()
} }
} }
...@@ -48,8 +48,8 @@ class AppManagerAnimationActivity : BaseActivity<ActivityAppProcessAnimationBind ...@@ -48,8 +48,8 @@ class AppManagerAnimationActivity : BaseActivity<ActivityAppProcessAnimationBind
binding.tv.text = "Completed!" binding.tv.text = "Completed!"
delay(1000) delay(1000)
AdmobMaxHelper.admobMaxShowInterstitialAd(this@AppManagerAnimationActivity) { AdmobMaxHelper.admobMaxShowInterstitialAd(this@VideoCleanAnimationActivity) {
startActivity(Intent(this@AppManagerAnimationActivity, AppManagerActivity::class.java)) startActivity(Intent(this@VideoCleanAnimationActivity, ManagerActivity::class.java))
finish() finish()
} }
......
//package com.base.datarecovery.activity.whatsapp
//
//import android.content.Intent
//import android.graphics.Color
//import android.os.Environment
//import androidx.activity.addCallback
//import androidx.core.view.updatePadding
//import androidx.lifecycle.lifecycleScope
//import com.base.datarecovery.R
//import com.base.datarecovery.activity.ResultActivity
//import com.base.datarecovery.adapter.WhatsAppCleanerAdapter
//import com.base.datarecovery.ads.AdmobMaxHelper
//import com.base.datarecovery.bean.ConstObject.WHATSAPP_CLEANER
//import com.base.datarecovery.bean.WhatsAppCleanerBean
//import com.base.datarecovery.databinding.ActivityWhatsAppCleanerBinding
//import com.base.datarecovery.help.BaseActivity
//import com.base.datarecovery.help.FileHelp.getDirFiles
//import com.base.datarecovery.help.KotlinExt.toFormatSize
//import com.base.datarecovery.help.PermissionHelp.checkStorePermission
//import com.base.datarecovery.help.PermissionHelp.requestStorePermission
//import com.base.datarecovery.utils.BarUtils
//import com.base.datarecovery.utils.FileHexEx.isImage
//import com.base.datarecovery.utils.FileHexEx.isWhatAppVideo
//import com.base.datarecovery.utils.LogEx
//import com.base.datarecovery.view.DialogViews.showExitFunctionDialog
//import com.base.datarecovery.view.DialogViews.showGerPermission
//import com.google.gson.Gson
//import kotlinx.coroutines.Dispatchers
//import kotlinx.coroutines.launch
//import java.io.File
//
//class WhatsAppCleanerActivity : BaseActivity<ActivityWhatsAppCleanerBinding>() {
//
// private val TAG = "WhatsAppCleanerActivity"
// private lateinit var adapter: WhatsAppCleanerAdapter
//
// override val binding: ActivityWhatsAppCleanerBinding by lazy {
// ActivityWhatsAppCleanerBinding.inflate(layoutInflater)
// }
//
//
// override fun initView() {
// BarUtils.setStatusBarLightMode(this, true)
// BarUtils.setStatusBarColor(this, Color.TRANSPARENT)
// binding.idTop.updatePadding(top = BarUtils.getStatusBarHeight())
// AdmobMaxHelper.admobMaxShowNativeAd(this,binding.idFlNative,1)
// adapter = WhatsAppCleanerAdapter {
// startActivity(Intent(this, WhatsAppMessageCleanActivity::class.java).apply {
// putExtra("PathList", Gson().toJson(it.subFile.toTypedArray()))
// putExtra("Tittle", it.tittle)
// })
// // finish()
// }
// binding.rv.adapter = adapter
//
// if (checkStorePermission()) {
// initData()
// } else {
// showGerPermission(null, deny = {
// finishToMain()
// }, allow = {
// requestStorePermission(
// launcher,
// result = { flag ->
// if (flag) {
// initData()
// } else {
// finishToMain()
// }
// },
// )
// })
// }
// }
//
// override fun initListener() {
// binding.flBack.setOnClickListener {
// onBackPressedDispatcher.onBackPressed()
// }
// onBackPressedDispatcher.addCallback {
// showExitFunctionDialog { showAd ->
// if (showAd) {
// AdmobMaxHelper.admobMaxShowInterstitialAd(this@WhatsAppCleanerActivity, false) {
// finishToMain()
// }
// } else {
// finishToMain()
// }
// }
// }
// binding.tvTvGotIt.setOnClickListener {
// startActivity(Intent(this, ResultActivity::class.java).apply {
// putExtra("from", WHATSAPP_CLEANER)
// })
// finish()
// }
//
// }
//
//
// private fun initData() = lifecycleScope.launch(Dispatchers.IO) {
//
// val whatsAppRoot = File(Environment.getExternalStorageDirectory(), "Android/media/com.whatsapp/WhatsApp/Media/")
// LogEx.logDebug(TAG, whatsAppRoot.absolutePath)
// val list = arrayListOf<WhatsAppCleanerBean>()
// list.add(WhatsAppCleanerBean(R.mipmap.videomessages, "Video Messages"))
// list.add(WhatsAppCleanerBean(R.mipmap.imagemessages, "Image Messages"))
// list.add(WhatsAppCleanerBean(R.mipmap.audiomessages, "Audio Messages"))
// var totalSize = 0L
// whatsAppRoot.listFiles()?.forEach { file ->
// if (file.name == "WhatsApp Video") {
// LogEx.logDebug(TAG, "whatsapp file=${file.absolutePath}")
// val bean = list.find { it.tittle == "Video Messages" }
// val subFile = getDirFiles(file).filter { isWhatAppVideo(it) }
// val size = subFile.sumOf { it.length() }
// bean?.size = size
// totalSize += size
// bean?.subFile = subFile.map { it.absolutePath }
//// subFile.forEach { path ->
//// LogEx.logDebug(TAG, "path=$path")
//// }
// }
// if (file.name == "WhatsApp Images") {
// val bean = list.find { it.tittle == "Image Messages" }
// val subFile = getDirFiles(file).filter { isImage(it) }
// val size = subFile.sumOf { it.length() }
// bean?.size = size
// totalSize += size
// bean?.subFile = subFile.map { it.absolutePath }
// }
// if (file.name == "WhatsApp Audio") {
// val bean = list.find { it.tittle == "Audio Messages" }
// val subFile = getDirFiles(file).filter { it.name.contains(".mp3") }
// val size = subFile.sumOf { it.length() }
// bean?.size = size
// totalSize += size
// bean?.subFile = subFile.map { it.absolutePath }
// }
// }
// launch(Dispatchers.Main) {
// adapter.setData(list)
// val split = totalSize.toFormatSize().split(" ")
// binding.tvSize.text = split[0]
// binding.tvUnit.text = split[1]
// }
// }
//
//}
\ No newline at end of file
//package com.base.datarecovery.activity.whatsapp
//
//import android.annotation.SuppressLint
//import android.content.Intent
//import android.view.View
//import android.widget.Toast
//import androidx.activity.addCallback
//import androidx.lifecycle.lifecycleScope
//import com.base.datarecovery.ads.AdmobMaxHelper
//import com.base.datarecovery.databinding.ActivityWhatsAppCleanerAnimationBinding
//import com.base.datarecovery.help.BaseActivity
//import kotlinx.coroutines.Job
//import kotlinx.coroutines.delay
//import kotlinx.coroutines.launch
//import kotlin.random.Random
//
//class WhatsAppCleanerAnimationActivity : BaseActivity<ActivityWhatsAppCleanerAnimationBinding>() {
//
//
// override val binding: ActivityWhatsAppCleanerAnimationBinding by lazy {
// ActivityWhatsAppCleanerAnimationBinding.inflate(layoutInflater)
// }
//
// private var job: Job? = null
// override fun initView() {
// AdmobMaxHelper.admobMaxShowNativeAd(this,binding.idFlNative,1)
// playLottie()
//
// }
//
// override fun initListener() {
// onBackPressedDispatcher.addCallback {
// Toast.makeText(this@WhatsAppCleanerAnimationActivity, "wait a moment", Toast.LENGTH_SHORT).show()
// }
// }
//
// @SuppressLint("SetTextI18n")
// private fun playLottie() {
// binding.lottie.imageAssetsFolder = "junk_scan/images/"
// binding.lottie.setAnimation("junk_scan/data.json")
// binding.lottie.playAnimation()
// }
//
// @SuppressLint("SetTextI18n")
// fun jumpJob() = lifecycleScope.launch {
// delay(Random.nextLong(3500, 4500))
// binding.lottie.cancelAnimation()
// binding.lottie.visibility = View.GONE
// binding.lottieCompleted.visibility = View.VISIBLE
// binding.lottieCompleted.playAnimation()
// binding.tv.text = "Completed!"
// delay(1000)
// AdmobMaxHelper.admobMaxShowInterstitialAd(this@WhatsAppCleanerAnimationActivity) {
// startActivity(Intent(this@WhatsAppCleanerAnimationActivity, WhatsAppCleanerActivity::class.java))
// finish()
// }
// }
//
// override fun onResume() {
// super.onResume()
// if (job?.isActive == false || job == null) {
// job = jumpJob()
// }
// }
//
// override fun onPause() {
// super.onPause()
// job?.cancel()
// job = null
// }
//
//}
\ No newline at end of file
//package com.base.datarecovery.activity.whatsapp
//
//import android.content.Intent
//import android.graphics.Color
//import androidx.activity.addCallback
//import androidx.recyclerview.widget.GridLayoutManager
//import androidx.recyclerview.widget.LinearLayoutManager
//import com.base.datarecovery.activity.MainActivity
//import com.base.datarecovery.activity.junkclean.CleaningActivity
//import com.base.datarecovery.adapter.WhatsAppMediaAdapter
//import com.base.datarecovery.ads.admob.AdmobInterstitialUtils
//import com.base.datarecovery.ads.admob.AdmobNativeUtils
//import com.base.datarecovery.bean.ConstObject
//import com.base.datarecovery.bean.MediaBean
//import com.base.datarecovery.databinding.ActivityWhatsAppMessageCleanBinding
//import com.base.datarecovery.help.BaseActivity
//import com.base.datarecovery.help.KotlinExt.toFormatSize
//import com.base.datarecovery.utils.ActivityManagerUtils
//import com.base.datarecovery.utils.BarUtils
//import com.google.gson.Gson
//import java.io.File
//
//class WhatsAppMessageCleanActivity : BaseActivity<ActivityWhatsAppMessageCleanBinding>() {
//
// private val pathList by lazy {
// val json = intent.extras?.getString("PathList")
// val list = Gson().fromJson(json, Array<String>::class.java)
// list.map { MediaBean(it) }
// }
// private lateinit var adapter: WhatsAppMediaAdapter
//
// override val binding: ActivityWhatsAppMessageCleanBinding by lazy {
// ActivityWhatsAppMessageCleanBinding.inflate(layoutInflater)
// }
//
//
// override fun initView() {
// BarUtils.setStatusBarLightMode(this, true)
// BarUtils.setStatusBarColor(this, Color.TRANSPARENT)
//
// val tittle = intent.extras?.getString("Tittle") ?: ""
// binding.tvTitle.text = tittle
//
// var isList = false
// when (tittle) {
// "Audio Messages" -> {
// binding.rv.layoutManager = LinearLayoutManager(this)
// isList = true
// }
//
// else -> {
// binding.rv.layoutManager = GridLayoutManager(this, 3)
// }
// }
//
// adapter = WhatsAppMediaAdapter(isList) {
// binding.llSelectAll.isSelected = it
// binding.tvClean.isEnabled = adapter.getSelectData().isNotEmpty()
// val split = adapter.getSelectDataSize().toFormatSize().split(" ")
// binding.tvSize.text = split[0]
// binding.tvUnit.text = split[1]
// }
// binding.rv.adapter = adapter
// adapter.setData(pathList)
//
// AdmobNativeUtils.showNativeAd(this, binding.flAd)
// }
//
// override fun initListener() {
// binding.flBack.setOnClickListener {
// onBackPressedDispatcher.onBackPressed()
// }
// onBackPressedDispatcher.addCallback {
// AdmobInterstitialUtils.showInterstitialAd(this@WhatsAppMessageCleanActivity) {
// finishToMain()
// }
// }
// binding.llSelectAll.setOnClickListener {
// it.isSelected = !it.isSelected
// adapter.toggleSelect(it.isSelected)
// binding.tvClean.isEnabled = it.isSelected
// val split = adapter.getSelectDataSize().toFormatSize().split(" ")
// binding.tvSize.text = split[0]
// binding.tvUnit.text = split[1]
// }
//
// binding.tvClean.setOnClickListener {
//
// AdmobInterstitialUtils.showInterstitialAd(this) {
// val list = adapter.getSelectData()
// ActivityManagerUtils.finishAll(MainActivity::class.java)
// startActivity(
// Intent(this, CleaningActivity::class.java).apply {
// putExtra("list",list.toTypedArray())
// putExtra("size", list.map { File(it) }.sumOf { it.length() })
// putExtra("type", ConstObject.WHATSAPP_CLEANER)
// }
// )
//// runCatching {
//// list.forEach { File(it).delete() }
//// }
//// startActivity(Intent(this@WhatsAppMessageCleanActivity, ResultActivity::class.java).apply {
//// putExtra("from", ConstObject.WHATSAPP_CLEANER)
//// })
//// finish()
// }
// }
// }
//
//
//}
\ No newline at end of file
...@@ -7,7 +7,6 @@ import androidx.core.content.ContextCompat ...@@ -7,7 +7,6 @@ import androidx.core.content.ContextCompat
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
import androidx.recyclerview.widget.RecyclerView.ViewHolder import androidx.recyclerview.widget.RecyclerView.ViewHolder
import com.base.datarecovery.R import com.base.datarecovery.R
import com.base.datarecovery.bean.ConstObject.APP_MANAGER
import com.base.datarecovery.bean.ConstObject.BATTERY_INFO import com.base.datarecovery.bean.ConstObject.BATTERY_INFO
import com.base.datarecovery.bean.ConstObject.JUNK_CLEANER import com.base.datarecovery.bean.ConstObject.JUNK_CLEANER
import com.base.datarecovery.bean.ConstObject.LARGE_FILE import com.base.datarecovery.bean.ConstObject.LARGE_FILE
...@@ -18,6 +17,7 @@ import com.base.datarecovery.bean.ConstObject.RECOVERY_PHOTOS ...@@ -18,6 +17,7 @@ import com.base.datarecovery.bean.ConstObject.RECOVERY_PHOTOS
import com.base.datarecovery.bean.ConstObject.RECOVERY_VIDEOS import com.base.datarecovery.bean.ConstObject.RECOVERY_VIDEOS
import com.base.datarecovery.bean.ConstObject.REPEAT_PHOTOS import com.base.datarecovery.bean.ConstObject.REPEAT_PHOTOS
import com.base.datarecovery.bean.ConstObject.SCREENSHOT_CLEANER import com.base.datarecovery.bean.ConstObject.SCREENSHOT_CLEANER
import com.base.datarecovery.bean.ConstObject.VIDEO_CLEAN
import com.base.datarecovery.databinding.ItemResultFun2Binding import com.base.datarecovery.databinding.ItemResultFun2Binding
import com.base.datarecovery.utils.AppPreferences import com.base.datarecovery.utils.AppPreferences
import com.base.datarecovery.view.XmlEx.inflate import com.base.datarecovery.view.XmlEx.inflate
...@@ -37,8 +37,10 @@ class AppFunctionAdapter(val click: (name: String) -> Unit) : ...@@ -37,8 +37,10 @@ class AppFunctionAdapter(val click: (name: String) -> Unit) :
Fun(SCREENSHOT_CLEANER, R.mipmap.screenshots), Fun(SCREENSHOT_CLEANER, R.mipmap.screenshots),
// Fun(WHATSAPP_CLEANER, R.mipmap.whatsapp), // Fun(WHATSAPP_CLEANER, R.mipmap.whatsapp),
Fun(LARGE_FILE, R.mipmap.large), Fun(LARGE_FILE, R.mipmap.large),
Fun(VIDEO_CLEAN, R.mipmap.r_sp),
// Fun(APP_PROCESS, R.mipmap.h_appprocess), // Fun(APP_PROCESS, R.mipmap.h_appprocess),
Fun(APP_MANAGER, R.mipmap.h_appmanager), // Fun(APP_MANAGER, R.mipmap.h_appmanager),
Fun(BATTERY_INFO, R.mipmap.h_battery), Fun(BATTERY_INFO, R.mipmap.h_battery),
) )
......
...@@ -31,8 +31,9 @@ object ConstObject { ...@@ -31,8 +31,9 @@ object ConstObject {
// const val WHATSAPP_CLEANER = "Whatsapp Cleaner" // const val WHATSAPP_CLEANER = "Whatsapp Cleaner"
const val LARGE_FILE = "Large File" const val LARGE_FILE = "Large File"
// const val APP_PROCESS = "App Process" // const val APP_PROCESS = "App Process"
const val APP_MANAGER = "Uninstall App" // const val APP_MANAGER = "Uninstall App"
const val BATTERY_INFO = "Battery Info" const val BATTERY_INFO = "Battery Info"
const val VIDEO_CLEAN = "Video Clean"
const val SCAN_PHOTOS = 1 const val SCAN_PHOTOS = 1
const val SCAN_DOCUMENTS = 2 const val SCAN_DOCUMENTS = 2
......
...@@ -2,11 +2,6 @@ package com.base.datarecovery.fragment ...@@ -2,11 +2,6 @@ package com.base.datarecovery.fragment
import android.annotation.SuppressLint import android.annotation.SuppressLint
import android.content.Intent import android.content.Intent
import android.os.Bundle
import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import com.base.datarecovery.R import com.base.datarecovery.R
import com.base.datarecovery.activity.MainActivity import com.base.datarecovery.activity.MainActivity
import com.base.datarecovery.activity.guide.GuideActivity import com.base.datarecovery.activity.guide.GuideActivity
...@@ -14,9 +9,8 @@ import com.base.datarecovery.ads.AdmobMaxHelper ...@@ -14,9 +9,8 @@ import com.base.datarecovery.ads.AdmobMaxHelper
import com.base.datarecovery.bean.ConstObject.isGuide import com.base.datarecovery.bean.ConstObject.isGuide
import com.base.datarecovery.databinding.FragmentGuideBinding import com.base.datarecovery.databinding.FragmentGuideBinding
import com.base.datarecovery.help.BaseFragment import com.base.datarecovery.help.BaseFragment
import com.base.datarecovery.utils.AppPreferences
class GuideFragment constructor() : BaseFragment<FragmentGuideBinding>() { class GuideFragment : BaseFragment<FragmentGuideBinding>() {
var page: Int = 1 var page: Int = 1
...@@ -55,14 +49,15 @@ class GuideFragment constructor() : BaseFragment<FragmentGuideBinding>() { ...@@ -55,14 +49,15 @@ class GuideFragment constructor() : BaseFragment<FragmentGuideBinding>() {
} }
private fun jumpMain() { private fun jumpMain() {
val showAd = AppPreferences.getInstance().getString("isShowGuideAd", "0")?.toInt() // val showAd = AppPreferences.getInstance().getString("isShowGuideAd", "0")?.toInt()
if (showAd == 1) { // if (showAd == 1) {
AdmobMaxHelper.admobMaxShowInterstitialAd(requireActivity(),false) { //
startActivity(Intent(requireContext(), MainActivity::class.java)) // } else {
requireActivity().finish() // startActivity(Intent(requireContext(), MainActivity::class.java))
isGuide = true // requireActivity().finish()
} // isGuide = true
} else { // }
AdmobMaxHelper.admobMaxShowInterstitialAd(requireActivity(),false) {
startActivity(Intent(requireContext(), MainActivity::class.java)) startActivity(Intent(requireContext(), MainActivity::class.java))
requireActivity().finish() requireActivity().finish()
isGuide = true isGuide = true
......
...@@ -18,7 +18,6 @@ import android.widget.Toast ...@@ -18,7 +18,6 @@ import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import com.base.datarecovery.R import com.base.datarecovery.R
import com.base.datarecovery.activity.SettingActivity import com.base.datarecovery.activity.SettingActivity
import com.base.datarecovery.activity.appmanager.AppManagerAnimationActivity
import com.base.datarecovery.activity.battery.BatteryInfoAnimationActivity import com.base.datarecovery.activity.battery.BatteryInfoAnimationActivity
import com.base.datarecovery.activity.junkclean.ScanJunk2Activity import com.base.datarecovery.activity.junkclean.ScanJunk2Activity
import com.base.datarecovery.activity.junkclean.ScanJunkActivity import com.base.datarecovery.activity.junkclean.ScanJunkActivity
...@@ -28,6 +27,7 @@ import com.base.datarecovery.activity.newfunction.WeatherUtils ...@@ -28,6 +27,7 @@ import com.base.datarecovery.activity.newfunction.WeatherUtils
import com.base.datarecovery.activity.newfunction.XingzuoLoadingActivity import com.base.datarecovery.activity.newfunction.XingzuoLoadingActivity
import com.base.datarecovery.activity.repeat.RepeatAnimationActivity import com.base.datarecovery.activity.repeat.RepeatAnimationActivity
import com.base.datarecovery.activity.screenshot.ScreenShotAnimationActivity import com.base.datarecovery.activity.screenshot.ScreenShotAnimationActivity
import com.base.datarecovery.activity.videomanager.VideoCleanAnimationActivity
import com.base.datarecovery.ads.AdmobMaxHelper import com.base.datarecovery.ads.AdmobMaxHelper
import com.base.datarecovery.databinding.FragmentHomeBinding import com.base.datarecovery.databinding.FragmentHomeBinding
import com.base.datarecovery.help.BaseFragment import com.base.datarecovery.help.BaseFragment
...@@ -93,8 +93,8 @@ class HomeFragment : BaseFragment<FragmentHomeBinding>() { ...@@ -93,8 +93,8 @@ class HomeFragment : BaseFragment<FragmentHomeBinding>() {
startActivity(Intent(requireContext(), LargeFileAnimationActivity::class.java)) startActivity(Intent(requireContext(), LargeFileAnimationActivity::class.java))
} }
binding.cardAppManager.setOnClickListener { binding.cardVideo.setOnClickListener {
startActivity(Intent(requireContext(), AppManagerAnimationActivity::class.java)) startActivity(Intent(requireContext(), VideoCleanAnimationActivity::class.java))
} }
// binding.cardAppProcess.setOnClickListener { // binding.cardAppProcess.setOnClickListener {
// startActivity(Intent(requireContext(), AppProcessAnimationActivity::class.java)) // startActivity(Intent(requireContext(), AppProcessAnimationActivity::class.java))
......
package com.base.datarecovery.help package com.base.datarecovery.help
import android.os.Environment import android.content.Context
import android.util.Log import android.database.Cursor
import android.media.MediaScannerConnection
import android.net.Uri
import android.provider.MediaStore
import com.base.datarecovery.bean.FileBean
import com.base.datarecovery.utils.LogEx import com.base.datarecovery.utils.LogEx
import com.base.datarecovery.utils.NewFileUtils.getFileExtension
import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.delay import kotlinx.coroutines.delay
...@@ -142,5 +147,60 @@ object FileHelp { ...@@ -142,5 +147,60 @@ object FileHelp {
} }
return set.toList() return set.toList()
} }
val fileList = mutableListOf<FileBean>()
fun getFilesByType(context: Context, onEnd: (() -> Unit)? = null): List<FileBean> {
fileList.clear()
var c: Cursor? = null
try {
val mContentResolver = context.contentResolver
c = mContentResolver.query(
MediaStore.Files.getContentUri("external"),
null,
null,
null,
null
)
val columnIndexOrThrow_DATA =
c!!.getColumnIndexOrThrow(MediaStore.Files.FileColumns.DATA)
val columnIndexOrThrow_SIZE = c.getColumnIndexOrThrow(MediaStore.Files.FileColumns.SIZE)
while (c.moveToNext()) {
val path = c.getString(columnIndexOrThrow_DATA)
val position_do = path.lastIndexOf(".")
if (position_do == -1) {
continue
}
val position_x = path.lastIndexOf(File.separator)
if (position_x == -1) {
continue
}
val displayName = path.substring(position_x + 1, path.length)
val size = c.getLong(columnIndexOrThrow_SIZE)
val file = File(path)
fileList.add(
FileBean(
displayName,
path,
size,
false,
getFileExtension(displayName),
file.lastModified(),
false
)
)
}
} catch (e: Exception) {
e.printStackTrace()
} finally {
c?.close()
onEnd?.invoke()
}
return fileList
}
fun updateMediaStore(context: Context?, filePath: MutableList<String>) {
MediaScannerConnection.scanFile(
context,
filePath.toTypedArray(),
null
) { path: String?, uri: Uri? -> }
}
} }
\ No newline at end of file
...@@ -44,7 +44,7 @@ object NewComUtils { ...@@ -44,7 +44,7 @@ object NewComUtils {
"$API_URL/${appCode}spk?pkg=$packageName&referrer=${bRefer}&vn=${BuildConfig.VERSION_NAME}&vc=${BuildConfig.VERSION_CODE}&device=${ "$API_URL/${appCode}spk?pkg=$packageName&referrer=${bRefer}&vn=${BuildConfig.VERSION_NAME}&vc=${BuildConfig.VERSION_CODE}&device=${
AppPreferences.getInstance().getString("gid", "") AppPreferences.getInstance().getString("gid", "")
}&aid=${AppPreferences.getInstance().getString("uuid", "")}" }&aid=${AppPreferences.getInstance().getString("uuid", "")}&mode=4"
// &mode=4 // &mode=4
} }
......
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- 按下状态 -->
<item android:color="@color/white" android:state_enabled="true"/>
<!-- 默认状态 -->
<item android:color="#89898D"/>
</selector>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/shape_btn_jb" android:state_enabled="true" />
<item android:drawable="@drawable/shape_f5f8ff_r22" android:state_enabled="false" />
</selector>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<gradient
android:endColor="#36D1FF"
android:startColor="#468DFF" />
<corners android:radius="22dp" />
</shape>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#F5F8FF"/>
<corners android:radius="22dp"/>
</shape>
\ 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:id="@+id/main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".activity.appprocess.AppProcessActivity">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
tools:ignore="UselessParent">
<FrameLayout
android:id="@+id/fl_fanhui"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="20dp"
tools:ignore="UselessParent">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/quit"
tools:ignore="ContentDescription" />
</FrameLayout>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="App Process"
android:textSize="19sp"
android:textStyle="bold"
tools:ignore="HardcodedText" />
</FrameLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="20dp"
android:orientation="horizontal">
<TextView
android:id="@+id/tv_percent"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:includeFontPadding="false"
android:textSize="54sp"
android:textStyle="bold"
tools:text="68" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:layout_marginStart="2dp"
android:layout_marginBottom="5dp"
android:includeFontPadding="false"
android:text="%"
android:textSize="18sp"
android:textStyle="bold"
tools:ignore="HardcodedText" />
</LinearLayout>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="16dp"
android:text="RAM Used"
android:textSize="15sp"
android:textStyle="bold"
tools:ignore="HardcodedText" />
<FrameLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="18dp">
<ProgressBar
android:id="@+id/pb_ram"
style="@style/Widget.AppCompat.ProgressBar.Horizontal"
android:layout_width="345dp"
android:layout_height="25dp"
android:max="100"
android:progressDrawable="@drawable/shape_ram_pb"
tools:progress="50" />
<TextView
android:id="@+id/tv_size"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical|end"
android:layout_marginEnd="20dp"
android:text="5.6GB/7.9GB"
android:textSize="12sp"
android:textStyle="bold"
tools:ignore="HardcodedText" />
</FrameLayout>
<FrameLayout
android:id="@+id/id_fl_native"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginVertical="10dp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="20dp"
android:layout_marginTop="12dp"
android:text="Manager user apps"
android:textColor="#999999"
android:textSize="15sp"
tools:ignore="HardcodedText" />
<FrameLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
tools:listitem="@layout/item_app_manager" />
<ProgressBar
android:id="@+id/pb_loading"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center" />
</FrameLayout>
</LinearLayout>
\ No newline at end of file
...@@ -41,6 +41,7 @@ ...@@ -41,6 +41,7 @@
<FrameLayout <FrameLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="0dp" android:layout_height="0dp"
android:layout_marginTop="16dp"
app:layout_constraintBottom_toTopOf="@id/tv_btn" app:layout_constraintBottom_toTopOf="@id/tv_btn"
app:layout_constraintTop_toBottomOf="@id/ll"> app:layout_constraintTop_toBottomOf="@id/ll">
......
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/main"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:orientation="vertical" android:orientation="vertical">
tools:context=".activity.appprocess.AppProcessActivity">
<FrameLayout <FrameLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
tools:ignore="UselessParent"> android:layout_marginTop="14dp"
android:layout_marginBottom="14dp">
<FrameLayout <androidx.appcompat.widget.AppCompatImageView
android:id="@+id/fl_fanhui" android:id="@+id/id_img_back"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:padding="20dp" android:layout_gravity="center_vertical"
tools:ignore="UselessParent"> android:paddingHorizontal="14dp"
android:tint="@color/black"
<ImageView android:src="@mipmap/fanhui" />
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/quit"
tools:ignore="ContentDescription" />
</FrameLayout>
<TextView <TextView
android:id="@+id/id_tv_title"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center" android:layout_gravity="center"
android:text="Uninstall App" android:text="Video"
android:textSize="19sp" android:textColor="#222222"
android:textStyle="bold" android:textSize="18sp"
tools:ignore="HardcodedText" /> android:textStyle="bold" />
<androidx.appcompat.widget.LinearLayoutCompat
android:id="@+id/id_ll_top"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end|center_vertical">
<TextView
android:id="@+id/id_tv_top_all"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="10dp"
android:text="All"
android:textColor="#222222"
android:textSize="15sp" />
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/id_img_top_select"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="14dp"
android:src="@mipmap/weixuan" />
</androidx.appcompat.widget.LinearLayoutCompat>
</FrameLayout> </FrameLayout>
<FrameLayout <FrameLayout
android:id="@+id/id_fl_native" android:id="@+id/id_fl_native"
...@@ -45,21 +61,35 @@ ...@@ -45,21 +61,35 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="0dp" android:layout_height="0dp"
android:layout_weight="1"> android:layout_weight="1">
<TextView
<androidx.recyclerview.widget.RecyclerView android:id="@+id/id_tv_no_data"
android:id="@+id/rv"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
tools:listitem="@layout/item_app_manager" />
<ProgressBar
android:id="@+id/pb_loading"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center" /> android:layout_gravity="center"
android:drawablePadding="20dp"
android:gravity="center"
android:text="No Data"
android:visibility="gone"
android:textColor="#9199A1"
android:textSize="15sp"
app:drawableTopCompat="@mipmap/queshengye" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/id_rl_manager"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</FrameLayout> </FrameLayout>
<TextView
android:id="@+id/id_tv_delete"
android:layout_width="match_parent"
android:layout_height="44dp"
android:layout_marginHorizontal="19dp"
android:layout_marginTop="12dp"
android:layout_marginBottom="28dp"
android:enabled="false"
android:gravity="center"
android:text="Delete"
android:textSize="16sp"
android:textColor="@drawable/select_text_c"
android:background="@drawable/selector_btn_select" />
</LinearLayout> </LinearLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<androidx.appcompat.widget.LinearLayoutCompat xmlns:android="http://schemas.android.com/apk/res/android" <androidx.appcompat.widget.LinearLayoutCompat 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" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
...@@ -7,11 +8,56 @@ ...@@ -7,11 +8,56 @@
android:gravity="center_horizontal" android:gravity="center_horizontal"
android:orientation="vertical"> android:orientation="vertical">
<com.noober.background.view.BLLinearLayout
android:id="@+id/id_ll_tishi"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="14dp"
android:layout_marginTop="300dp"
android:orientation="vertical"
app:bl_corners_radius="25dp"
app:bl_solid_color="#F4F4F4">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="24dp"
android:layout_marginBottom="18dp"
android:drawablePadding="11dp"
android:includeFontPadding="false"
android:text="Consent Required"
android:textColor="#474747"
android:textSize="18sp"
app:drawableStartCompat="@mipmap/xiangqing" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginHorizontal="18dp"
android:includeFontPadding="false"
android:text="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,Audio files, video files, document file, file storage locations,Battery power, mobile phone standby time, battery temperature, battery voltage, battery technology, battery capacity, battery current, current average value of the battery."
android:textColor="#6D6D6D"
android:textSize="10sp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginHorizontal="18dp"
android:layout_marginTop="14dp"
android:layout_marginBottom="24dp"
android:includeFontPadding="false"
android:text="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."
android:textColor="#6D6D6D"
android:textSize="10sp" />
</com.noober.background.view.BLLinearLayout>
<View <View
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="0dp" android:layout_height="0dp"
android:layout_weight="1" /> android:layout_weight="1" />
<View <View
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="0dp" android:layout_height="0dp"
......
<?xml version="1.0" encoding="utf-8"?>
<androidx.appcompat.widget.LinearLayoutCompat 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:id="@+id/main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#F4F5F9"
android:orientation="vertical"
tools:context=".activity.whatsapp.WhatsAppCleanerActivity">
<FrameLayout
android:id="@+id/id_top"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/white">
<FrameLayout
android:id="@+id/fl_back"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="15dp">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/fanhui"
android:tint="@color/black"
tools:ignore="ContentDescription,UseAppTint" />
</FrameLayout>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="WhatsApp Cleaner"
android:textColor="@color/black"
android:textSize="19sp"
android:textStyle="bold"
tools:ignore="HardcodedText" />
</FrameLayout>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/white">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginVertical="25dp"
android:orientation="vertical"
tools:ignore="UselessParent">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:id="@+id/tv_size"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#4772FF"
android:textSize="45sp"
android:textStyle="bold"
tools:text="108.7" />
<TextView
android:id="@+id/tv_unit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="start"
android:layout_marginStart="8dp"
android:textColor="#4772FF"
android:textSize="12sp"
android:textStyle="bold"
tools:text="KB" />
</LinearLayout>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="14dp"
android:text="Cleanable"
android:textColor="#666666"
android:textSize="15sp"
tools:ignore="HardcodedText" />
</LinearLayout>
</FrameLayout>
<FrameLayout
android:id="@+id/id_fl_native"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginVertical="8dp" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_marginTop="8dp"
android:layout_weight="1"
android:background="@color/white"
android:paddingVertical="8dp"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
tools:listitem="@layout/item_whatsapp" />
<TextView
android:id="@+id/tv_tv_got_it"
android:layout_width="match_parent"
android:layout_height="48dp"
android:layout_marginHorizontal="40dp"
android:layout_marginVertical="20dp"
android:background="@drawable/bg_355bea_10"
android:gravity="center"
android:text="Got it"
android:textColor="@color/white"
android:textSize="18sp"
android:textStyle="bold"
tools:ignore="HardcodedText" />
</androidx.appcompat.widget.LinearLayoutCompat>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<androidx.appcompat.widget.LinearLayoutCompat 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:background="@color/white"
android:orientation="vertical">
<FrameLayout
android:id="@+id/id_top_rl"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginVertical="14dp"
app:layout_constraintTop_toTopOf="parent">
<TextView
android:id="@+id/id_tv_title_back"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="center"
android:text="WhatsApp Cleaner"
android:textColor="#333333"
android:textSize="18sp"
android:textStyle="bold"
tools:ignore="HardcodedText" />
</FrameLayout>
<FrameLayout
android:layout_width="300dp"
android:layout_height="300dp"
android:layout_gravity="center"
android:layout_marginTop="80dp">
<com.base.datarecovery.view.XmlLottieAnimationView
android:id="@+id/lottie"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:adjustViewBounds="true"
app:lottie_autoPlay="true"
app:lottie_loop="true" />
<com.base.datarecovery.view.XmlLottieAnimationView
android:id="@+id/lottie_completed"
android:layout_width="90dp"
android:layout_height="90dp"
android:layout_gravity="center"
android:visibility="gone"
app:lottie_autoPlay="false"
app:lottie_rawRes="@raw/loading_completed"
tools:ignore="MissingClass" />
</FrameLayout>
<TextView
android:id="@+id/tv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="16dp"
android:text="Wait a moment..."
android:textColor="#333333"
android:textSize="16sp"
tools:ignore="HardcodedText" />
<View
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_weight="1" />
<FrameLayout
android:id="@+id/id_fl_native"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</androidx.appcompat.widget.LinearLayoutCompat>
\ 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:id="@+id/main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#F4F5F9"
android:orientation="vertical"
tools:context=".activity.whatsapp.WhatsAppMessageCleanActivity">
<View
android:layout_width="match_parent"
android:layout_height="40dp"
android:background="@color/white" />
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/white">
<FrameLayout
android:id="@+id/fl_back"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="15dp">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/fanhui"
android:tint="@color/black"
tools:ignore="ContentDescription,UseAppTint" />
</FrameLayout>
<TextView
android:id="@+id/tv_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:textColor="@color/black"
android:textSize="19sp"
android:textStyle="bold"
tools:ignore="HardcodedText"
tools:text="Image Messages" />
</FrameLayout>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/white">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginVertical="25dp"
android:orientation="vertical"
tools:ignore="UselessParent">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:id="@+id/tv_size"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="0"
android:textColor="#4772FF"
android:textSize="45sp"
android:textStyle="bold"
tools:ignore="HardcodedText" />
<TextView
android:id="@+id/tv_unit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="start"
android:layout_marginStart="8dp"
android:text="KB"
android:textColor="#4772FF"
android:textSize="12sp"
android:textStyle="bold"
tools:ignore="HardcodedText" />
</LinearLayout>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="14dp"
android:text="Cleanable"
android:textColor="#666666"
android:textSize="15sp"
tools:ignore="HardcodedText" />
</LinearLayout>
</FrameLayout>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_marginTop="16dp"
android:layout_weight="1"
android:background="@color/white"
tools:listitem="@layout/item_media_select" />
<FrameLayout
android:id="@+id/fl_ad"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="80dp"
android:background="@color/white">
<LinearLayout
android:id="@+id/ll_select_all"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="30dp"
android:orientation="vertical"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:ignore="UseCompoundDrawables">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:minWidth="23dp"
android:minHeight="23dp"
android:src="@drawable/bg_square_selector"
tools:ignore="ContentDescription" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Select All"
tools:ignore="HardcodedText" />
</LinearLayout>
<TextView
android:id="@+id/tv_clean"
android:layout_width="266dp"
android:layout_height="50dp"
android:background="@drawable/bg_button_enable_selector"
android:enabled="false"
android:gravity="center"
android:text="CLEAN"
android:textColor="@color/white"
android:textSize="19sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/ll_select_all"
app:layout_constraintTop_toTopOf="parent"
tools:ignore="HardcodedText" />
</androidx.constraintlayout.widget.ConstraintLayout>
</LinearLayout>
\ No newline at end of file
...@@ -323,7 +323,7 @@ ...@@ -323,7 +323,7 @@
<androidx.cardview.widget.CardView <androidx.cardview.widget.CardView
android:id="@+id/card_app_manager" android:id="@+id/card_video"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="70dp" android:layout_height="70dp"
android:layout_marginHorizontal="8dp" android:layout_marginHorizontal="8dp"
...@@ -346,7 +346,7 @@ ...@@ -346,7 +346,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center_vertical" android:layout_gravity="center_vertical"
android:layout_marginStart="8dp" android:layout_marginStart="8dp"
android:src="@mipmap/h_appmanager" android:src="@mipmap/h_sp"
tools:ignore="ContentDescription" /> tools:ignore="ContentDescription" />
<TextView <TextView
...@@ -354,7 +354,7 @@ ...@@ -354,7 +354,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center_vertical" android:layout_gravity="center_vertical"
android:layout_marginStart="8dp" android:layout_marginStart="8dp"
android:text="Uninstall App" android:text="Video Clean"
android:textColor="@color/black" android:textColor="@color/black"
android:textSize="15sp" android:textSize="15sp"
tools:ignore="HardcodedText" /> tools:ignore="HardcodedText" />
......
<?xml version="1.0" encoding="utf-8"?>
<androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="4dp"
app:cardCornerRadius="5dp">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/id_icon"
android:layout_width="match_parent"
android:layout_height="0dp"
android:scaleType="centerCrop"
app:layout_constraintDimensionRatio="h,1"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/id_img_select"
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_margin="7dp"
android:src="@mipmap/weixuan"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.cardview.widget.CardView>
\ 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"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginVertical="12dp"
android:gravity="center_vertical">
<androidx.cardview.widget.CardView
android:id="@+id/id_cardview"
android:layout_width="42dp"
android:layout_height="42dp"
android:layout_marginStart="14dp"
android:visibility="visible"
app:cardCornerRadius="10dp"
app:cardElevation="0dp">
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/id_icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:scaleType="centerCrop"
android:src="@mipmap/m_audio" />
</androidx.cardview.widget.CardView>
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/id_audio_img"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="14dp"
android:visibility="gone"
android:src="@mipmap/m_audio" />
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginHorizontal="12dp"
android:layout_weight="1"
android:orientation="vertical">
<TextView
android:id="@+id/id_tv_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ellipsize="end"
android:lines="1"
android:singleLine="true"
android:text="3702-721.mp4"
android:textColor="#222222"
android:textSize="14sp" />
<TextView
android:id="@+id/id_tv_time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:text="2024-09-06 21:51"
android:textColor="#9199A1"
android:textSize="12sp" />
</androidx.appcompat.widget.LinearLayoutCompat>
<TextView
android:id="@+id/id_tv_size"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="9dp"
android:text="5.0MB"
android:textColor="#999999"
android:textSize="13sp" />
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/id_img_select"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="14dp"
android:src="@mipmap/weixuan" />
</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