Commit 93028a05 authored by yanglin's avatar yanglin

通知布局及similar页面功能完善

parent e8f694cc
...@@ -16,6 +16,8 @@ import com.applovin.sdk.AppLovinSdk ...@@ -16,6 +16,8 @@ import com.applovin.sdk.AppLovinSdk
import com.applovin.sdk.AppLovinSdkInitializationConfiguration import com.applovin.sdk.AppLovinSdkInitializationConfiguration
import com.kongzue.dialogx.DialogX import com.kongzue.dialogx.DialogX
import com.xm.test.myfilemaster.activity.HomeActivity import com.xm.test.myfilemaster.activity.HomeActivity
import com.xm.test.myfilemaster.notification.NotificationHelper
import com.xm.test.myfilemaster.notification.NotificationHelper.postNotification
import com.xm.test.myfilemaster.util.UrlManager import com.xm.test.myfilemaster.util.UrlManager
import java.util.concurrent.TimeUnit import java.util.concurrent.TimeUnit
...@@ -38,6 +40,8 @@ class MainActivity : AppCompatActivity(), MaxAdListener { ...@@ -38,6 +40,8 @@ class MainActivity : AppCompatActivity(), MaxAdListener {
private fun initView() { private fun initView() {
NotificationHelper.postNotification()
val isAgreeAppPage = MyApplication.mSp?.getBoolean("isAgreeAppPage", false) ?: false val isAgreeAppPage = MyApplication.mSp?.getBoolean("isAgreeAppPage", false) ?: false
if (isAgreeAppPage){ if (isAgreeAppPage){
startAppPage() startAppPage()
......
...@@ -69,7 +69,7 @@ class MyApplication : Application() { ...@@ -69,7 +69,7 @@ class MyApplication : Application() {
AppLovinSdk.getInstance(this).initializeSdk { AppLovinSdk.getInstance(this).initializeSdk {
} }
AppLovinSdk.getInstance(this).mediationProvider = AppLovinMediationProvider.MAX // AppLovinSdk.getInstance(this).mediationProvider = AppLovinMediationProvider.MAX
initBroadcast() initBroadcast()
} }
......
...@@ -184,6 +184,7 @@ class MediaActivity : AppCompatActivity() { ...@@ -184,6 +184,7 @@ class MediaActivity : AppCompatActivity() {
MyApplication.mCleanSdk?.delete(File(fileBean.filePath)) MyApplication.mCleanSdk?.delete(File(fileBean.filePath))
mItemDataList.remove(fileBean) mItemDataList.remove(fileBean)
} }
customDialog.dismiss()
mItemAdapter?.notifyDataSetChanged() mItemAdapter?.notifyDataSetChanged()
}).show() }).show()
customDialog.isShowEditText(false) customDialog.isShowEditText(false)
......
package com.xm.test.myfilemaster.activity package com.xm.test.myfilemaster.activity
import android.os.Bundle import android.os.Bundle
import android.view.View
import android.widget.ListView import android.widget.ListView
import com.kongzue.dialogx.dialogs.WaitDialog import com.kongzue.dialogx.dialogs.WaitDialog
import com.xm.test.myfilemaster.R import com.xm.test.myfilemaster.R
import com.xm.test.myfilemaster.base.BaseActivity import com.xm.test.myfilemaster.base.BaseActivity
import com.xm.test.myfilemaster.databinding.ActivityScanLargeFilesBinding
import com.xm.test.myfilemaster.model.FileBean import com.xm.test.myfilemaster.model.FileBean
import com.xm.test.myfilemaster.util.FileUtil import com.xm.test.myfilemaster.util.FileUtil
...@@ -12,8 +14,9 @@ class ScanLargeFilesActivity : BaseActivity() { ...@@ -12,8 +14,9 @@ class ScanLargeFilesActivity : BaseActivity() {
private lateinit var mFilesItemListView: ListView private lateinit var mFilesItemListView: ListView
private var mFileItemList = ArrayList<FileBean>() private var mFileItemList = ArrayList<FileBean>()
private lateinit var mLargeAnimation : View
override fun getLayout(): Int { override fun getLayout(): Int {
return R.layout.activity_scan_large_files return R.layout.activity_scan_large_files
} }
...@@ -28,13 +31,13 @@ class ScanLargeFilesActivity : BaseActivity() { ...@@ -28,13 +31,13 @@ class ScanLargeFilesActivity : BaseActivity() {
fun mInitView(){ fun mInitView(){
mFilesItemListView = findViewById<ListView>(R.id.files_item_listview) mFilesItemListView = findViewById<ListView>(R.id.files_item_listview)
mLargeAnimation = findViewById(R.id.large_files_animation)
WaitDialog.show("Please Wait!")
Thread(Runnable { Thread(Runnable {
mFileItemList = FileUtil.search10MFiles(this, 10 * 1024 * 1024) mFileItemList = FileUtil.search10MFiles(this, 10 * 1024 * 1024)
runOnUiThread { runOnUiThread {
mLargeAnimation.visibility = View.GONE
setAdapter(mFilesItemListView, mFileItemList) setAdapter(mFilesItemListView, mFileItemList)
WaitDialog.dismiss()
} }
}).start() }).start()
setOnClickBtn() setOnClickBtn()
......
...@@ -14,8 +14,10 @@ import androidx.core.view.isVisible ...@@ -14,8 +14,10 @@ import androidx.core.view.isVisible
import androidx.lifecycle.Observer import androidx.lifecycle.Observer
import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.ViewModelProvider
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
import com.cloud.cleanjunksdk.similar.PicInfo
import com.cloud.cleanjunksdk.similar.PicSimilarInfo import com.cloud.cleanjunksdk.similar.PicSimilarInfo
import com.cloud.cleanjunksdk.task.SimilarScanCallBack import com.cloud.cleanjunksdk.task.SimilarScanCallBack
import com.trustlook.sdk.data.AppInfo
import com.xm.test.myfilemaster.MyApplication import com.xm.test.myfilemaster.MyApplication
import com.xm.test.myfilemaster.R import com.xm.test.myfilemaster.R
import com.xm.test.myfilemaster.adapter.ImageItemAdapter import com.xm.test.myfilemaster.adapter.ImageItemAdapter
...@@ -43,15 +45,10 @@ class SimilarImagesActivity : AppCompatActivity(), OnClickListener, SimilarBeanA ...@@ -43,15 +45,10 @@ class SimilarImagesActivity : AppCompatActivity(), OnClickListener, SimilarBeanA
private lateinit var mListView: ListView private lateinit var mListView: ListView
private lateinit var mRecycleView: RecyclerView private lateinit var mRecycleView: RecyclerView
private lateinit var mFileCheckedItemList: ArrayList<String> private var appInfoList = ArrayList<PicInfo>()
private var mImageItemAdapter: ImageItemAdapter? = null
private var mSimilarBeanAdapter: SimilarBeanAdapter? = null private var mSimilarBeanAdapter: SimilarBeanAdapter? = null
private var mSimilarDatas = ArrayList<ArrayList<FileBean>>()
private var mDataBeans = ArrayList<ArrayList<FileBean>>()
private var mSimilarDatas = ArrayList<PicSimilarInfo>()
companion object{ companion object{
...@@ -88,6 +85,7 @@ class SimilarImagesActivity : AppCompatActivity(), OnClickListener, SimilarBeanA ...@@ -88,6 +85,7 @@ class SimilarImagesActivity : AppCompatActivity(), OnClickListener, SimilarBeanA
mCancelBtn.setOnClickListener(this) mCancelBtn.setOnClickListener(this)
mQuitBtn.setOnClickListener(this) mQuitBtn.setOnClickListener(this)
mEditBtn.setOnClickListener(this) mEditBtn.setOnClickListener(this)
mDeleteBtn.setOnClickListener(this)
mCheckItemSelectAllBtn.setOnClickListener(this) mCheckItemSelectAllBtn.setOnClickListener(this)
mListView = findViewById(R.id.files_item_listview) mListView = findViewById(R.id.files_item_listview)
...@@ -97,19 +95,10 @@ class SimilarImagesActivity : AppCompatActivity(), OnClickListener, SimilarBeanA ...@@ -97,19 +95,10 @@ class SimilarImagesActivity : AppCompatActivity(), OnClickListener, SimilarBeanA
mRecycleView.adapter = mSimilarBeanAdapter mRecycleView.adapter = mSimilarBeanAdapter
setNumber(0) setNumber(0)
// mImageItemAdapter = ImageItemAdapter(this, mDataBeans )
// mListView.adapter = mImageItemAdapter
startDuplicateImages() startDuplicateImages()
// mBaseViewModel = ViewModelProvider(this)[BaseActivityViewModel::class.java] // mDeleteBtn.setOnClickListener {
// mBaseViewModel.setNumber(0) // }
// mBaseViewModel.myInt.observe(this, Observer {
// mSelectNumText.text = String.format(getString(R.string.select_0, it.toString()))
// })
} }
private fun startDuplicateImages() { private fun startDuplicateImages() {
...@@ -124,13 +113,13 @@ class SimilarImagesActivity : AppCompatActivity(), OnClickListener, SimilarBeanA ...@@ -124,13 +113,13 @@ class SimilarImagesActivity : AppCompatActivity(), OnClickListener, SimilarBeanA
override fun onSmilarEmitOne(p0: PicSimilarInfo?) { override fun onSmilarEmitOne(p0: PicSimilarInfo?) {
var listPath = ArrayList<FileBean>() var listPath = ArrayList<FileBean>()
// for (i in p0?.getmList()!!) { for (i in p0?.getmList()!!) {
// val fileBean = FileBean() val fileBean = FileBean()
// fileBean.filePath = i.path fileBean.filePath = i.path
// listPath.add(fileBean) listPath.add(fileBean)
// } }
// mDataBeans.add(listPath) // mDataBeans.add(listPath)
mSimilarDatas.add(p0!!) mSimilarDatas.add(listPath)
} }
...@@ -190,15 +179,28 @@ class SimilarImagesActivity : AppCompatActivity(), OnClickListener, SimilarBeanA ...@@ -190,15 +179,28 @@ class SimilarImagesActivity : AppCompatActivity(), OnClickListener, SimilarBeanA
customDialog.setsCancel(View.OnClickListener { customDialog.setsCancel(View.OnClickListener {
customDialog.dismiss() customDialog.dismiss()
}).setsConfirm(View.OnClickListener { }).setsConfirm(View.OnClickListener {
for (fileBean in mImageItemAdapter?.mCheckedLists!!){ for (fileBean in mSimilarBeanAdapter?.mCheckedLists!!){
MyApplication.mCleanSdk?.delete(File(fileBean.filePath)) MyApplication.mCleanSdk?.delete(File(fileBean.filePath))
for (i in 0..<mSimilarDatas.size){
mSimilarDatas[i].forEach {
if (fileBean.filePath.contains(it.filePath)){
Log.e("yanglin", "onClick: ${mSimilarDatas[i]}", )
mSimilarDatas[i].remove(fileBean)
return@forEach
} }
startDuplicateImages() }
}
}
mEditBtn.visibility = View.GONE
mSimilarBeanAdapter?.setData(mSimilarDatas)
mSimilarBeanAdapter?.notifyDataSetChanged()
mSimilarBeanAdapter?.refreshItem()
setNumber(0)
customDialog.dismiss()
}).show() }).show()
customDialog.isShowEditText(false) customDialog.isShowEditText(false)
customDialog.setsTitle("Delete") customDialog.setsTitle("Delete")
customDialog.setsHint("Are you sure you want to delete ${mImageItemAdapter?.mCheckedLists!!.size} item?") customDialog.setsHint("Are you sure you want to delete ${mSimilarBeanAdapter?.mCheckedLists!!.size ?: 0} item?")
} }
R.id.checkbox_item_all ->{ R.id.checkbox_item_all ->{
isClickCheckBoxAllBtn = !isClickCheckBoxAllBtn isClickCheckBoxAllBtn = !isClickCheckBoxAllBtn
...@@ -214,6 +216,7 @@ class SimilarImagesActivity : AppCompatActivity(), OnClickListener, SimilarBeanA ...@@ -214,6 +216,7 @@ class SimilarImagesActivity : AppCompatActivity(), OnClickListener, SimilarBeanA
fun cancel(){ fun cancel(){
// setStateCheckedMap(false) // setStateCheckedMap(false)
mSimilarBeanAdapter?.selectAll(false)
mNewBtn.visibility = View.VISIBLE mNewBtn.visibility = View.VISIBLE
mQuitBtn.visibility = View.VISIBLE mQuitBtn.visibility = View.VISIBLE
mEditBtn.visibility =View.VISIBLE mEditBtn.visibility =View.VISIBLE
......
package com.xm.test.myfilemaster.ad package com.xm.test.myfilemaster.ad
import android.text.TextUtils import android.text.TextUtils
import com.xm.test.myfilemaster.MyApplicaiton import com.xm.test.myfilemaster.MyApplication
object AdUtils { object AdUtils {
...@@ -31,7 +31,7 @@ object AdUtils { ...@@ -31,7 +31,7 @@ object AdUtils {
return false return false
} }
val adNum = MyApplicaiton.fContext.queryDataStoreBlock(getIntString(slot + "_ad_show_num") , 0) val adNum = MyApplication.fContext.queryDataStoreBlock(getIntString(slot + "_ad_show_num") , 0)
if (adNum >= adEntity.show_limit) { if (adNum >= adEntity.show_limit) {
return false return false
} }
...@@ -45,7 +45,7 @@ object AdUtils { ...@@ -45,7 +45,7 @@ object AdUtils {
* @param interval 单位分钟 * @param interval 单位分钟
*/ */
private fun canNextTime(key: String, interval: Int): Boolean { private fun canNextTime(key: String, interval: Int): Boolean {
val lastPushTime = MyApplicaiton.fContext.queryDataStoreBlock(getLongKey(key), 0) val lastPushTime = MyApplication.fContext.queryDataStoreBlock(getLongKey(key), 0)
return (System.currentTimeMillis() - lastPushTime) / 1000 > interval return (System.currentTimeMillis() - lastPushTime) / 1000 > interval
} }
......
...@@ -8,6 +8,7 @@ import android.util.Log ...@@ -8,6 +8,7 @@ import android.util.Log
import com.android.installreferrer.api.InstallReferrerClient import com.android.installreferrer.api.InstallReferrerClient
import com.android.installreferrer.api.InstallReferrerStateListener import com.android.installreferrer.api.InstallReferrerStateListener
import com.blankj.utilcode.util.GsonUtils import com.blankj.utilcode.util.GsonUtils
import com.trustlook.sdk.BuildConfig
import com.xm.test.myfilemaster.MyApplication import com.xm.test.myfilemaster.MyApplication
import com.xm.test.myfilemaster.ad.bean.AdUnitCfg import com.xm.test.myfilemaster.ad.bean.AdUnitCfg
import com.xm.test.myfilemaster.ad.bean.AdsCfg import com.xm.test.myfilemaster.ad.bean.AdsCfg
...@@ -26,7 +27,6 @@ import okhttp3.Response ...@@ -26,7 +27,6 @@ import okhttp3.Response
import okhttp3.logging.HttpLoggingInterceptor import okhttp3.logging.HttpLoggingInterceptor
import org.json.JSONObject import org.json.JSONObject
import java.io.IOException import java.io.IOException
import com.xm.test.myfilemaster.BuildConfig
object ComUtils { object ComUtils {
...@@ -44,6 +44,7 @@ object ComUtils { ...@@ -44,6 +44,7 @@ object ComUtils {
private val configCall by lazy { private val configCall by lazy {
val client = OkHttpClient.Builder().apply { val client = OkHttpClient.Builder().apply {
if (BuildConfig.DEBUG) { if (BuildConfig.DEBUG) {
addInterceptor(HttpLoggingInterceptor().apply { addInterceptor(HttpLoggingInterceptor().apply {
level = HttpLoggingInterceptor.Level.BODY level = HttpLoggingInterceptor.Level.BODY
}) })
......
...@@ -7,9 +7,9 @@ import com.blankj.utilcode.util.DeviceUtils ...@@ -7,9 +7,9 @@ import com.blankj.utilcode.util.DeviceUtils
import com.blankj.utilcode.util.NetworkUtils import com.blankj.utilcode.util.NetworkUtils
import com.blankj.utilcode.util.SPUtils import com.blankj.utilcode.util.SPUtils
import com.blankj.utilcode.util.ScreenUtils import com.blankj.utilcode.util.ScreenUtils
import com.trustlook.sdk.BuildConfig
import com.xm.test.myfilemaster.MyApplication import com.xm.test.myfilemaster.MyApplication
import com.xm.test.myfilemaster.ad.KokoReportHelper.isCharging import com.xm.test.myfilemaster.ad.KokoReportHelper.isCharging
import com.xm.test.myfilemaster.BuildConfig
import okhttp3.Call import okhttp3.Call
import okhttp3.Callback import okhttp3.Callback
import okhttp3.MediaType.Companion.toMediaTypeOrNull import okhttp3.MediaType.Companion.toMediaTypeOrNull
...@@ -57,6 +57,7 @@ object EventHelper { ...@@ -57,6 +57,7 @@ object EventHelper {
.put("${pkg}_14", "${AppUtils.getAppVersionCode()}") .put("${pkg}_14", "${AppUtils.getAppVersionCode()}")
.put("${pkg}_15", "google") .put("${pkg}_15", "google")
.put("${pkg}_24", BuildConfig.BUILD_TYPE) .put("${pkg}_24", BuildConfig.BUILD_TYPE)
// .put("${pkg}_25", PhoneTools.isRoot()) // .put("${pkg}_25", PhoneTools.isRoot())
.put("${pkg}_25", KokoReportHelper.isShellRooted()) .put("${pkg}_25", KokoReportHelper.isShellRooted())
// .put("${pkg}_26", PhoneTools.isHooked()) // .put("${pkg}_26", PhoneTools.isHooked())
......
...@@ -13,13 +13,14 @@ import com.cloud.cleanjunksdk.similar.PicSimilarInfo ...@@ -13,13 +13,14 @@ import com.cloud.cleanjunksdk.similar.PicSimilarInfo
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
import com.xm.test.myfilemaster.databinding.ImageItemLayoutBinding import com.xm.test.myfilemaster.databinding.ImageItemLayoutBinding
import com.xm.test.myfilemaster.model.FileBean
import com.xm.test.myfilemaster.util.FileUtil import com.xm.test.myfilemaster.util.FileUtil
class SimilarBeanAdapter(context: Context, refreshNumListener: RefreshNumberText) : RecyclerView.Adapter<SimilarBeanAdapter.AA>() { class SimilarBeanAdapter(context: Context, refreshNumListener: RefreshNumberText) : RecyclerView.Adapter<SimilarBeanAdapter.AA>() {
private val list = arrayListOf<PicSimilarInfo>() private val list = arrayListOf<ArrayList<FileBean>>()
private var refreshNumListener: RefreshNumberText private var refreshNumListener: RefreshNumberText
private var context: Context private var context: Context
var mCheckedLists: MutableList<PicInfo> = mutableListOf<PicInfo>() var mCheckedLists: ArrayList<FileBean> = ArrayList()
private var mItemCheckedArray = ArrayList<SparseBooleanArray>() private var mItemCheckedArray = ArrayList<SparseBooleanArray>()
val mGridAdapters = ArrayList<SimilarGridAdapter>() val mGridAdapters = ArrayList<SimilarGridAdapter>()
val holders = ArrayList<AA>() val holders = ArrayList<AA>()
...@@ -52,25 +53,25 @@ class SimilarBeanAdapter(context: Context, refreshNumListener: RefreshNumberText ...@@ -52,25 +53,25 @@ class SimilarBeanAdapter(context: Context, refreshNumListener: RefreshNumberText
// mItemCheckedArray.add(SparseBooleanArray()) // mItemCheckedArray.add(SparseBooleanArray())
//// itemAdapter.add(ItemAdapter(mDataList[position], mContext, mItemCheckedArray[position], position)) //// itemAdapter.add(ItemAdapter(mDataList[position], mContext, mItemCheckedArray[position], position))
// } // }
mGridAdapters.add(SimilarGridAdapter(list[position].getmList(), context, mItemCheckedArray[position], position)) mGridAdapters.add(SimilarGridAdapter(list[position], context, mItemCheckedArray[position], position))
// val data = list[position] // val data = list[position]
holder.binding.similarImageNumText.text = holder.binding.similarImageNumText.text =
String.format(context.getString(R.string.similar, list[position].getmList().size.toString())) String.format(context.getString(R.string.similar, list[position].size.toString()))
val layoutParams = holder.binding.imageItemGrid.layoutParams val layoutParams = holder.binding.imageItemGrid.layoutParams
if (list[position].getmList().size.toFloat() / 4.0 == 1.0){ if (list[position].size.toFloat() / 4.0 == 1.0){
layoutParams.height = FileUtil.dpToPx(80*(list[position].getmList().size / 4), context) layoutParams.height = FileUtil.dpToPx(80*(list[position].size / 4), context)
}else{ }else{
layoutParams.height = FileUtil.dpToPx(80*(list[position].getmList().size / 4 + 1 ), context) layoutParams.height = FileUtil.dpToPx(80*(list[position].size / 4 + 1 ), context)
} }
holder.binding.imageItemGrid.setOnItemClickListener { parent, view, itemPosition, id -> holder.binding.imageItemGrid.setOnItemClickListener { parent, view, itemPosition, id ->
if (SimilarImagesActivity.isClickEditBtn){ if (SimilarImagesActivity.isClickEditBtn){
println("yanglin positioin $position itemPostion $itemPosition") println("yanglin positioin $position itemPostion $itemPosition")
updateCheckBoxStatus(position, view, itemPosition, holder.binding.imageItemGrid, list[position].getmList()) updateCheckBoxStatus(position, view, itemPosition, holder.binding.imageItemGrid, list[position])
} }
} }
...@@ -79,7 +80,7 @@ class SimilarBeanAdapter(context: Context, refreshNumListener: RefreshNumberText ...@@ -79,7 +80,7 @@ class SimilarBeanAdapter(context: Context, refreshNumListener: RefreshNumberText
holder.binding.imageItemGrid.adapter = mGridAdapters[position] holder.binding.imageItemGrid.adapter = mGridAdapters[position]
} }
fun updateCheckBoxStatus(position: Int, view: View, itemPosition: Int, lv: GridView, fileBeanList: MutableList<PicInfo>){ fun updateCheckBoxStatus(position: Int, view: View, itemPosition: Int, lv: GridView, fileBeanList: ArrayList<FileBean>){
val viewHolder = view.tag as SimilarGridAdapter.ViewHolder val viewHolder = view.tag as SimilarGridAdapter.ViewHolder
viewHolder.checkBox.toggle() viewHolder.checkBox.toggle()
lv.setItemChecked(itemPosition, viewHolder.checkBox.isChecked) lv.setItemChecked(itemPosition, viewHolder.checkBox.isChecked)
...@@ -95,17 +96,19 @@ class SimilarBeanAdapter(context: Context, refreshNumListener: RefreshNumberText ...@@ -95,17 +96,19 @@ class SimilarBeanAdapter(context: Context, refreshNumListener: RefreshNumberText
refreshNumListener.setCheckBoxSelect(false) refreshNumListener.setCheckBoxSelect(false)
} }
fun setData(data: List<PicSimilarInfo>) { fun setData(data: ArrayList<ArrayList<FileBean>>) {
list.clear() list.clear()
list.addAll(data) list.addAll(data)
mItemCheckedArray.clear() mItemCheckedArray.clear()
mCheckedLists.clear()
mGridAdapters.clear()
for (i in 0..<list.size){ for (i in 0..<list.size){
mItemCheckedArray.add(SparseBooleanArray()) mItemCheckedArray.add(SparseBooleanArray())
for (j in 0..<list[0].getmList().size){ for (j in 0..<list[0].size){
mItemCheckedArray[i].put(j, false) mItemCheckedArray[i].put(j, false)
} }
} }
notifyDataSetChanged() refreshItem()
} }
fun selectAll(isChecked: Boolean){ fun selectAll(isChecked: Boolean){
...@@ -124,9 +127,9 @@ class SimilarBeanAdapter(context: Context, refreshNumListener: RefreshNumberText ...@@ -124,9 +127,9 @@ class SimilarBeanAdapter(context: Context, refreshNumListener: RefreshNumberText
} }
fun setStateCheckedMap(position: Int, isChecked: Boolean){ fun setStateCheckedMap(position: Int, isChecked: Boolean){
if (isChecked){ if (isChecked){
mCheckedLists.addAll(list[position].getmList()) mCheckedLists.addAll(list[position])
} }
for(i in 0..< list[position].getmList().size){ for(i in 0..< list[position].size){
mItemCheckedArray[position].put(i, isChecked) mItemCheckedArray[position].put(i, isChecked)
// holders[position].binding.imageItemGrid.setItemChecked(i, isChecked) // holders[position].binding.imageItemGrid.setItemChecked(i, isChecked)
} }
......
...@@ -14,14 +14,15 @@ import com.bumptech.glide.Glide ...@@ -14,14 +14,15 @@ 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
import com.xm.test.myfilemaster.model.FileBean
import com.xm.test.myfilemaster.util.FileUtil import com.xm.test.myfilemaster.util.FileUtil
class SimilarGridAdapter( class SimilarGridAdapter(
list: MutableList<PicInfo>, context: Context, list: MutableList<FileBean>, context: Context,
mStateCheckedMap: SparseBooleanArray, mPosition: Int): BaseAdapter(){ mStateCheckedMap: SparseBooleanArray, mPosition: Int): BaseAdapter(){
private var context: Context private var context: Context
private var dataList: MutableList<PicInfo> private var dataList: MutableList<FileBean>
private var stateCheckedMap: SparseBooleanArray private var stateCheckedMap: SparseBooleanArray
private var inflater: LayoutInflater private var inflater: LayoutInflater
private var mPosition: Int private var mPosition: Int
...@@ -59,7 +60,7 @@ class SimilarGridAdapter( ...@@ -59,7 +60,7 @@ 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
Glide.with(context).load(dataList[position].path).centerCrop().into(itemHolder.imageView) Glide.with(context).load(dataList[position].filePath).centerCrop().into(itemHolder.imageView)
// itemHolder.imageView.setImageDrawable(BitmapDrawable(context.resources, BitmapFactory.decodeFile(dataList[position].path))) // 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)
...@@ -73,7 +74,7 @@ class SimilarGridAdapter( ...@@ -73,7 +74,7 @@ class SimilarGridAdapter(
} }
fun setData(datas: MutableList<PicInfo>){ fun setData(datas: ArrayList<FileBean>){
this.dataList = datas this.dataList = datas
} }
......
...@@ -212,15 +212,17 @@ abstract class BaseActivity : BaseAbsView(), BaseActivityListener{ ...@@ -212,15 +212,17 @@ abstract class BaseActivity : BaseAbsView(), BaseActivityListener{
}else{ }else{
mFilesItemListView.visibility = View.VISIBLE mFilesItemListView.visibility = View.VISIBLE
mNotFileFoundLayout.visibility = View.GONE mNotFileFoundLayout.visibility = View.GONE
mEditBtn.visibility = View.VISIBLE
mFileAdapter.setData(mItemDataList) mFileAdapter.setData(mItemDataList)
} }
setStateCheckedMap(false)
customDialog.dismiss()
}).show() }).show()
customDialog.isShowEditText(false) customDialog.isShowEditText(false)
customDialog.setsTitle("Delete") customDialog.setsTitle("Delete")
customDialog.setsHint("Are you sure you want to delete ${mFileCheckedItemList.size} item?") customDialog.setsHint("Are you sure you want to delete ${mFileCheckedItemList.size} item?")
customDialog.setsRightDelete("Delete") customDialog.setsRightDelete("Delete")
cancel() mNewBtn.visibility = View.GONE
mEditBtn.visibility = View.GONE
} }
R.id.btn_share ->{ R.id.btn_share ->{
if (switchNumber > 1){ if (switchNumber > 1){
...@@ -385,10 +387,19 @@ abstract class BaseActivity : BaseAbsView(), BaseActivityListener{ ...@@ -385,10 +387,19 @@ abstract class BaseActivity : BaseAbsView(), BaseActivityListener{
} }
fun setStateCheckedMap(isChecked: Boolean){ fun setStateCheckedMap(isChecked: Boolean){
if (!isChecked) {
switchNumber = 0
mBaseViewModel.setNumber(0)
mFileCheckedItemList.clear()
}else{
mFileCheckedItemList.addAll(mItemDataList)
mBaseViewModel.setNumber(mFileCheckedItemList.size)
}
for(i in mItemDataList.indices){ for(i in mItemDataList.indices){
mItemCheckedArray.put(i, isChecked) mItemCheckedArray.put(i, isChecked)
mFilesItemListView.setItemChecked(i, isChecked) mFilesItemListView.setItemChecked(i, isChecked)
} }
mFileAdapter.notifyDataSetChanged()
} }
fun setOnListViewItemClickListener(lv: ListView){ fun setOnListViewItemClickListener(lv: ListView){
...@@ -469,7 +480,7 @@ abstract class BaseActivity : BaseAbsView(), BaseActivityListener{ ...@@ -469,7 +480,7 @@ abstract class BaseActivity : BaseAbsView(), BaseActivityListener{
} }
mFileAdapter.notifyDataSetChanged() mFileAdapter.notifyDataSetChanged()
switchNumber = mFileCheckedItemList.size switchNumber = mFileCheckedItemList.size
mBaseViewModel.setNumber(switchNumber) mBaseViewModel.setNumber(mFileCheckedItemList.size)
} }
fun selectAll(){ fun selectAll(){
mFileCheckedItemList.clear() mFileCheckedItemList.clear()
...@@ -482,7 +493,6 @@ abstract class BaseActivity : BaseAbsView(), BaseActivityListener{ ...@@ -482,7 +493,6 @@ abstract class BaseActivity : BaseAbsView(), BaseActivityListener{
0 0
} }
mFileAdapter.notifyDataSetChanged() mFileAdapter.notifyDataSetChanged()
mBaseViewModel.setNumber(switchNumber)
// mSelectNumText.text = String.format(getString(R.string.select_0, mSelectNum.toString())) // mSelectNumText.text = String.format(getString(R.string.select_0, mSelectNum.toString()))
} }
......
...@@ -239,6 +239,7 @@ class InternalStorageFragment : Fragment(), View.OnClickListener { ...@@ -239,6 +239,7 @@ class InternalStorageFragment : Fragment(), View.OnClickListener {
MyApplication.mCleanSdk?.delete(File(fileBean.filePath)) MyApplication.mCleanSdk?.delete(File(fileBean.filePath))
} }
mFileAdapter?.setData(mItemDataList) mFileAdapter?.setData(mItemDataList)
customDialog.dismiss()
}).show() }).show()
customDialog.isShowEditText(false) customDialog.isShowEditText(false)
customDialog.setsTitle("Delete") customDialog.setsTitle("Delete")
......
...@@ -40,7 +40,7 @@ import kotlin.random.Random ...@@ -40,7 +40,7 @@ import kotlin.random.Random
object NotificationHelper { object NotificationHelper {
private const val CHANNEL_ID = "msjdhusjdsd" private const val CHANNEL_ID = "uxm7okanmfth88nb"
private const val CHANNEL_NAME = "File Manager Select" private const val CHANNEL_NAME = "File Manager Select"
@SuppressLint("RemoteViewLayout") @SuppressLint("RemoteViewLayout")
...@@ -53,7 +53,7 @@ object NotificationHelper { ...@@ -53,7 +53,7 @@ object NotificationHelper {
var myValue = 0 var myValue = 0
when (actionId) { when (actionId) {
ID_JUNK_CLEAN_PUSH -> { ID_JUNK_CLEAN_PUSH -> {
remoteViews = RemoteViews(packageName, R.layout.notification_junk_clean) remoteViews = RemoteViews(packageName, R.layout.notification_scan_junk_layout)
} }
ID_BOOST_PUSH -> { ID_BOOST_PUSH -> {
...@@ -65,7 +65,7 @@ object NotificationHelper { ...@@ -65,7 +65,7 @@ object NotificationHelper {
} }
ID_BATTERY_PUSH -> { ID_BATTERY_PUSH -> {
remoteViews = RemoteViews(packageName, R.layout.notification_battery) remoteViews = RemoteViews(packageName, R.layout.notification_battery_layout)
} }
ID_COOL_PUSH -> { ID_COOL_PUSH -> {
...@@ -73,7 +73,7 @@ object NotificationHelper { ...@@ -73,7 +73,7 @@ object NotificationHelper {
} }
ID_BIGFILE_PUSH -> { ID_BIGFILE_PUSH -> {
remoteViews = RemoteViews(packageName, R.layout.notification_large_file) remoteViews = RemoteViews(packageName, R.layout.notification_large_layout)
} }
ID_DUPLICATE_FILE_PUSH -> { ID_DUPLICATE_FILE_PUSH -> {
...@@ -93,19 +93,19 @@ object NotificationHelper { ...@@ -93,19 +93,19 @@ object NotificationHelper {
} }
ID_INSTALL_PACKAGE_PUSH -> { ID_INSTALL_PACKAGE_PUSH -> {
remoteViews = RemoteViews(packageName, R.layout.notification_install) remoteViews = RemoteViews(packageName, R.layout.notification_install_bar)
} }
ID_UNINSTALL_PACKAGE_PUSH -> { ID_UNINSTALL_PACKAGE_PUSH -> {
remoteViews = RemoteViews(packageName, R.layout.notification_uninstall) remoteViews = RemoteViews(packageName, R.layout.notification_uninstall_bar)
} }
ID_CHARGE -> { ID_CHARGE -> {
remoteViews = RemoteViews(packageName, R.layout.notification_battery) remoteViews = RemoteViews(packageName, R.layout.notification_low_battery_bar)
} }
ID_LOW_BATTERY_PUSH -> { ID_LOW_BATTERY_PUSH -> {
remoteViews = RemoteViews(packageName, R.layout.notification_battery_low) remoteViews = RemoteViews(packageName, R.layout.notification_low_battery_bar)
} }
ID_LOW_JUNK_PUSH -> { ID_LOW_JUNK_PUSH -> {
...@@ -166,8 +166,8 @@ object NotificationHelper { ...@@ -166,8 +166,8 @@ object NotificationHelper {
) )
val builder = NotificationCompat.Builder(context, CHANNEL_ID) val builder = NotificationCompat.Builder(context, CHANNEL_ID)
.setSmallIcon(R.drawable.ic_logo24) .setSmallIcon(R.mipmap.app_icon)
.setLargeIcon(BitmapFactory.decodeResource(context.resources, R.drawable.ic_logo24)) .setLargeIcon(BitmapFactory.decodeResource(context.resources, R.mipmap.app_icon))
.setCustomContentView(remoteViews) .setCustomContentView(remoteViews)
.setCustomHeadsUpContentView(remoteViews) .setCustomHeadsUpContentView(remoteViews)
......
...@@ -16,7 +16,8 @@ object HttpRequest { ...@@ -16,7 +16,8 @@ object HttpRequest {
val response = okHttpClient.newCall(request).execute() val response = okHttpClient.newCall(request).execute()
if (response.isSuccessful){ if (response.isSuccessful){
Gson().fromJson(response.body().toString(), AdConfigData::class.java) Gson().fromJson(response.body.toString(), AdConfigData::class.java)
} }
......
package com.xm.test.myfilemaster.util package com.xm.test.myfilemaster.util
object UrlManager { object UrlManager {
const val AD_APP_KEY = "GGPreND6SRmCt1zJgn5faiLGD8c2PVGPLgPpSg7cHanVTud1DhtuI9MmteTqlEviaJ57WnxW68kQDaATJ5z3cW" // const val AD_APP_KEY = "GGPreND6SRmCt1zJgn5faiLGD8c2PVGPLgPpSg7cHanVTud1DhtuI9MmteTqlEviaJ57WnxW68kQDaATJ5z3cW"
const val AD_APP_KEY = "uxm7okanmfth88nb"
const val AD_UNIT_ID = "" const val AD_UNIT_ID = ""
const val TEST_PLACEMENT_HERE = "" const val TEST_PLACEMENT_HERE = ""
......
...@@ -7,7 +7,18 @@ ...@@ -7,7 +7,18 @@
android:orientation="vertical" android:orientation="vertical"
android:background="#F8F8F8" android:background="#F8F8F8"
tools:context=".activity.InternalStorageActivity"> tools:context=".activity.InternalStorageActivity">
<FrameLayout
android:id="@+id/large_files_animation"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.airbnb.lottie.LottieAnimationView
android:layout_width="match_parent"
android:layout_height="248dp"
app:lottie_autoPlay="true"
android:layout_gravity="center"
app:lottie_loop="true"
app:lottie_rawRes="@raw/wenjian" />
</FrameLayout>
<include layout="@layout/title_bar_layout"/> <include layout="@layout/title_bar_layout"/>
......
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:background="@mipmap/notification_bg"
android:layout_height="wrap_content">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="vertical">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="28dp"
android:src="@mipmap/notification_antivirus"/>
<TextView
android:layout_marginTop="15sp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Timed completion of virus detection"
android:textColor="@color/black"
android:textStyle="bold"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Complete virus detection to protect phone privacy"
android:textColor="@color/black"/>
<FrameLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@mipmap/notification_button">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/white"
android:text="Scan"
android:layout_gravity="center"/>
</FrameLayout>
</LinearLayout>
</RelativeLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:background="@mipmap/notification_bg"
android:layout_height="wrap_content">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="vertical">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="28dp"
android:src="@mipmap/notifacation_battery"/>
<TextView
android:layout_marginTop="15sp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="View detailed battery status"
android:textColor="@color/black"
android:textStyle="bold"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:text="Check the condition of the battery to maintain its \nhealthy use"
android:textColor="@color/black"/>
<FrameLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@mipmap/notification_button">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/white"
android:text="Scan"
android:layout_gravity="center"/>
</FrameLayout>
</LinearLayout>
</RelativeLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:background="@mipmap/notification_bg"
android:layout_height="wrap_content">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="vertical">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="28dp"
android:src="@mipmap/notification_files"/>
<TextView
android:layout_marginTop="15sp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Scan large files on your phone"
android:textColor="@color/black"
android:textStyle="bold"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Scan existing large fles to free up occupied storage"
android:textColor="@color/black"/>
<FrameLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@mipmap/notification_button">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/white"
android:text="Scan"
android:layout_gravity="center"/>
</FrameLayout>
</LinearLayout>
</RelativeLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:background="@mipmap/notification_bg"
android:layout_height="wrap_content">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="vertical">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="28dp"
android:src="@mipmap/notification_clean"/>
<TextView
android:layout_marginTop="15sp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Scan junk fles daily"
android:textColor="@color/black"
android:textStyle="bold"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Timely clean storage and maintain storage space"
android:textColor="@color/black"/>
<FrameLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@mipmap/notification_button">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/white"
android:text="Clean"
android:layout_gravity="center"/>
</FrameLayout>
</LinearLayout>
</RelativeLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:background="@mipmap/notification_bg"
android:layout_height="wrap_content">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="vertical">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="28dp"
android:src="@mipmap/notification_image"/>
<TextView
android:layout_marginTop="15sp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Scan similar images on your phone"
android:textColor="@color/black"
android:textStyle="bold"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Scan similar pictures to free up occupied storage"
android:textColor="@color/black"/>
<FrameLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@mipmap/notification_button">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/white"
android:text="Scan"
android:layout_gravity="center"/>
</FrameLayout>
</LinearLayout>
</RelativeLayout>
\ No newline at end of file
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