diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index fc8f696..c7bbed9 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -25,6 +25,7 @@ android:supportsRtl="true" android:theme="@style/Theme.Inbound" android:usesCleartextTraffic="true" + android:largeHeap="true" tools:targetApi="31"> ? = null @@ -131,7 +134,7 @@ class FoodCollectionActivity : ComponentActivity() { cameraUtils.setPreviewController(previewView) binding.btnBack.setOnClickListener { finish() } binding.rvFoodCollection.let { - it.layoutManager = GridLayoutManager(this, 3, GridLayoutManager.VERTICAL, false) + it.layoutManager = GridLayoutManager(this, 4, GridLayoutManager.VERTICAL, false) it.adapter = collectionAdapter } @@ -251,6 +254,9 @@ class FoodCollectionActivity : ComponentActivity() { @SuppressLint("NotifyDataSetChanged") private fun clearData() { + val count = collectList.count { it.imageFile !=null } + if (count == 0) return + clearCoilCache(this) collectList.forEach { try { if (it.bitmap?.isRecycled?.not() == true) { @@ -574,6 +580,19 @@ class FoodCollectionActivity : ComponentActivity() { tvTip?.text = tip } + /** + * 清除Coil缓存 + */ + @OptIn(ExperimentalCoilApi::class) + fun clearCoilCache(context: Context) { + val imageLoader = ImageLoader.Builder(context).build() + // 清除内存缓存 + imageLoader.memoryCache?.clear() + // 清除磁盘缓存 + imageLoader.diskCache?.clear() + } + + data class RespData( var code: String? = null, var data: String? = null, diff --git a/app/src/main/java/com/sw/inbound/activity/GoodsListActivity.kt b/app/src/main/java/com/sw/inbound/activity/GoodsListActivity.kt index cb37bb5..81345b0 100644 --- a/app/src/main/java/com/sw/inbound/activity/GoodsListActivity.kt +++ b/app/src/main/java/com/sw/inbound/activity/GoodsListActivity.kt @@ -164,6 +164,9 @@ abstract class GoodsListActivity : ComponentActivity() { binding.btnClearZero.setOnClickListener { SensorScaleUtils.tare() } + + //val array = arrayOf("1","2","qwe") + //Timber.tag(TAG).d("测试:${array[2].toInt()}") } private var weightCallback: ((weight: Int) -> Unit)? = null @@ -183,7 +186,7 @@ abstract class GoodsListActivity : ComponentActivity() { binding.tvTotalWeight.text = "重量:${weight}克" } if (weight < 200) { - if (abs(weight) < 10) { + if (weight < 10) { // val clazzName = DialogManager.getDialogList() // .map { it.javaClass.simpleName } // .joinToString(",") diff --git a/app/src/main/java/com/sw/inbound/adapter/FoodCollectionAdapter.kt b/app/src/main/java/com/sw/inbound/adapter/FoodCollectionAdapter.kt index 6caa2e2..61a0b6e 100644 --- a/app/src/main/java/com/sw/inbound/adapter/FoodCollectionAdapter.kt +++ b/app/src/main/java/com/sw/inbound/adapter/FoodCollectionAdapter.kt @@ -8,6 +8,8 @@ import android.view.ViewGroup import android.widget.ImageView import androidx.core.net.toUri import coil.load +import coil.transform.CircleCropTransformation +import coil.transform.RoundedCornersTransformation import com.chad.library.adapter4.BaseQuickAdapter import com.chad.library.adapter4.viewholder.QuickViewHolder import com.sw.inbound.R @@ -34,14 +36,21 @@ class FoodCollectionAdapter (var list: MutableList) : binding.ivDelete.visibility = if (it.isShowCamera) View.GONE else View.VISIBLE binding.imageView.run { if (it.isShowCamera) { - scaleType = ImageView.ScaleType.CENTER - setImageResource(R.mipmap.ic_camera256) + load(null) + postDelayed({ + scaleType = ImageView.ScaleType.CENTER + setImageResource(R.mipmap.ic_camera256) + },100) } else { scaleType = ImageView.ScaleType.FIT_CENTER //setImageURI(it.imageUri) - //load(it.bitmap) +// load(it.bitmap) // setImageBitmap(it.bitmap!!) - setImageURI(it.imageFile?.toUri()) + //setImageURI(it.imageFile?.toUri()) + load(it.imageFile?.toUri()) { + crossfade(true) + transformations(RoundedCornersTransformation(5f,5f,5f,5f)) + } } } } diff --git a/app/src/main/java/com/sw/inbound/dialog/AddGoodsDialog.kt b/app/src/main/java/com/sw/inbound/dialog/AddGoodsDialog.kt index 1efd4db..674598b 100644 --- a/app/src/main/java/com/sw/inbound/dialog/AddGoodsDialog.kt +++ b/app/src/main/java/com/sw/inbound/dialog/AddGoodsDialog.kt @@ -25,6 +25,7 @@ import com.sw.inbound.utils.CameraUtils import com.sw.inbound.utils.ImageUtil import com.sw.inbound.utils.ext.dp import com.sw.inbound.utils.ext.gone +import com.sw.inbound.utils.ext.hideKeyboard import com.sw.inbound.utils.ext.toast import com.sw.inbound.utils.ext.visible import kotlin.math.min @@ -152,6 +153,7 @@ class AddGoodsDialog( block: (DictType) -> Unit = {} ) { dropdownView.setOnClickListener { v -> + v.hideKeyboard() dropdownList.clear() val tempList = list.filter { it.id.isNullOrBlank().not() && it.value.isNullOrBlank().not() } diff --git a/app/src/main/java/com/sw/inbound/ui/weight/TopTitleBar.kt b/app/src/main/java/com/sw/inbound/ui/weight/TopTitleBar.kt index 1994788..1e8e077 100644 --- a/app/src/main/java/com/sw/inbound/ui/weight/TopTitleBar.kt +++ b/app/src/main/java/com/sw/inbound/ui/weight/TopTitleBar.kt @@ -115,12 +115,12 @@ fun TopTitleBar( } } else { Text( - modifier = Modifier.combinedClickable( - onClick = {}, - onLongClick = { - onLogoutClick() - } - ), +// modifier = Modifier.combinedClickable( +// onClick = {}, +// onLongClick = { +// onLogoutClick() +// } +// ), text = currentTime, style = TextStyle( fontWeight = FontWeight.Medium, diff --git a/app/src/main/java/com/sw/inbound/utils/CrashHandler.kt b/app/src/main/java/com/sw/inbound/utils/CrashHandler.kt index 4070230..cdf84fe 100644 --- a/app/src/main/java/com/sw/inbound/utils/CrashHandler.kt +++ b/app/src/main/java/com/sw/inbound/utils/CrashHandler.kt @@ -203,19 +203,28 @@ class CrashHandler private constructor(private val context: Context) : } } + private fun saveLog(logInfo:String) { + val time = SimpleDateFormat("yyyy-MM-dd_HH-mm-ss", Locale.getDefault()).format(Date()) + val fileName = "crash_$time.log" + + val crashDir = getCrashDir() + + val crashFile = File(crashDir, fileName) + FileOutputStream(crashFile).use { it.write(logInfo.toByteArray()) } + + Timber.tag(TAG).d("Crash info saved to: ${crashFile.absolutePath}") + } + private fun saveCrashInfoToFile(crashInfo: String) { try { - val time = SimpleDateFormat("yyyy-MM-dd_HH-mm-ss", Locale.getDefault()).format(Date()) - val fileName = "crash_$time.log" - - val crashDir = getCrashDir() - - val crashFile = File(crashDir, fileName) - FileOutputStream(crashFile).use { it.write(crashInfo.toByteArray()) } - - Timber.tag(TAG).d("Crash info saved to: ${crashFile.absolutePath}") + saveLog(crashInfo) } catch (e: Exception) { Timber.tag(TAG).e(e, "Error saving crash info to file") + try { + saveLog("Error saving crash info to file:${e.message}") + } catch (e: Exception) { + Timber.tag(TAG).e(e, "save exception") + } } } diff --git a/app/src/main/java/com/sw/inbound/utils/PhotoCaptureHelper.kt b/app/src/main/java/com/sw/inbound/utils/PhotoCaptureHelper.kt index 6c2ed72..e30c626 100644 --- a/app/src/main/java/com/sw/inbound/utils/PhotoCaptureHelper.kt +++ b/app/src/main/java/com/sw/inbound/utils/PhotoCaptureHelper.kt @@ -82,7 +82,7 @@ class PhotoCaptureHelper( } Timber.e(exception, errorMsg) - onError(errorMsg) + onError("拍照失败") } } ) diff --git a/app/src/main/res/layout/list_item_food_collection.xml b/app/src/main/res/layout/list_item_food_collection.xml index 2567322..3bff1b7 100644 --- a/app/src/main/res/layout/list_item_food_collection.xml +++ b/app/src/main/res/layout/list_item_food_collection.xml @@ -1,7 +1,7 @@ @@ -18,8 +18,7 @@ android:layout_width="50dp" android:layout_height="50dp" android:layout_gravity="end|top" - android:paddingTop="10dp" - android:paddingBottom="10dp" + android:padding="13dp" android:src="@mipmap/ic_delete_red"/>