Commit ef567503 authored by wanglei's avatar wanglei

图片卡顿

parent 1fa11825
...@@ -97,4 +97,6 @@ dependencies { ...@@ -97,4 +97,6 @@ dependencies {
// compile(name:'trustlook_cleanjunk_sdk_release_3.0.4.20240322',ext:'aar') // compile(name:'trustlook_cleanjunk_sdk_release_3.0.4.20240322',ext:'aar')
implementation files('libs/trustlook_cleanjunk_sdk_release_3.0.4.20240322.aar') implementation files('libs/trustlook_cleanjunk_sdk_release_3.0.4.20240322.aar')
implementation files('libs/cloudscan_sdk_5.0.5.20240306.aar') implementation files('libs/cloudscan_sdk_5.0.5.20240306.aar')
implementation("com.github.bumptech.glide:glide:4.15.1")
} }
...@@ -13,6 +13,8 @@ import androidx.lifecycle.ViewModelProvider ...@@ -13,6 +13,8 @@ import androidx.lifecycle.ViewModelProvider
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.adapter.MediaAdapter import com.xm.test.myfilemaster.adapter.MediaAdapter
import com.xm.test.myfilemaster.adapter.MediaAdapter2
import com.xm.test.myfilemaster.databinding.ActivityMediaBinding
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
...@@ -31,8 +33,11 @@ class MediaActivity : AppCompatActivity() { ...@@ -31,8 +33,11 @@ class MediaActivity : AppCompatActivity() {
private lateinit var mTitleTv: TextView private lateinit var mTitleTv: TextView
lateinit var mItemCheckedArray: SparseBooleanArray lateinit var mItemCheckedArray: SparseBooleanArray
private var mItemDataList = ArrayList<FileBean>() private var mItemDataList = ArrayList<FileBean>()
private var mItemAdapter: MediaAdapter? =null private lateinit var binding: ActivityMediaBinding
// private var mItemAdapter: MediaAdapter? = 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>()
...@@ -40,27 +45,28 @@ class MediaActivity : AppCompatActivity() { ...@@ -40,27 +45,28 @@ class MediaActivity : AppCompatActivity() {
private lateinit var mModel: BaseActivityViewModel private lateinit var mModel: BaseActivityViewModel
val mFileTypeBeanList : ArrayList<String> = ArrayList() val mFileTypeBeanList: ArrayList<String> = ArrayList()
var mShowBeanData: ArrayList<String> = ArrayList() var mShowBeanData: ArrayList<String> = ArrayList()
var mStartNumber: Int = 0 var mStartNumber: Int = 0
var mIsCheckClick = false var mIsCheckClick = false
companion object{ companion object {
var isClickEditBtn = false var isClickEditBtn = false
} }
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
setContentView(R.layout.activity_media) binding = ActivityMediaBinding.inflate(layoutInflater)
setContentView(binding.root)
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)
...@@ -81,17 +87,19 @@ class MediaActivity : AppCompatActivity() { ...@@ -81,17 +87,19 @@ class MediaActivity : AppCompatActivity() {
mItemCheckedArray = SparseBooleanArray() mItemCheckedArray = SparseBooleanArray()
val fileType = intent.getStringExtra("fileType").toString() val fileType = intent.getStringExtra("fileType").toString()
mItemAdapter = MediaAdapter(mItemDataList, this, mItemCheckedArray, fileType, 118) // mItemAdapter = MediaAdapter(mItemDataList, this, mItemCheckedArray, fileType, 118)
mGridView.adapter = mItemAdapter mItemAdapter = MediaAdapter2()
// mGridView.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, fileType, 20)
runOnUiThread { runOnUiThread {
mItemAdapter?.setData(mItemDataList)
WaitDialog.dismiss() WaitDialog.dismiss()
for (fileBean in mItemDataList){ for (fileBean in mItemDataList) {
mDataList.add(fileBean.filePath) mDataList.add(fileBean.filePath)
} }
mItemAdapter?.setData(mItemDataList)
} }
}).start() }).start()
...@@ -131,31 +139,31 @@ class MediaActivity : AppCompatActivity() { ...@@ -131,31 +139,31 @@ class MediaActivity : AppCompatActivity() {
} }
} }
private fun setOnGridViewItemClickListener(){ private fun setOnGridViewItemClickListener() {
mGridView.setOnItemClickListener { parent, view, position, id -> // mGridView.setOnItemClickListener { parent, view, position, id ->
if (isClickEditBtn){ // if (isClickEditBtn) {
updateCheckBoxStatus(view, position) // updateCheckBoxStatus(view, position)
}else{ // } else {
//TODO 点击进入图片或视频播放 // //TODO 点击进入图片或视频播放
} // }
} // }
} }
private fun setStateCheckedMap(isChecked: Boolean){ private fun setStateCheckedMap(isChecked: Boolean) {
for(i in mDataList.indices){ for (i in mDataList.indices) {
mItemCheckedArray.put(i, isChecked) mItemCheckedArray.put(i, isChecked)
mGridView.setItemChecked(i, isChecked) mGridView.setItemChecked(i, isChecked)
} }
} }
private fun updateCheckBoxStatus(view: View, position: Int){ private fun updateCheckBoxStatus(view: View, position: Int) {
val viewHolder = view.tag as MediaAdapter.ViewHolder val viewHolder = view.tag as MediaAdapter.ViewHolder
viewHolder.checkedBox.toggle() viewHolder.checkedBox.toggle()
mGridView.setItemChecked(position, viewHolder.checkedBox.isChecked) mGridView.setItemChecked(position, viewHolder.checkedBox.isChecked)
mItemCheckedArray.put(position, viewHolder.checkedBox.isChecked) mItemCheckedArray.put(position, viewHolder.checkedBox.isChecked)
if (viewHolder.checkedBox.isChecked){ if (viewHolder.checkedBox.isChecked) {
mCheckedDataList.add(mDataList[position]) mCheckedDataList.add(mDataList[position])
}else{ } else {
mCheckedDataList.remove(mDataList[position]) mCheckedDataList.remove(mDataList[position])
} }
mItemAdapter?.notifyDataSetChanged() mItemAdapter?.notifyDataSetChanged()
...@@ -163,14 +171,14 @@ class MediaActivity : AppCompatActivity() { ...@@ -163,14 +171,14 @@ class MediaActivity : AppCompatActivity() {
mModel.setNumber(mCheckedNumber) mModel.setNumber(mCheckedNumber)
} }
private fun selectAll(){ private fun selectAll() {
mCheckedDataList.clear() mCheckedDataList.clear()
mCheckedNumber = if (mIsCheckClick){ mCheckedNumber = if (mIsCheckClick) {
setStateCheckedMap( true) setStateCheckedMap(true)
mCheckedDataList.addAll(mDataList) mCheckedDataList.addAll(mDataList)
mCheckedDataList.size mCheckedDataList.size
}else{ } else {
setStateCheckedMap( false) setStateCheckedMap(false)
0 0
} }
mModel.setNumber(mCheckedNumber) mModel.setNumber(mCheckedNumber)
...@@ -179,9 +187,9 @@ class MediaActivity : AppCompatActivity() { ...@@ -179,9 +187,9 @@ class MediaActivity : AppCompatActivity() {
override fun onBackPressed() { override fun onBackPressed() {
mItemAdapter?.notifyDataSetChanged() mItemAdapter?.notifyDataSetChanged()
if (isClickEditBtn){ if (isClickEditBtn) {
cancelBtn() cancelBtn()
}else{ } else {
super.onBackPressed() super.onBackPressed()
} }
} }
......
package com.xm.test.myfilemaster.adapter
import android.annotation.SuppressLint
import android.content.Context
import android.util.SparseBooleanArray
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.BaseAdapter
import android.widget.CheckBox
import android.widget.ImageView
import androidx.recyclerview.widget.RecyclerView
import com.bumptech.glide.Glide
import com.xm.test.myfilemaster.R
import com.xm.test.myfilemaster.activity.MediaActivity
import com.xm.test.myfilemaster.databinding.ItemImageVideoBinding
import com.xm.test.myfilemaster.model.FileBean
import com.xm.test.myfilemaster.util.FileUtil
class MediaAdapter2 : RecyclerView.Adapter<MediaAdapter2.CCC>() {
private var mListData: ArrayList<FileBean> = arrayListOf()
fun Int.inflate(parent: ViewGroup, attachToRoot: Boolean = false): View {
return LayoutInflater.from(parent.context).inflate(this, parent, attachToRoot)
}
class CCC(view: View) : RecyclerView.ViewHolder(view) {
val binding = ItemImageVideoBinding.bind(view)
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): CCC {
return CCC(R.layout.item_image_video.inflate(parent))
}
override fun getItemCount(): Int {
return mListData.size
}
override fun onBindViewHolder(holder: CCC, position: Int) {
val data = mListData[position]
val context = holder.binding.root.context
Glide.with(context).load(data.filePath).centerCrop().into(holder.binding.ivMedia)
}
@SuppressLint("NotifyDataSetChanged")
fun setData(datas: List<FileBean>) {
mListData.clear()
mListData.addAll(datas)
notifyDataSetChanged()
}
}
\ No newline at end of file
package com.xm.test.myfilemaster.util
import android.app.Application
import com.bumptech.glide.annotation.GlideModule
@GlideModule
class GlideApp : Application() {
}
\ No newline at end of file
...@@ -3,43 +3,36 @@ ...@@ -3,43 +3,36 @@
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/main" android:id="@+id/main"
android:orientation="vertical"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".activity.MediaActivity"> tools:context=".activity.MediaActivity">
<include <include
android:id="@+id/title_bar" android:id="@+id/title_bar"
layout="@layout/title_bar_layout"/> layout="@layout/title_bar_layout" />
<!-- <ScrollView--> <!-- <ScrollView-->
<!-- android:id="@+id/grid_view_scroll"--> <!-- android:id="@+id/grid_view_scroll"-->
<!-- android:layout_width="match_parent"--> <!-- android:layout_width="match_parent"-->
<!-- android:layout_height="match_parent"--> <!-- android:layout_height="match_parent"-->
<!-- android:layout_marginTop="12dp"--> <!-- android:layout_marginTop="12dp"-->
<!-- android:layout_marginStart="16dp"--> <!-- android:layout_marginStart="16dp"-->
<!-- android:layout_marginEnd="16dp">--> <!-- android:layout_marginEnd="16dp">-->
<GridView <androidx.recyclerview.widget.RecyclerView
android:layout_marginTop="12dp" android:id="@+id/image_item_grid"
android:layout_marginStart="16dp" android:layout_width="match_parent"
android:layout_marginEnd="16dp" android:layout_height="wrap_content"
android:id="@+id/image_item_grid" android:layout_marginStart="16dp"
android:layout_width="fill_parent" android:layout_marginTop="12dp"
android:layout_height="wrap_content" android:layout_marginEnd="16dp"
android:fadingEdge="none" android:padding="1dp"
android:horizontalSpacing="1dp" app:layoutManager="androidx.recyclerview.widget.GridLayoutManager"
android:listSelector="#00000000" app:spanCount="3" />
android:padding="1dp"
android:scrollbars="none"
android:verticalSpacing="5dp" <!-- </ScrollView>-->
android:numColumns="3"
android:columnWidth="118dp"/>
<!-- </ScrollView>-->
</LinearLayout> </LinearLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="wrap_content"
android:layout_margin="15dp"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/iv_media"
android:layout_width="100dp"
android:layout_height="100dp"
tools:ignore="ContentDescription" />
</FrameLayout>
\ 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