Commit f375de24 authored by wanglei's avatar wanglei

...ui

parent 7304dac9
...@@ -34,18 +34,18 @@ ...@@ -34,18 +34,18 @@
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.whatsapp.WhatsAppCleanerActivity" <!-- android:name=".activity.whatsapp.WhatsAppCleanerActivity"-->
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.whatsapp.WhatsAppMessageCleanActivity" <!-- android:name=".activity.whatsapp.WhatsAppMessageCleanActivity"-->
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.MainActivity" android:name=".activity.MainActivity"
android:exported="false" android:exported="false"
......
package com.base.datarecovery.activity.whatsapp //package com.base.datarecovery.activity.whatsapp
//
import android.content.Intent //import android.content.Intent
import android.graphics.Color //import android.graphics.Color
import androidx.activity.addCallback //import androidx.activity.addCallback
import androidx.recyclerview.widget.GridLayoutManager //import androidx.recyclerview.widget.GridLayoutManager
import androidx.recyclerview.widget.LinearLayoutManager //import androidx.recyclerview.widget.LinearLayoutManager
import com.base.datarecovery.adapter.WhatsAppMediaAdapter //import com.base.datarecovery.adapter.WhatsAppMediaAdapter
import com.base.datarecovery.ads.AdmobInterstitialUtils //import com.base.datarecovery.ads.AdmobInterstitialUtils
import com.base.datarecovery.ads.AdmobNativeUtils //import com.base.datarecovery.ads.AdmobNativeUtils
import com.base.datarecovery.bean.MediaBean //import com.base.datarecovery.bean.MediaBean
import com.base.datarecovery.databinding.ActivityWhatsAppMessageCleanBinding //import com.base.datarecovery.databinding.ActivityWhatsAppMessageCleanBinding
import com.base.datarecovery.help.BaseActivity //import com.base.datarecovery.help.BaseActivity
import com.base.datarecovery.help.KotlinExt.toFormatSize //import com.base.datarecovery.help.KotlinExt.toFormatSize
import com.base.datarecovery.utils.BarUtils //import com.base.datarecovery.utils.BarUtils
import com.google.gson.Gson //import com.google.gson.Gson
import java.io.File //import java.io.File
//
class WhatsAppMessageCleanActivity : BaseActivity<ActivityWhatsAppMessageCleanBinding>() { //class WhatsAppMessageCleanActivity : BaseActivity<ActivityWhatsAppMessageCleanBinding>() {
//
private val pathList by lazy { // private val pathList by lazy {
val json = intent.extras?.getString("PathList") // val json = intent.extras?.getString("PathList")
val list = Gson().fromJson(json, Array<String>::class.java) // val list = Gson().fromJson(json, Array<String>::class.java)
list.map { MediaBean(it) } // list.map { MediaBean(it) }
} // }
private lateinit var adapter: WhatsAppMediaAdapter // private lateinit var adapter: WhatsAppMediaAdapter
//
override val binding: ActivityWhatsAppMessageCleanBinding by lazy { // override val binding: ActivityWhatsAppMessageCleanBinding by lazy {
ActivityWhatsAppMessageCleanBinding.inflate(layoutInflater) // ActivityWhatsAppMessageCleanBinding.inflate(layoutInflater)
} // }
//
//
override fun initView() { // override fun initView() {
BarUtils.setStatusBarLightMode(this, true) // BarUtils.setStatusBarLightMode(this, true)
BarUtils.setStatusBarColor(this, Color.TRANSPARENT) // BarUtils.setStatusBarColor(this, Color.TRANSPARENT)
//
val tittle = intent.extras?.getString("Tittle") ?: "" // val tittle = intent.extras?.getString("Tittle") ?: ""
binding.tvTitle.text = tittle // binding.tvTitle.text = tittle
//
var isList = false // var isList = false
when (tittle) { // when (tittle) {
"Audio Messages" -> { // "Audio Messages" -> {
binding.rv.layoutManager = LinearLayoutManager(this) // binding.rv.layoutManager = LinearLayoutManager(this)
isList = true // isList = true
} // }
//
else -> { // else -> {
binding.rv.layoutManager = GridLayoutManager(this, 3) // binding.rv.layoutManager = GridLayoutManager(this, 3)
} // }
} // }
//
adapter = WhatsAppMediaAdapter(isList) { // adapter = WhatsAppMediaAdapter(isList) {
binding.llSelectAll.isSelected = it // binding.llSelectAll.isSelected = it
binding.tvClean.isEnabled = adapter.getSelectData().isNotEmpty() // binding.tvClean.isEnabled = adapter.getSelectData().isNotEmpty()
val split = adapter.getSelectDataSize().toFormatSize().split(" ") // val split = adapter.getSelectDataSize().toFormatSize().split(" ")
binding.tvSize.text = split[0] // binding.tvSize.text = split[0]
binding.tvUnit.text = split[1] // binding.tvUnit.text = split[1]
} // }
binding.rv.adapter = adapter // binding.rv.adapter = adapter
adapter.setData(pathList) // adapter.setData(pathList)
//
AdmobNativeUtils.showNativeAd(this, binding.flAd) // AdmobNativeUtils.showNativeAd(this, binding.flAd)
} // }
//
override fun initListener() { // override fun initListener() {
binding.flBack.setOnClickListener { // binding.flBack.setOnClickListener {
onBackPressedDispatcher.onBackPressed() // onBackPressedDispatcher.onBackPressed()
} // }
onBackPressedDispatcher.addCallback { // onBackPressedDispatcher.addCallback {
AdmobInterstitialUtils.showInterstitialAd(this@WhatsAppMessageCleanActivity, isShowInterVal = false) { // AdmobInterstitialUtils.showInterstitialAd(this@WhatsAppMessageCleanActivity, isShowInterVal = false) {
finishToMain() // finishToMain()
} // }
} // }
binding.llSelectAll.setOnClickListener { // binding.llSelectAll.setOnClickListener {
it.isSelected = !it.isSelected // it.isSelected = !it.isSelected
adapter.toggleSelect(it.isSelected) // adapter.toggleSelect(it.isSelected)
binding.tvClean.isEnabled = it.isSelected // binding.tvClean.isEnabled = it.isSelected
val split = adapter.getSelectDataSize().toFormatSize().split(" ") // val split = adapter.getSelectDataSize().toFormatSize().split(" ")
binding.tvSize.text = split[0] // binding.tvSize.text = split[0]
binding.tvUnit.text = split[1] // binding.tvUnit.text = split[1]
} // }
//
binding.tvClean.setOnClickListener { // binding.tvClean.setOnClickListener {
//
AdmobInterstitialUtils.showInterstitialAd(this) { // AdmobInterstitialUtils.showInterstitialAd(this) {
val list = adapter.getSelectData() // val list = adapter.getSelectData()
runCatching { // runCatching {
list.forEach { File(it).delete() } // list.forEach { File(it).delete() }
} // }
finish() // finish()
} // }
} // }
} // }
//
//
} //}
\ No newline at end of file \ No newline at end of file
package com.base.datarecovery.adapter //package com.base.datarecovery.adapter
//
import android.annotation.SuppressLint //import android.annotation.SuppressLint
import android.graphics.Color //import android.graphics.Color
import android.view.View //import android.view.View
import android.view.ViewGroup //import android.view.ViewGroup
import androidx.core.content.ContextCompat //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.WhatsAppCleanerBean //import com.base.datarecovery.bean.WhatsAppCleanerBean
import com.base.datarecovery.databinding.ItemWhatsappBinding //import com.base.datarecovery.databinding.ItemWhatsappBinding
import com.base.datarecovery.help.KotlinExt.toFormatSize //import com.base.datarecovery.help.KotlinExt.toFormatSize
import com.base.datarecovery.utils.ScreenUtil.dpToPx //import com.base.datarecovery.utils.ScreenUtil.dpToPx
import com.base.datarecovery.view.XmlEx.inflate //import com.base.datarecovery.view.XmlEx.inflate
import com.bumptech.glide.Glide //import com.bumptech.glide.Glide
import com.bumptech.glide.load.resource.bitmap.CenterCrop //import com.bumptech.glide.load.resource.bitmap.CenterCrop
import com.bumptech.glide.load.resource.bitmap.RoundedCorners //import com.bumptech.glide.load.resource.bitmap.RoundedCorners
import com.bumptech.glide.request.RequestOptions //import com.bumptech.glide.request.RequestOptions
//
class WhatsAppCleanerAdapter(val click: (bean: WhatsAppCleanerBean) -> Unit) : RecyclerView.Adapter<WhatsAppCleanerAdapter.Whats>() { //class WhatsAppCleanerAdapter(val click: (bean: WhatsAppCleanerBean) -> Unit) : RecyclerView.Adapter<WhatsAppCleanerAdapter.Whats>() {
//
private val beanList = arrayListOf<WhatsAppCleanerBean>() // private val beanList = arrayListOf<WhatsAppCleanerBean>()
//
class Whats(view: View) : ViewHolder(view) { // class Whats(view: View) : ViewHolder(view) {
//
} // }
//
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): Whats { // override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): Whats {
return Whats(R.layout.item_whatsapp.inflate(parent)) // return Whats(R.layout.item_whatsapp.inflate(parent))
} // }
//
override fun getItemCount(): Int { // override fun getItemCount(): Int {
return beanList.size // return beanList.size
} // }
//
override fun onBindViewHolder(holder: Whats, position: Int) { // override fun onBindViewHolder(holder: Whats, position: Int) {
val binding = ItemWhatsappBinding.bind(holder.itemView) // val binding = ItemWhatsappBinding.bind(holder.itemView)
val context = holder.itemView.context // val context = holder.itemView.context
val bean = beanList[position] // val bean = beanList[position]
binding.iv.setImageDrawable(ContextCompat.getDrawable(context, bean.icon)) // binding.iv.setImageDrawable(ContextCompat.getDrawable(context, bean.icon))
binding.tvTitle.text = bean.tittle // binding.tvTitle.text = bean.tittle
if (bean.subFile.isEmpty()) { // if (bean.subFile.isEmpty()) {
binding.llIv.visibility = View.GONE // binding.llIv.visibility = View.GONE
binding.tvSize.setTextColor(Color.parseColor("#999999")) // binding.tvSize.setTextColor(Color.parseColor("#999999"))
binding.ivArrow.setImageDrawable(ContextCompat.getDrawable(context, R.mipmap.jianotu_whatsapp)) // binding.ivArrow.setImageDrawable(ContextCompat.getDrawable(context, R.mipmap.jianotu_whatsapp))
binding.tvNoMessage.visibility = View.VISIBLE // binding.tvNoMessage.visibility = View.VISIBLE
} else { // } else {
binding.llIv.visibility = View.VISIBLE // binding.llIv.visibility = View.VISIBLE
runCatching { // runCatching {
val options = RequestOptions().transform(CenterCrop(), RoundedCorners(context.dpToPx(10))) // val options = RequestOptions().transform(CenterCrop(), RoundedCorners(context.dpToPx(10)))
val image1 = bean.subFile[0] // val image1 = bean.subFile[0]
Glide.with(context).load(image1).apply(options).into(binding.iv1) // Glide.with(context).load(image1).apply(options).into(binding.iv1)
//
val image2 = bean.subFile[1] // val image2 = bean.subFile[1]
Glide.with(context).load(image2).apply(options).into(binding.iv2) // Glide.with(context).load(image2).apply(options).into(binding.iv2)
//
val image3 = bean.subFile[2] // val image3 = bean.subFile[2]
Glide.with(context).load(image3).apply(options).into(binding.iv3) // Glide.with(context).load(image3).apply(options).into(binding.iv3)
} // }
binding.tvSize.setTextColor(Color.parseColor("#355BEA")) // binding.tvSize.setTextColor(Color.parseColor("#355BEA"))
binding.tvSize.text = bean.size.toFormatSize() // binding.tvSize.text = bean.size.toFormatSize()
binding.ivArrow.setImageDrawable(ContextCompat.getDrawable(context, R.mipmap.jianotul_whatsapp)) // binding.ivArrow.setImageDrawable(ContextCompat.getDrawable(context, R.mipmap.jianotul_whatsapp))
binding.tvNoMessage.visibility = View.GONE // binding.tvNoMessage.visibility = View.GONE
} // }
binding.root.setOnClickListener { // binding.root.setOnClickListener {
if (bean.subFile.isEmpty()) { // if (bean.subFile.isEmpty()) {
return@setOnClickListener // return@setOnClickListener
} // }
click.invoke(bean) // click.invoke(bean)
} // }
} // }
//
@SuppressLint("NotifyDataSetChanged") // @SuppressLint("NotifyDataSetChanged")
fun setData(list: List<WhatsAppCleanerBean>) { // fun setData(list: List<WhatsAppCleanerBean>) {
beanList.clear() // beanList.clear()
beanList.addAll(list) // beanList.addAll(list)
notifyDataSetChanged() // notifyDataSetChanged()
} // }
//
//
} //}
\ No newline at end of file \ No newline at end of file
package com.base.datarecovery.adapter //package com.base.datarecovery.adapter
//
import android.annotation.SuppressLint //import android.annotation.SuppressLint
import android.view.View //import android.view.View
import android.view.ViewGroup //import android.view.ViewGroup
import androidx.core.content.ContextCompat //import androidx.core.content.ContextCompat
import androidx.recyclerview.widget.RecyclerView //import androidx.recyclerview.widget.RecyclerView
import com.base.datarecovery.R //import com.base.datarecovery.R
import com.base.datarecovery.bean.MediaBean //import com.base.datarecovery.bean.MediaBean
import com.base.datarecovery.databinding.ItemMediaFileBinding //import com.base.datarecovery.databinding.ItemMediaFileBinding
import com.base.datarecovery.databinding.ItemMediaSelectBinding //import com.base.datarecovery.databinding.ItemMediaSelectBinding
import com.base.datarecovery.help.KotlinExt.toFormatSize //import com.base.datarecovery.help.KotlinExt.toFormatSize
import com.base.datarecovery.view.XmlEx.inflate //import com.base.datarecovery.view.XmlEx.inflate
import com.bumptech.glide.Glide //import com.bumptech.glide.Glide
import java.io.File //import java.io.File
//
class WhatsAppMediaAdapter( //class WhatsAppMediaAdapter(
private val isList: Boolean = false, // private val isList: Boolean = false,
private val click: (allSelect: Boolean) -> Unit // private val click: (allSelect: Boolean) -> Unit
) : RecyclerView.Adapter<WhatsAppMediaAdapter.WhatMedia>() { //) : RecyclerView.Adapter<WhatsAppMediaAdapter.WhatMedia>() {
//
private val beanList = arrayListOf<MediaBean>() // private val beanList = arrayListOf<MediaBean>()
//
class WhatMedia(view: View) : RecyclerView.ViewHolder(view) // class WhatMedia(view: View) : RecyclerView.ViewHolder(view)
//
//
override fun getItemViewType(position: Int): Int { // override fun getItemViewType(position: Int): Int {
return if (isList) 0 else 1 // return if (isList) 0 else 1
} // }
//
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): WhatMedia { // override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): WhatMedia {
val layout = if (viewType == 0) R.layout.item_media_file else R.layout.item_media_select // val layout = if (viewType == 0) R.layout.item_media_file else R.layout.item_media_select
return WhatMedia(layout.inflate(parent)) // return WhatMedia(layout.inflate(parent))
} // }
//
override fun getItemCount(): Int { // override fun getItemCount(): Int {
return beanList.size // return beanList.size
} // }
//
override fun onBindViewHolder(holder: WhatMedia, position: Int) { // override fun onBindViewHolder(holder: WhatMedia, position: Int) {
//
} // }
//
override fun onBindViewHolder(holder: WhatMedia, position: Int, payloads: MutableList<Any>) { // override fun onBindViewHolder(holder: WhatMedia, position: Int, payloads: MutableList<Any>) {
//
//
val context = holder.itemView.context // val context = holder.itemView.context
val bean = beanList[position] // val bean = beanList[position]
//
if (isList) { // if (isList) {
val binding = ItemMediaFileBinding.bind(holder.itemView) // val binding = ItemMediaFileBinding.bind(holder.itemView)
//
if (payloads.isEmpty()) { // if (payloads.isEmpty()) {
binding.iv.setImageDrawable(ContextCompat.getDrawable(context, R.mipmap.audiomessages)) // binding.iv.setImageDrawable(ContextCompat.getDrawable(context, R.mipmap.audiomessages))
val file = File(bean.path) // val file = File(bean.path)
binding.tvName.text = file.name // binding.tvName.text = file.name
binding.tvSize.text = file.length().toFormatSize() // binding.tvSize.text = file.length().toFormatSize()
binding.ivSelector.isSelected = bean.isSelect // binding.ivSelector.isSelected = bean.isSelect
binding.root.setOnClickListener { // binding.root.setOnClickListener {
binding.ivSelector.isSelected = !binding.ivSelector.isSelected // binding.ivSelector.isSelected = !binding.ivSelector.isSelected
bean.isSelect = binding.ivSelector.isSelected // bean.isSelect = binding.ivSelector.isSelected
notifyItemChanged(position, "sdd") // notifyItemChanged(position, "sdd")
click.invoke(beanList.all { it.isSelect }) // click.invoke(beanList.all { it.isSelect })
} // }
} else { // } else {
binding.ivSelector.isSelected = bean.isSelect // binding.ivSelector.isSelected = bean.isSelect
super.onBindViewHolder(holder, position, payloads) // super.onBindViewHolder(holder, position, payloads)
} // }
} else { // } else {
val binding = ItemMediaSelectBinding.bind(holder.itemView) // val binding = ItemMediaSelectBinding.bind(holder.itemView)
if (payloads.isEmpty()) { // if (payloads.isEmpty()) {
Glide.with(context).load(bean.path).centerCrop().into(binding.iv) // Glide.with(context).load(bean.path).centerCrop().into(binding.iv)
binding.ivSelector.isSelected = bean.isSelect // binding.ivSelector.isSelected = bean.isSelect
binding.root.setOnClickListener { // binding.root.setOnClickListener {
binding.ivSelector.isSelected = !binding.ivSelector.isSelected // binding.ivSelector.isSelected = !binding.ivSelector.isSelected
bean.isSelect = binding.ivSelector.isSelected // bean.isSelect = binding.ivSelector.isSelected
notifyItemChanged(position, "sdd") // notifyItemChanged(position, "sdd")
click.invoke(beanList.all { it.isSelect }) // click.invoke(beanList.all { it.isSelect })
} // }
} else { // } else {
binding.ivSelector.isSelected = bean.isSelect // binding.ivSelector.isSelected = bean.isSelect
super.onBindViewHolder(holder, position, payloads) // super.onBindViewHolder(holder, position, payloads)
} // }
//
} // }
} // }
//
@SuppressLint("NotifyDataSetChanged") // @SuppressLint("NotifyDataSetChanged")
fun setData(pathList: List<MediaBean>) { // fun setData(pathList: List<MediaBean>) {
beanList.clear() // beanList.clear()
beanList.addAll(pathList) // beanList.addAll(pathList)
notifyDataSetChanged() // notifyDataSetChanged()
} // }
//
@SuppressLint("NotifyDataSetChanged") // @SuppressLint("NotifyDataSetChanged")
fun toggleSelect(select: Boolean) { // fun toggleSelect(select: Boolean) {
beanList.forEach { it.isSelect = select } // beanList.forEach { it.isSelect = select }
notifyDataSetChanged() // notifyDataSetChanged()
} // }
//
fun getSelectData(): List<String> { // fun getSelectData(): List<String> {
return beanList.filter { it.isSelect }.map { it.path } // return beanList.filter { it.isSelect }.map { it.path }
} // }
//
fun getSelectDataSize(): Long { // fun getSelectDataSize(): Long {
return getSelectData().map { File(it) }.sumOf { it.length() } // return getSelectData().map { File(it) }.sumOf { it.length() }
} // }
} //}
\ No newline at end of file \ 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