android - 重绘部分视图 OnDraw(canvas: Canvas)
问题描述
我有一个视图,它的图像分为四层,但是当我使视图无效()时,更改只会更新其中一层。我的应用程序性能不佳,因为每次调用 invalidate() 时,onDraw() 都会为图层绘制所有内容。我只想重绘具有参数更改的图层。有可能吗?
private enum class Layer(val resource: Int) {
BACKGROUND(R.drawable.ic_compass_background),
MID(R.drawable.ic_compass_mid_layer),
WIND_ROSE(R.drawable.ic_compass_outline),
AIRCRAFT_HEADING(R.drawable.ic_compass_aircraft_heading)
}
override fun onDraw(canvas: Canvas) {
super.onDraw(canvas)
canvas.save()
canvas.drawBitmap(getBitmap(Layer.BACKGROUND), getMatrix(getBitmap(Layer.BACKGROUND)), null)
canvas.drawBitmap(getBitmap(Layer.MID), getMatrix(getBitmap(Layer.MID)), null)
canvas.drawBitmap(getBitmap(Layer.WIND_ROSE), getMatrix(getBitmap(Layer.WIND_ROSE), 90f), null)
canvas.drawBitmap(getBitmap(Layer.AIRCRAFT_HEADING), getMatrix(getBitmap(Layer.AIRCRAFT_HEADING), headingAngle), null)
canvas.restore()
}
fun turnHeadingRotation(angle: Float) {
if (headingAngle != angle) {
this.headingAngle = angle
invalidate()
}
}
解决方案
推荐阅读
- swift - 无法将 Sign In with Apple 连接到 Firebase
- javascript - 单击列表元素后更改输入值
- javascript - useQuery : 没有获取数据
- java - 如何判断当前会话是否脏?
- android-studio - 如何解决应用程序:android studio中的mergeDebugResources执行失败错误
- typescript - 需要帮助来发布 NPM Typescript 包
- flutter - DioError [DioErrorType.DEFAULT]:将对象转换为可编码对象失败:Flutter 中的“FormData”实例
- wordpress - 如何将列表项添加到 wordpress 中的单个产品页面
- jira - JQL - 如何按类型过滤链接问题?
- python - PySAL 和 spatstat 有什么区别?