Commit aedfbc72 authored by yanglin's avatar yanglin

完善清理功能

parent a0fee49f
...@@ -32,11 +32,14 @@ import com.xm.test.myfilemaster.model.FileBean ...@@ -32,11 +32,14 @@ import com.xm.test.myfilemaster.model.FileBean
import com.xm.test.myfilemaster.util.FileUtil import com.xm.test.myfilemaster.util.FileUtil
import java.io.File import java.io.File
class CleanActivity : AppCompatActivity() { class CleanActivity : AppCompatActivity(), CleanAdapter2.IClean {
private var mQuitBtn: ImageView? = null private var mQuitBtn: ImageView? = null
private var mHintTv: TextView? = null private var mHintTv: TextView? = null
private var mProgress: ProgressBar? = null private var mProgress: ProgressBar? = null
private lateinit var mListView: RecyclerView private lateinit var mListView: RecyclerView
private lateinit var mCleanSuccessView: View
private lateinit var mScaningView: View
private lateinit var mCleanSizeSuccessTv: TextView
// private var mCleanAdapter: CleanAdapter? = null // private var mCleanAdapter: CleanAdapter? = null
private var mCleanAdapter2: CleanAdapter2? = null private var mCleanAdapter2: CleanAdapter2? = null
...@@ -72,7 +75,13 @@ class CleanActivity : AppCompatActivity() { ...@@ -72,7 +75,13 @@ class CleanActivity : AppCompatActivity() {
mAdView = findViewById(R.id.ad_layout) mAdView = findViewById(R.id.ad_layout)
mAnimation = findViewById(R.id.clean_animation) mAnimation = findViewById(R.id.clean_animation)
mCleanBtn = findViewById(R.id.clean_click_text) mCleanBtn = findViewById(R.id.clean_click_text)
mCleanSuccessView = findViewById(R.id.clean_success_layout)
mScaningView = findViewById(R.id.battery_animation_btn)
mCleanSizeSuccessTv = findViewById(R.id.clean_success_size_text)
CleanAdapter.isCleanOver = false CleanAdapter.isCleanOver = false
mCleanBtn.text = "One-click cleanup of 0 B"
mCleanSizeSuccessTv.text = "Successfully cleaned up 1KB of junk!"
setViewOnclickListener() setViewOnclickListener()
var cleanBean = CleanBean() var cleanBean = CleanBean()
...@@ -95,11 +104,13 @@ class CleanActivity : AppCompatActivity() { ...@@ -95,11 +104,13 @@ class CleanActivity : AppCompatActivity() {
cleanBean.typeName = "Other trash" cleanBean.typeName = "Other trash"
mCleanBeans.add(cleanBean) mCleanBeans.add(cleanBean)
// mCleanAdapter = CleanAdapter(mCleanBeans, this) // mCleanAdapter = CleanAdapter(mCleanBeans, this)
mCleanAdapter2 = CleanAdapter2() mCleanAdapter2 = CleanAdapter2(this)
mListView.adapter = mCleanAdapter2 mListView.adapter = mCleanAdapter2
MyApplication.mCleanSdk?.startScan(junkScanCallback, false) mCleanAdapter2?.setData(mCleanBeans)
MyApplication.mCleanSdk?.timeout(60000)
MyApplication.mCleanSdk?.startScan(junkScanCallback, true)
MyApplication.mCleanSdk?.timeout(30000)
val handler = Handler(Looper.getMainLooper()) val handler = Handler(Looper.getMainLooper())
...@@ -134,25 +145,20 @@ class CleanActivity : AppCompatActivity() { ...@@ -134,25 +145,20 @@ class CleanActivity : AppCompatActivity() {
startActivity(Intent(this, SimilarImagesActivity::class.java)) startActivity(Intent(this, SimilarImagesActivity::class.java))
} }
findViewById<View>(R.id.clean_click_text).setOnClickListener { findViewById<View>(R.id.clean_click_text).setOnClickListener {
// mAnimation.visibility = View.VISIBLE mAnimation.visibility = View.VISIBLE
// Thread(Runnable { Thread(Runnable {
// Thread.sleep(1000) Thread.sleep(1000)
// for (fileBeans in mCleanAdapter?.mFileCheckedItemList!!) { mCleanAdapter2?.mFileCheckedItemList?.forEach {
// for (fileBean in fileBeans) { MyApplication.mCleanSdk?.delete(File(it.filePath))
// try { }
// MyApplication.mCleanSdk?.delete(File(fileBean.filePath)) runOnUiThread {
// } catch (e: Exception) { mListView.visibility = View.GONE
// e.printStackTrace() mAnimation.visibility = View.GONE
// } findViewById<View>(R.id.ad_layout).visibility = View.GONE
// } findViewById<View>(R.id.over_layout).visibility = View.VISIBLE
// } mCleanSuccessView.visibility = View.VISIBLE
// runOnUiThread { }
// mListView.visibility = View.GONE }).start()
// mAnimation.visibility = View.GONE
// findViewById<View>(R.id.clean_over_layout).visibility = View.VISIBLE
// }
// }).start()
// }
} }
} }
fun initJunkScanCallBack() { fun initJunkScanCallBack() {
...@@ -198,7 +204,7 @@ class CleanActivity : AppCompatActivity() { ...@@ -198,7 +204,7 @@ class CleanActivity : AppCompatActivity() {
// mProgress?.setProgress(mCount) // mProgress?.setProgress(mCount)
mIsApkScanSuccess = true mIsApkScanSuccess = true
setAdapter() // setAdapter()
} }
...@@ -218,7 +224,7 @@ class CleanActivity : AppCompatActivity() { ...@@ -218,7 +224,7 @@ class CleanActivity : AppCompatActivity() {
// mCount +=10 // mCount +=10
// mProgress?.setProgress(mCount) // mProgress?.setProgress(mCount)
mIsTmpScanSuccess = true mIsTmpScanSuccess = true
setAdapter() // setAdapter()
} }
...@@ -239,7 +245,7 @@ class CleanActivity : AppCompatActivity() { ...@@ -239,7 +245,7 @@ class CleanActivity : AppCompatActivity() {
// Log.e(TAG, "onLogJunkScanSucceed: ", ) // Log.e(TAG, "onLogJunkScanSucceed: ", )
// mCount += 10 // mCount += 10
// mProgress?.setProgress(mCount) // mProgress?.setProgress(mCount)
setAdapter() // setAdapter()
} }
override fun onCacheJunkEmitOne(p0: CacheBean?) { override fun onCacheJunkEmitOne(p0: CacheBean?) {
...@@ -260,7 +266,7 @@ class CleanActivity : AppCompatActivity() { ...@@ -260,7 +266,7 @@ class CleanActivity : AppCompatActivity() {
// mCount +=10 // mCount +=10
// mProgress?.setProgress(mCount) // mProgress?.setProgress(mCount)
mIsCacheScanSuccess = true mIsCacheScanSuccess = true
setAdapter() // setAdapter()
} }
@SuppressLint("SetTextI18n") @SuppressLint("SetTextI18n")
...@@ -276,7 +282,7 @@ class CleanActivity : AppCompatActivity() { ...@@ -276,7 +282,7 @@ class CleanActivity : AppCompatActivity() {
// mCount +=10 // mCount +=10
// mProgress?.setProgress(mCount) // mProgress?.setProgress(mCount)
setAdapter() // setAdapter()
} }
override fun onThumbnailJunkEmitOne(p0: SDcardRubbishResult?) { override fun onThumbnailJunkEmitOne(p0: SDcardRubbishResult?) {
...@@ -290,7 +296,7 @@ class CleanActivity : AppCompatActivity() { ...@@ -290,7 +296,7 @@ class CleanActivity : AppCompatActivity() {
override fun onThumbnailJunkScanSucceed() { override fun onThumbnailJunkScanSucceed() {
// Log.e(TAG, "onThumbnailJunkScanSucceed: ", ) // Log.e(TAG, "onThumbnailJunkScanSucceed: ", )
setAdapter() // setAdapter()
} }
...@@ -307,38 +313,44 @@ class CleanActivity : AppCompatActivity() { ...@@ -307,38 +313,44 @@ class CleanActivity : AppCompatActivity() {
override fun onTimeOut() { override fun onTimeOut() {
// Log.e(TAG, "onTimeOut: ", ) // Log.e(TAG, "onTimeOut: ", )
setAdapter()
} }
} }
} }
private fun setAdapter() { private fun setAdapter() {
if (mIsApkScanSuccess && mIsCacheScanSuccess && mIsTmpScanSuccess) { // if (mIsApkScanSuccess && mIsCacheScanSuccess && mIsTmpScanSuccess) {
// MyApplication.mCleanSdk?. // MyApplication.mCleanSdk?.
findViewById<View>(R.id.battery_animation_btn).visibility = View.GONE // findViewById<View>(R.id.battery_animation_btn).visibility = View.GONE
mCleanAdapter2?.setData(mCleanBeans) mCleanAdapter2?.setData(mCleanBeans)
CleanAdapter.isCleanOver = true CleanAdapter.isCleanOver = true
var allSize: Long = 0
// for (size in mCleanAdapter2?.mAllSizes!!) {
// allSize += size
// }
mCount = 0 mCount = 0
mProgress?.setProgress(100) mProgress?.setProgress(100)
mProgress?.visibility = View.GONE mProgress?.visibility = View.GONE
mHintTv?.visibility = View.GONE mHintTv?.visibility = View.GONE
mScaningView.visibility = View.GONE
mCleanBtn.visibility = View.VISIBLE mCleanBtn.visibility = View.VISIBLE
mCleanBtn.text = if (allSize > 1024 * 1024 * 1024) {
"One-click cleanup of ${allSize / 1024 / 1024 / 1024} GB"
} else if (allSize > 1024 * 1024) {
"One-click cleanup of ${allSize / 1024 / 1024} MB"
} else if (allSize > 1024) {
"One-click cleanup of ${allSize / 1024} KB"
} else {
"One-click cleanup of ${allSize} B"
}
}
// }
} }
override fun OnChekedItemListener(size: Long) {
val sizeStr = if (size > 1024 * 1024 * 1024) {
"${size / 1024 / 1024 / 1024}GB"
} else if (size > 1024 * 1024) {
"${size / 1024 / 1024}MB"
} else if (size > 1024) {
"${size / 1024}KB"
} else {
"${size}B"
}
mCleanBtn.text = "One-click cleanup of $sizeStr"
mCleanSizeSuccessTv.text = "Successfully cleaned up $sizeStr of junk!"
}
} }
\ No newline at end of file
...@@ -6,11 +6,9 @@ import android.os.Bundle ...@@ -6,11 +6,9 @@ import android.os.Bundle
import android.view.View import android.view.View
import android.widget.ImageView import android.widget.ImageView
import android.widget.VideoView import android.widget.VideoView
import androidx.activity.enableEdgeToEdge
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.ViewCompat import com.bumptech.glide.Glide
import androidx.core.view.WindowInsetsCompat import com.xm.test.myfilemaster.R
import com.test.mydemo3.R
import com.xm.test.myfilemaster.model.FileBean import com.xm.test.myfilemaster.model.FileBean
class ImageShowActivity : AppCompatActivity() { class ImageShowActivity : AppCompatActivity() {
...@@ -21,11 +19,26 @@ class ImageShowActivity : AppCompatActivity() { ...@@ -21,11 +19,26 @@ class ImageShowActivity : AppCompatActivity() {
private lateinit var mDeleteBtn: View private lateinit var mDeleteBtn: View
private var mFileBean: FileBean? = null private var mFileBean: FileBean? = null
private var mFileType: String = ""
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
setContentView(R.layout.activity_image_show) setContentView(R.layout.activity_image_show)
mFileBean = intent.getSerializableExtra("fileBean") as FileBean ?: null mFileBean = intent.getSerializableExtra("fileBean") as FileBean ?: null
mFileType = intent.getStringExtra("fileType").toString() ?: ""
if (!mFileType.isEmpty()){
when(mFileType){
"image"->{
Glide.with(this).load(mFileBean?.filePath).centerCrop().into(mImageShowView)
}
"video"->{
// mVideoShowView.
// TODO
}
else ->{}
}
}
initView() initView()
setOnClickListener() setOnClickListener()
...@@ -34,6 +47,7 @@ class ImageShowActivity : AppCompatActivity() { ...@@ -34,6 +47,7 @@ class ImageShowActivity : AppCompatActivity() {
private fun setOnClickListener() { private fun setOnClickListener() {
mShareBtn.setOnClickListener { mShareBtn.setOnClickListener {
val uri = Uri.parse(mFileBean?.filePath) val uri = Uri.parse(mFileBean?.filePath)
shareFile(uri)
} }
mDeleteBtn.setOnClickListener { mDeleteBtn.setOnClickListener {
......
package com.xm.test.myfilemaster.activity package com.xm.test.myfilemaster.activity
import android.annotation.SuppressLint import android.annotation.SuppressLint
import android.content.Intent
import android.os.Bundle import android.os.Bundle
import android.util.SparseBooleanArray import android.util.SparseBooleanArray
import android.view.View import android.view.View
...@@ -11,6 +12,7 @@ import android.widget.TextView ...@@ -11,6 +12,7 @@ import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.ViewModelProvider
import com.kongzue.dialogx.dialogs.WaitDialog import com.kongzue.dialogx.dialogs.WaitDialog
import com.test.mydemo3.activity.ImageShowActivity
import com.xm.test.myfilemaster.R import com.xm.test.myfilemaster.R
import com.xm.test.myfilemaster.adapter.MediaAdapter import com.xm.test.myfilemaster.adapter.MediaAdapter
import com.xm.test.myfilemaster.adapter.MediaAdapter2 import com.xm.test.myfilemaster.adapter.MediaAdapter2
...@@ -34,14 +36,15 @@ class MediaActivity : AppCompatActivity() { ...@@ -34,14 +36,15 @@ class MediaActivity : AppCompatActivity() {
lateinit var mItemCheckedArray: SparseBooleanArray lateinit var mItemCheckedArray: SparseBooleanArray
private var mItemDataList = ArrayList<FileBean>() private var mItemDataList = ArrayList<FileBean>()
private lateinit var binding: ActivityMediaBinding // private lateinit var binding: ActivityMediaBinding
// private var mItemAdapter: MediaAdapter? = null private var mItemAdapter: MediaAdapter? = null
private var mItemAdapter: MediaAdapter2? = null // private var mItemAdapter: MediaAdapter2? = null
private var mDataList: ArrayList<String> = ArrayList<String>() private var mDataList: ArrayList<String> = ArrayList<String>()
private var mCheckedDataList: ArrayList<String> = ArrayList<String>() private var mCheckedDataList: ArrayList<String> = ArrayList<String>()
private var mCheckedNumber = 0 private var mCheckedNumber = 0
private var mFileType: String? = null
private lateinit var mModel: BaseActivityViewModel private lateinit var mModel: BaseActivityViewModel
...@@ -58,15 +61,16 @@ class MediaActivity : AppCompatActivity() { ...@@ -58,15 +61,16 @@ class MediaActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
binding = ActivityMediaBinding.inflate(layoutInflater) // binding = ActivityMediaBinding.inflate(layoutInflater)
setContentView(binding.root) // setContentView(binding.root)
setContentView(R.layout.activity_media)
initView() initView()
} }
@SuppressLint("ClickableViewAccessibility") @SuppressLint("ClickableViewAccessibility")
private fun initView() { private fun initView() {
// mGridView = findViewById(R.id.image_item_grid) mGridView = findViewById(R.id.image_item_grid)
mTitleBar = findViewById(R.id.title_bar) mTitleBar = findViewById(R.id.title_bar)
mSelectBar = findViewById(R.id.switch_and_select_layout) mSelectBar = findViewById(R.id.switch_and_select_layout)
// mScrollView = findViewById(R.id.grid_view_scroll) // mScrollView = findViewById(R.id.grid_view_scroll)
...@@ -86,14 +90,14 @@ class MediaActivity : AppCompatActivity() { ...@@ -86,14 +90,14 @@ class MediaActivity : AppCompatActivity() {
findViewById<TextView>(R.id.current_file_path).visibility = View.GONE findViewById<TextView>(R.id.current_file_path).visibility = View.GONE
mItemCheckedArray = SparseBooleanArray() mItemCheckedArray = SparseBooleanArray()
val fileType = intent.getStringExtra("fileType").toString() mFileType = intent.getStringExtra("fileType").toString() ?: ""
// mItemAdapter = MediaAdapter(mItemDataList, this, mItemCheckedArray, fileType, 118) mItemAdapter = MediaAdapter(mItemDataList, this, mItemCheckedArray, mFileType!!, 115)
mItemAdapter = MediaAdapter2() // mItemAdapter = MediaAdapter2()
// mGridView.adapter = mItemAdapter mGridView.adapter = mItemAdapter
binding.imageItemGrid.adapter = mItemAdapter // binding.imageItemGrid.adapter = mItemAdapter
Thread(Runnable { Thread(Runnable {
WaitDialog.show("please wait..") WaitDialog.show("please wait..")
mItemDataList = FileUtil.getMediaFiles(this, fileType, 20) mItemDataList = FileUtil.getMediaFiles(this, mFileType!!, 50)
runOnUiThread { runOnUiThread {
WaitDialog.dismiss() WaitDialog.dismiss()
for (fileBean in mItemDataList) { for (fileBean in mItemDataList) {
...@@ -104,14 +108,13 @@ class MediaActivity : AppCompatActivity() { ...@@ -104,14 +108,13 @@ class MediaActivity : AppCompatActivity() {
}).start() }).start()
mTitleTv.text = fileType mTitleTv.text = mFileType!!
mModel = ViewModelProvider(this)[BaseActivityViewModel::class.java] mModel = ViewModelProvider(this)[BaseActivityViewModel::class.java]
mModel.setNumber(0) mModel.setNumber(0)
mModel.myInt.observe(this) { mModel.myInt.observe(this) {
mSelectTv.text = String.format(getString(R.string.select_0, mCheckedNumber.toString())) mSelectTv.text = String.format(getString(R.string.select_0, mCheckedNumber.toString()))
} }
setOnGridViewItemClickListener()
setOnclickListener() setOnclickListener()
} }
...@@ -137,15 +140,24 @@ class MediaActivity : AppCompatActivity() { ...@@ -137,15 +140,24 @@ class MediaActivity : AppCompatActivity() {
mIsCheckClick = !mIsCheckClick mIsCheckClick = !mIsCheckClick
selectAll() selectAll()
} }
mGridView.setOnItemClickListener { parent, view, position, id ->
if (isClickEditBtn) {
updateCheckBoxStatus(view, position)
} else {
//TODO 点击进入图片或视频播放
Intent(this, ImageShowActivity::class.java)
val bundle = Bundle()
bundle.putSerializable("fileBean", mItemDataList[position])
intent.putExtras(bundle)
intent.putExtra("fileType", mFileType)
startActivity(intent)
}
}
} }
private fun setOnGridViewItemClickListener() { private fun setOnGridViewItemClickListener() {
// mGridView.setOnItemClickListener { parent, view, position, id -> // mGridView.setOnItemClickListener { parent, view, position, id ->
// if (isClickEditBtn) {
// updateCheckBoxStatus(view, position)
// } else {
// //TODO 点击进入图片或视频播放
// }
// } // }
} }
......
...@@ -24,13 +24,13 @@ class CleanAdapter( ...@@ -24,13 +24,13 @@ class CleanAdapter(
private var dataBeanList: ArrayList<CleanBean> private var dataBeanList: ArrayList<CleanBean>
private var context: Context private var context: Context
private var inflater: LayoutInflater private var inflater: LayoutInflater
var mFileCheckedItemList = ArrayList<ArrayList<FileBean>>()
private var sparseBooleanArray = ArrayList<SparseBooleanArray>() private var sparseBooleanArray = ArrayList<SparseBooleanArray>()
private var itemAdapters = ArrayList<ItemAdapter>() private var itemAdapters = ArrayList<ItemAdapter>()
private lateinit var viewHolder: ViewHolder private lateinit var viewHolder: ViewHolder
var mFileCheckedItemList = ArrayList<ArrayList<FileBean>>()
var mAllSizes = ArrayList<Long>() var mAllSizes = ArrayList<Long>()
companion object{ companion object{
...@@ -80,9 +80,7 @@ class CleanAdapter( ...@@ -80,9 +80,7 @@ class CleanAdapter(
view.tag = viewHolder view.tag = viewHolder
} }
viewHolder.itemNameTv?.text = dataBeanList[position].typeName viewHolder.itemNameTv?.text = dataBeanList[position].typeName
setOnclickListener(viewHolder)
sparseBooleanArray.add(SparseBooleanArray()) sparseBooleanArray.add(SparseBooleanArray())
isClickAlls.add(false)
mFileCheckedItemList.add(ArrayList()) mFileCheckedItemList.add(ArrayList())
...@@ -90,7 +88,6 @@ class CleanAdapter( ...@@ -90,7 +88,6 @@ class CleanAdapter(
itemAdapters.add(ItemAdapter(context, dataBeanList[position].fileBeans, sparseBooleanArray[position], position)) itemAdapters.add(ItemAdapter(context, dataBeanList[position].fileBeans, sparseBooleanArray[position], position))
viewHolder.listView?.visibility = if (!isCleanOver) View.GONE else View.VISIBLE viewHolder.listView?.visibility = if (!isCleanOver) View.GONE else View.VISIBLE
viewHolder.unfoldImg?.visibility = if (!isCleanOver) View.GONE else View.VISIBLE viewHolder.unfoldImg?.visibility = if (!isCleanOver) View.GONE else View.VISIBLE
viewHolder.sizeTv?.visibility = if (!isCleanOver) View.GONE else View.VISIBLE viewHolder.sizeTv?.visibility = if (!isCleanOver) View.GONE else View.VISIBLE
...@@ -121,7 +118,6 @@ class CleanAdapter( ...@@ -121,7 +118,6 @@ class CleanAdapter(
} }
// viewHolder.listView?.visibility = if (!dataBeanList[position].isListViewShow) View.GONE else View.VISIBLE // viewHolder.listView?.visibility = if (!dataBeanList[position].isListViewShow) View.GONE else View.VISIBLE
viewHolder.listView?.setOnItemClickListener { parent, view, itemPosition, id -> viewHolder.listView?.setOnItemClickListener { parent, view, itemPosition, id ->
if (isCleanOver) if (isCleanOver)
updateCheckBoxStatus(position, view, itemPosition, viewHolder.listView!!, dataBeanList[position].fileBeans) updateCheckBoxStatus(position, view, itemPosition, viewHolder.listView!!, dataBeanList[position].fileBeans)
...@@ -164,15 +160,6 @@ class CleanAdapter( ...@@ -164,15 +160,6 @@ class CleanAdapter(
} }
private fun setOnclickListener(viewHolder: ViewHolder) {
viewHolder.moreImg?.setOnClickListener {
}
viewHolder.itemBar?.setOnClickListener {
}
}
class ViewHolder{ class ViewHolder{
var itemNameTv: TextView? = null var itemNameTv: TextView? = null
var unfoldImg: ImageView? = null var unfoldImg: ImageView? = null
...@@ -257,7 +244,6 @@ class CleanAdapter( ...@@ -257,7 +244,6 @@ class CleanAdapter(
itemViewHolder.fileName.text = dataList[position].fileName itemViewHolder.fileName.text = dataList[position].fileName
itemViewHolder.fileNone.text = dataList[position].filePath itemViewHolder.fileNone.text = dataList[position].filePath
} }
} }
itemViewHolder.fileIcon itemViewHolder.fileIcon
itemViewHolder.fileName itemViewHolder.fileName
......
package com.xm.test.myfilemaster.adapter package com.xm.test.myfilemaster.adapter
import android.util.SparseBooleanArray
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import android.widget.ListView
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
import com.xm.test.myfilemaster.R import com.xm.test.myfilemaster.R
import com.xm.test.myfilemaster.activity.CleanActivity
import com.xm.test.myfilemaster.databinding.CleanListItemLayoutBinding import com.xm.test.myfilemaster.databinding.CleanListItemLayoutBinding
import com.xm.test.myfilemaster.databinding.FilesItemLayoutBinding import com.xm.test.myfilemaster.databinding.FilesItemLayoutBinding
import com.xm.test.myfilemaster.model.CleanBean import com.xm.test.myfilemaster.model.CleanBean
import com.xm.test.myfilemaster.model.FileBean import com.xm.test.myfilemaster.model.FileBean
class CleanAdapter2 : RecyclerView.Adapter<CleanAdapter2.AAA>() { class CleanAdapter2(mIClean: IClean) : RecyclerView.Adapter<CleanAdapter2.AAA>() {
private val list = ArrayList<CleanBean>() private val list = ArrayList<CleanBean>()
var mFileCheckedItemList = ArrayList<FileBean>()
private var sparseBooleanArray = ArrayList<SparseBooleanArray>()
private var itemAdapters = ArrayList<SubAdapter>()
var mAllSizes = ArrayList<Long>()
var mSwitchAll = ArrayList<Boolean>()
var mIClean : IClean
init {
this.mIClean = mIClean
}
fun Int.inflate(parent: ViewGroup, attachToRoot: Boolean = false): View { fun Int.inflate(parent: ViewGroup, attachToRoot: Boolean = false): View {
return LayoutInflater.from(parent.context).inflate(this, parent, attachToRoot) return LayoutInflater.from(parent.context).inflate(this, parent, attachToRoot)
} }
...@@ -32,34 +47,90 @@ class CleanAdapter2 : RecyclerView.Adapter<CleanAdapter2.AAA>() { ...@@ -32,34 +47,90 @@ class CleanAdapter2 : RecyclerView.Adapter<CleanAdapter2.AAA>() {
override fun onBindViewHolder(holder: AAA, position: Int) { override fun onBindViewHolder(holder: AAA, position: Int) {
val data = list[position] val data = list[position]
sparseBooleanArray.add(SparseBooleanArray())
itemAdapters.add(SubAdapter(position))
mSwitchAll.add(false)
holder.binding.cleanItemName.text = data.typeName holder.binding.cleanItemName.text = data.typeName
holder.binding.cleanItemCheckBox.isChecked = mSwitchAll[position]
holder.binding.cleanItemList.visibility = if (!CleanAdapter.isCleanOver) View.GONE else View.VISIBLE
holder.binding.cleanItemUnfold.visibility = if (!CleanAdapter.isCleanOver) View.GONE else View.VISIBLE
holder.binding.fileItemSize.visibility = if (!CleanAdapter.isCleanOver) View.GONE else View.VISIBLE
holder.binding.cleanItemCheckBox.visibility = if (!CleanAdapter.isCleanOver) View.GONE else View.VISIBLE
holder.binding.cleanItemMore.visibility = if (CleanAdapter.isCleanOver) View.GONE else View.VISIBLE
var allSize: Long = 0
for (fileBean in list[position].fileBeans){
allSize += fileBean.fileSize
}
holder.binding.fileItemSize.text = if (allSize > 1024 * 1024 * 1024){
"${allSize / 1024 / 1024 / 1024} GB"
}else if (allSize > 1024 * 1024){
"${allSize / 1024 / 1024} MB"
}else if (allSize > 1024){
"${allSize / 1024} KB"
}else{
"${allSize} B"
}
mAllSizes.add(allSize)
///展开逻辑 ///展开逻辑
if (data.isListViewShow) { if (data.isListViewShow) {
holder.binding.cleanItemList.visibility = View.VISIBLE holder.binding.cleanItemList.visibility = View.VISIBLE
val subAdapter = SubAdapter() holder.binding.cleanItemList.adapter = itemAdapters[position]
holder.binding.cleanItemList.adapter = subAdapter itemAdapters[position].setData(data.fileBeans)
subAdapter.setData(data.fileBeans)
} else { } else {
holder.binding.cleanItemList.visibility = View.GONE holder.binding.cleanItemList.visibility = View.GONE
} }
holder.binding.cleanItemUnfold.setOnClickListener { holder.binding.cleanItemBar.setOnClickListener {
data.isListViewShow = !data.isListViewShow data.isListViewShow = !data.isListViewShow
notifyItemChanged(position) notifyItemChanged(position)
} }
holder.binding.cleanItemCheckBox.setOnClickListener {
if (CleanAdapter.isCleanOver){
mSwitchAll[position] = !mSwitchAll[position]
list[position].fileBeans.forEach {
it.isChecked = holder.binding.cleanItemCheckBox.isChecked
}
if (holder.binding.cleanItemCheckBox.isChecked){
mFileCheckedItemList.addAll(list[position].fileBeans)
}else{
mFileCheckedItemList.removeAll(list[position].fileBeans)
}
itemAdapters[position].setData(list[position].fileBeans)
notifyItemChanged(position)
changeSwitchSize()
}
}
//选中的逻辑,先外层通过data的属性值是否选中,点击事假更新子类表选中状态下 //选中的逻辑,先外层通过data的属性值是否选中,点击事假更新子类表选中状态下
} }
private fun changeSwitchSize() {
var size: Long = 0
mFileCheckedItemList.forEach {
size += it.fileSize
}
mIClean.OnChekedItemListener(size)
}
fun setData(datas: List<CleanBean>) { fun setData(datas: List<CleanBean>) {
list.clear() list.clear()
list.addAll(datas) list.addAll(datas)
notifyDataSetChanged() notifyDataSetChanged()
} }
inner class SubAdapter : RecyclerView.Adapter<SubAdapter.BBB>() { inner class SubAdapter(itemPosition: Int) : RecyclerView.Adapter<SubAdapter.BBB>() {
private val sibList = ArrayList<FileBean>() private val sibList = ArrayList<FileBean>()
private var itemPosition: Int
init {
this.itemPosition = itemPosition
}
inner class BBB(view: View) : RecyclerView.ViewHolder(view) { inner class BBB(view: View) : RecyclerView.ViewHolder(view) {
val binding = FilesItemLayoutBinding.bind(view) val binding = FilesItemLayoutBinding.bind(view)
...@@ -78,6 +149,47 @@ class CleanAdapter2 : RecyclerView.Adapter<CleanAdapter2.AAA>() { ...@@ -78,6 +149,47 @@ class CleanAdapter2 : RecyclerView.Adapter<CleanAdapter2.AAA>() {
holder.binding.fileItemName.text = data.fileName holder.binding.fileItemName.text = data.fileName
//todo data通过状态值显示选中状态 //todo data通过状态值显示选中状态
// holder.binding.fileJoinToImg.isSelected=data. // holder.binding.fileJoinToImg.isSelected=data.
holder.binding.fileJoinToImg.visibility = View.GONE
holder.binding.fileSelectSwitch.visibility = if (!CleanAdapter.isCleanOver) View.GONE else View.VISIBLE
holder.binding.fileSelectSwitch.isChecked = sibList[position].isChecked
holder.binding.fileSelectSwitch.setOnClickListener {
sibList[position].isChecked = !sibList[position].isChecked
if (holder.binding.fileSelectSwitch.isChecked){
mFileCheckedItemList.add(sibList[position])
}else{
mFileCheckedItemList.remove(sibList[position])
mSwitchAll[itemPosition] = false
}
changeSwitchSize()
notifyItemChanged(position)
}
when(itemPosition){
0 ->{
holder.binding.fileItemName.text = sibList[position].fileName
holder.binding.fileItemNone.text = sibList[position].filePath
}
1 ->{
holder.binding.filesItemIcon.setImageDrawable(sibList[position].drawable)
holder.binding.fileItemName.text = sibList[position].fileName
holder.binding.fileItemNone.text = sibList[position].filePath
}
3 ->{
// itemViewHolder.fileIcon.setImageDrawable(dataList[position].drawable)
holder.binding.filesItemIcon.setImageResource(R.drawable.ic_log_file)
holder.binding.fileItemName.text = sibList[position].fileName
holder.binding.fileItemNone.text = sibList[position].hint
}
4 ->{
holder.binding.filesItemIcon.setImageResource(R.drawable.ic_log_file)
holder.binding.fileItemName.text = sibList[position].fileName
holder.binding.fileItemNone.text = sibList[position].filePath
}
}
} }
fun setData(datas: List<FileBean>) { fun setData(datas: List<FileBean>) {
...@@ -86,4 +198,8 @@ class CleanAdapter2 : RecyclerView.Adapter<CleanAdapter2.AAA>() { ...@@ -86,4 +198,8 @@ class CleanAdapter2 : RecyclerView.Adapter<CleanAdapter2.AAA>() {
notifyDataSetChanged() notifyDataSetChanged()
} }
} }
interface IClean{
fun OnChekedItemListener(size: Long)
}
} }
\ No newline at end of file
...@@ -8,6 +8,7 @@ import android.view.ViewGroup ...@@ -8,6 +8,7 @@ import android.view.ViewGroup
import android.widget.BaseAdapter import android.widget.BaseAdapter
import android.widget.CheckBox import android.widget.CheckBox
import android.widget.ImageView import android.widget.ImageView
import com.bumptech.glide.Glide
import com.xm.test.myfilemaster.R import com.xm.test.myfilemaster.R
import com.xm.test.myfilemaster.activity.MediaActivity import com.xm.test.myfilemaster.activity.MediaActivity
import com.xm.test.myfilemaster.model.FileBean import com.xm.test.myfilemaster.model.FileBean
...@@ -67,10 +68,12 @@ class MediaAdapter( ...@@ -67,10 +68,12 @@ class MediaAdapter(
if (mFileType.equals("image")){ if (mFileType.equals("image")){
// mViewHolder.image.setImageDrawable(mListData[position].drawable) // mViewHolder.image.setImageDrawable(mListData[position].drawable)
Glide.with(mContext).load(mListData[position].filePath).centerCrop().into(mViewHolder.image)
mViewHolder.image.layoutParams.height = dpToPx mViewHolder.image.layoutParams.height = dpToPx
}else{ }else{
mViewHolder.image.setImageResource(R.drawable.ic_video) // mViewHolder.image.setImageResource(R.drawable.ic_video)
Glide.with(mContext).load(mListData[position].filePath).centerCrop().into(mViewHolder.image)
mViewHolder.image.layoutParams.height = dpToPx mViewHolder.image.layoutParams.height = dpToPx
} }
......
...@@ -10,6 +10,7 @@ import android.view.ViewGroup ...@@ -10,6 +10,7 @@ import android.view.ViewGroup
import android.widget.BaseAdapter import android.widget.BaseAdapter
import android.widget.CheckBox import android.widget.CheckBox
import android.widget.ImageView import android.widget.ImageView
import com.bumptech.glide.Glide
import com.cloud.cleanjunksdk.similar.PicInfo import com.cloud.cleanjunksdk.similar.PicInfo
import com.xm.test.myfilemaster.R import com.xm.test.myfilemaster.R
import com.xm.test.myfilemaster.activity.SimilarImagesActivity import com.xm.test.myfilemaster.activity.SimilarImagesActivity
...@@ -58,7 +59,8 @@ class SimilarGridAdapter( ...@@ -58,7 +59,8 @@ class SimilarGridAdapter(
} }
// BitmapDrawable(context.resources, BitmapFactory.decodeFile(dataList[position].filePath)) // BitmapDrawable(context.resources, BitmapFactory.decodeFile(dataList[position].filePath))
itemHolder.checkBox.visibility = if (SimilarImagesActivity.isClickEditBtn) View.VISIBLE else View.GONE itemHolder.checkBox.visibility = if (SimilarImagesActivity.isClickEditBtn) View.VISIBLE else View.GONE
itemHolder.imageView.setImageDrawable(BitmapDrawable(context.resources, BitmapFactory.decodeFile(dataList[position].path))) Glide.with(context).load(dataList[position].path).centerCrop().into(itemHolder.imageView)
// itemHolder.imageView.setImageDrawable(BitmapDrawable(context.resources, BitmapFactory.decodeFile(dataList[position].path)))
itemHolder.imageView.layoutParams.height = FileUtil.dpToPx(83, context) itemHolder.imageView.layoutParams.height = FileUtil.dpToPx(83, context)
// if (DuplicateImagesActivity.isClickCheckBoxAllBtn){ // if (DuplicateImagesActivity.isClickCheckBoxAllBtn){
......
...@@ -14,6 +14,7 @@ class FileBean : Serializable{ ...@@ -14,6 +14,7 @@ class FileBean : Serializable{
var fileSize: Long = 0 var fileSize: Long = 0
var fileBitmap: Bitmap? = null var fileBitmap: Bitmap? = null
var childList = ArrayList<FileBean>() var childList = ArrayList<FileBean>()
var isChecked = false
override fun toString(): String { override fun toString(): String {
return "FileBean(fileName='$fileName', filePath='$filePath', isDir=$isDir, fileType='$fileType', childList=${childList.toString()})" return "FileBean(fileName='$fileName', filePath='$filePath', isDir=$isDir, fileType='$fileType', childList=${childList.toString()})"
} }
......
...@@ -479,7 +479,6 @@ ...@@ -479,7 +479,6 @@
android:id="@+id/battery_animation_view" android:id="@+id/battery_animation_view"
android:background="@color/style_background" android:background="@color/style_background"
android:layout_width="match_parent" android:layout_width="match_parent"
android:visibility="gone"
android:layout_height="match_parent"> android:layout_height="match_parent">
<ImageView <ImageView
...@@ -504,7 +503,7 @@ ...@@ -504,7 +503,7 @@
android:id="@+id/battery_animation_btn" android:id="@+id/battery_animation_btn"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
app:lottie_rawRes="@raw/memory" app:lottie_rawRes="@raw/dianchi"
app:lottie_autoPlay="true" app:lottie_autoPlay="true"
app:lottie_loop="true"/> app:lottie_loop="true"/>
......
...@@ -53,7 +53,7 @@ ...@@ -53,7 +53,7 @@
<com.airbnb.lottie.LottieAnimationView <com.airbnb.lottie.LottieAnimationView
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
app:lottie_rawRes="@raw/memory" app:lottie_rawRes="@raw/tupian"
app:lottie_autoPlay="true" app:lottie_autoPlay="true"
app:lottie_loop="true"/> app:lottie_loop="true"/>
......
...@@ -20,16 +20,29 @@ ...@@ -20,16 +20,29 @@
<!-- android:layout_marginStart="16dp"--> <!-- android:layout_marginStart="16dp"-->
<!-- android:layout_marginEnd="16dp">--> <!-- android:layout_marginEnd="16dp">-->
<androidx.recyclerview.widget.RecyclerView <!-- <androidx.recyclerview.widget.RecyclerView-->
<!-- android:id="@+id/image_item_grid"-->
<!-- android:layout_width="match_parent"-->
<!-- android:layout_height="wrap_content"-->
<!-- android:layout_marginStart="16dp"-->
<!-- android:layout_marginTop="12dp"-->
<!-- android:layout_marginEnd="16dp"-->
<!-- android:padding="1dp"-->
<!-- app:layoutManager="androidx.recyclerview.widget.GridLayoutManager"-->
<!-- app:spanCount="3" />-->
<GridView
android:id="@+id/image_item_grid" android:id="@+id/image_item_grid"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="16dp" android:layout_marginStart="16dp"
android:layout_marginTop="12dp" android:layout_marginTop="12dp"
android:layout_marginEnd="16dp" android:layout_marginEnd="16dp"
android:padding="1dp" android:numColumns="3"
app:layoutManager="androidx.recyclerview.widget.GridLayoutManager" android:horizontalSpacing="2dp"
app:spanCount="3" /> android:columnWidth="118dp"
android:scrollbars="none"
android:padding="1dp" />
<!-- </ScrollView>--> <!-- </ScrollView>-->
......
...@@ -315,7 +315,6 @@ It is best to trust the app downloaded from the Play Store"/> ...@@ -315,7 +315,6 @@ It is best to trust the app downloaded from the Play Store"/>
android:src="@mipmap/ad"/> android:src="@mipmap/ad"/>
</FrameLayout> </FrameLayout>
</LinearLayout> </LinearLayout>
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:background="@color/black" android:background="@color/black"
android:layout_marginStart="1dp" android:layout_margin="2dp"
android:layout_height="wrap_content"> android:layout_height="wrap_content">
......
This diff is collapsed.
This diff is collapsed.
This source diff could not be displayed because it is too large. You can view the blob instead.
This diff is collapsed.
This diff is collapsed.
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