Commit f375de24 authored by wanglei's avatar wanglei

...ui

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