Commit ef567503 authored by wanglei's avatar wanglei

图片卡顿

parent 1fa11825
......@@ -97,4 +97,6 @@ dependencies {
// 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/cloudscan_sdk_5.0.5.20240306.aar')
implementation("com.github.bumptech.glide:glide:4.15.1")
}
......@@ -13,6 +13,8 @@ import androidx.lifecycle.ViewModelProvider
import com.kongzue.dialogx.dialogs.WaitDialog
import com.xm.test.myfilemaster.R
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.util.FileUtil
......@@ -32,7 +34,10 @@ class MediaActivity : AppCompatActivity() {
lateinit var mItemCheckedArray: SparseBooleanArray
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 mCheckedDataList: ArrayList<String> = ArrayList<String>()
......@@ -40,27 +45,28 @@ class MediaActivity : AppCompatActivity() {
private lateinit var mModel: BaseActivityViewModel
val mFileTypeBeanList : ArrayList<String> = ArrayList()
val mFileTypeBeanList: ArrayList<String> = ArrayList()
var mShowBeanData: ArrayList<String> = ArrayList()
var mStartNumber: Int = 0
var mIsCheckClick = false
companion object{
companion object {
var isClickEditBtn = false
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_media)
binding = ActivityMediaBinding.inflate(layoutInflater)
setContentView(binding.root)
initView()
}
@SuppressLint("ClickableViewAccessibility")
private fun initView() {
mGridView = findViewById(R.id.image_item_grid)
// mGridView = findViewById(R.id.image_item_grid)
mTitleBar = findViewById(R.id.title_bar)
mSelectBar = findViewById(R.id.switch_and_select_layout)
// mScrollView = findViewById(R.id.grid_view_scroll)
......@@ -81,17 +87,19 @@ class MediaActivity : AppCompatActivity() {
mItemCheckedArray = SparseBooleanArray()
val fileType = intent.getStringExtra("fileType").toString()
mItemAdapter = MediaAdapter(mItemDataList, this, mItemCheckedArray, fileType, 118)
mGridView.adapter = mItemAdapter
// mItemAdapter = MediaAdapter(mItemDataList, this, mItemCheckedArray, fileType, 118)
mItemAdapter = MediaAdapter2()
// mGridView.adapter = mItemAdapter
binding.imageItemGrid.adapter = mItemAdapter
Thread(Runnable {
WaitDialog.show("please wait..")
mItemDataList = FileUtil.getMediaFiles(this, fileType, 20)
runOnUiThread {
mItemAdapter?.setData(mItemDataList)
WaitDialog.dismiss()
for (fileBean in mItemDataList){
for (fileBean in mItemDataList) {
mDataList.add(fileBean.filePath)
}
mItemAdapter?.setData(mItemDataList)
}
}).start()
......@@ -131,31 +139,31 @@ class MediaActivity : AppCompatActivity() {
}
}
private fun setOnGridViewItemClickListener(){
mGridView.setOnItemClickListener { parent, view, position, id ->
if (isClickEditBtn){
updateCheckBoxStatus(view, position)
}else{
//TODO 点击进入图片或视频播放
}
}
private fun setOnGridViewItemClickListener() {
// mGridView.setOnItemClickListener { parent, view, position, id ->
// if (isClickEditBtn) {
// updateCheckBoxStatus(view, position)
// } else {
// //TODO 点击进入图片或视频播放
// }
// }
}
private fun setStateCheckedMap(isChecked: Boolean){
for(i in mDataList.indices){
private fun setStateCheckedMap(isChecked: Boolean) {
for (i in mDataList.indices) {
mItemCheckedArray.put(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
viewHolder.checkedBox.toggle()
mGridView.setItemChecked(position, viewHolder.checkedBox.isChecked)
mItemCheckedArray.put(position, viewHolder.checkedBox.isChecked)
if (viewHolder.checkedBox.isChecked){
if (viewHolder.checkedBox.isChecked) {
mCheckedDataList.add(mDataList[position])
}else{
} else {
mCheckedDataList.remove(mDataList[position])
}
mItemAdapter?.notifyDataSetChanged()
......@@ -163,14 +171,14 @@ class MediaActivity : AppCompatActivity() {
mModel.setNumber(mCheckedNumber)
}
private fun selectAll(){
private fun selectAll() {
mCheckedDataList.clear()
mCheckedNumber = if (mIsCheckClick){
setStateCheckedMap( true)
mCheckedNumber = if (mIsCheckClick) {
setStateCheckedMap(true)
mCheckedDataList.addAll(mDataList)
mCheckedDataList.size
}else{
setStateCheckedMap( false)
} else {
setStateCheckedMap(false)
0
}
mModel.setNumber(mCheckedNumber)
......@@ -179,9 +187,9 @@ class MediaActivity : AppCompatActivity() {
override fun onBackPressed() {
mItemAdapter?.notifyDataSetChanged()
if (isClickEditBtn){
if (isClickEditBtn) {
cancelBtn()
}else{
} else {
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 @@
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/main"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".activity.MediaActivity">
<include
android:id="@+id/title_bar"
layout="@layout/title_bar_layout"/>
layout="@layout/title_bar_layout" />
<!-- <ScrollView-->
<!-- android:id="@+id/grid_view_scroll"-->
<!-- android:layout_width="match_parent"-->
<!-- android:layout_height="match_parent"-->
<!-- android:layout_marginTop="12dp"-->
<!-- android:layout_marginStart="16dp"-->
<!-- android:layout_marginEnd="16dp">-->
<!-- <ScrollView-->
<!-- android:id="@+id/grid_view_scroll"-->
<!-- android:layout_width="match_parent"-->
<!-- android:layout_height="match_parent"-->
<!-- android:layout_marginTop="12dp"-->
<!-- android:layout_marginStart="16dp"-->
<!-- android:layout_marginEnd="16dp">-->
<GridView
android:layout_marginTop="12dp"
android:layout_marginStart="16dp"
android:layout_marginEnd="16dp"
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/image_item_grid"
android:layout_width="fill_parent"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fadingEdge="none"
android:horizontalSpacing="1dp"
android:listSelector="#00000000"
android:layout_marginStart="16dp"
android:layout_marginTop="12dp"
android:layout_marginEnd="16dp"
android:padding="1dp"
android:scrollbars="none"
android:verticalSpacing="5dp"
android:numColumns="3"
android:columnWidth="118dp"/>
<!-- </ScrollView>-->
app:layoutManager="androidx.recyclerview.widget.GridLayoutManager"
app:spanCount="3" />
<!-- </ScrollView>-->
</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