【问题标题】:Get canvas size in custom view with hardwareAcceleration set to false在硬件加速设置为 false 的自定义视图中获取画布大小
【发布时间】:2017-11-30 12:37:10
【问题描述】:

当我在AndroidManifest.xmlhardwareAccelerated="false" 中将硬件加速设置为false 时,canvas.getWidth()canvas.getHeight() 方法会退回到一个奇怪的行为:

@Override
protected void onDraw(Canvas canvas) {
    int h = canvas.getHeight();
    int w = canvas.getWidth();
}
  • 如果硬件加速开启h = 视图高度 & w = 视图宽度(例如 500x500)

  • 如果硬件加速关闭h = 屏幕高度 & w = 屏幕宽度(例如 1080x1920)

hardwareAccelerationfalse 时,我如何获得视图的尺寸?

【问题讨论】:

    标签: java android android-canvas android-view android-custom-view


    【解决方案1】:

    hardwareAccelerationfalse 时,我如何获得视图的尺寸?

    画布大小与View 的大小无关。如果你想获得onDraw() 中视图的大小,可以使用getMeasuredWidth()/getMeasuredHeight()

    【讨论】:

    • 但是为什么hardwareAcceleration为真时返回视图大小?
    • 无法回答该问题。这似乎是我们作为开发人员不应该依赖的实现细节。你的用例是什么?为什么你需要底层 Canvas 的大小而不是 View 的大小?
    • 我不需要完全区分这两种尺寸。我的绘制方法依赖于视图的 px 宽度和高度,因为在内部我使用百分比值绘制。因此我需要精确测量宽度和高度。 getMeasuredWidth()getMeasuredHeight() 可能工作正常,我会在几分钟内尝试
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-05-29
    • 2011-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-24
    • 1970-01-01
    相关资源
    最近更新 更多