[bugfix]
[滑动图片内存过大后重新decode]
This commit is contained in:
yangyakun
2024-03-28 14:26:50 +08:00
parent d804bf82e1
commit e5838c0aef
2 changed files with 24 additions and 8 deletions

View File

@@ -19,8 +19,11 @@ import android.view.View
import android.view.animation.DecelerateInterpolator
import com.magic.mogo.och.charter.R
import com.mogo.commons.AbsMogoApplication
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
import com.mogo.eagle.core.utilcode.util.ConvertUtils
import com.mogo.eagle.core.utilcode.util.ThreadUtils
import com.mogo.eagle.core.utilcode.util.UiThreadHandler
import com.mogo.och.common.module.manager.orderlogmanager.OchChainLogManager
import me.jessyan.autosize.AutoSizeConfig
import me.jessyan.autosize.utils.AutoSizeUtils
@@ -93,6 +96,9 @@ class SlidePanelView @JvmOverloads constructor(
textGradient!!.setLocalMatrix(gradientMatrix)
textPaint.shader = textGradient
textPaint.getFontMetrics(blockTextMetrics)
decodeImage()
}
fun decodeImage(){
ThreadUtils.getIoPool().execute {
val size = AutoSizeUtils.dp2px(context, 120f)
val opts = BitmapFactory.Options()
@@ -227,13 +233,24 @@ class SlidePanelView @JvmOverloads constructor(
)
canvas.restore()
// 画滑块
canvas.drawBitmap(
bmBlock!!,
(BLOCK_START_X + blockOffset).toFloat(),
BLOCK_START_Y.toFloat(),
blockPaint
)
bmBlock?.let {
if(it.byteCount >=5*1024*1024){
OchChainLogManager.writeChainLog("崩溃兜底策略",
"图片大小监听"+ ConvertUtils.byte2FitMemorySize(it.byteCount.toLong()),true,OchChainLogManager.EVENT_KEY_INFE_ERROR);
it.recycle();
bmBlock = null;
blockWidth = 0;
decodeImage();
}else {
// 画滑块
canvas.drawBitmap(
bmBlock!!,
(BLOCK_START_X + blockOffset).toFloat(),
BLOCK_START_Y.toFloat(),
blockPaint
)
}
}
}
}

View File

@@ -287,7 +287,6 @@ public class SlidePanelView extends View {
}else {
// 画滑块
canvas.drawBitmap(bmBlock, (float) (BLOCK_START_X + blockOffset), (float) BLOCK_START_Y, blockPaint);
CallerLogger.d(TAG,"图片大小监听"+ ConvertUtils.byte2FitMemorySize(bmBlock.getByteCount()));
}
}