Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/219.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在自定义视图中获取画布大小,并将hardwareAcceleration设置为false_Java_Android_Android Canvas_Android View_Android Custom View - Fatal编程技术网

Java 在自定义视图中获取画布大小,并将hardwareAcceleration设置为false

Java 在自定义视图中获取画布大小,并将hardwareAcceleration设置为false,java,android,android-canvas,android-view,android-custom-view,Java,Android,Android Canvas,Android View,Android Custom View,当我使用hardwareAccelerated=“false”在AndroidManifest.xml中将硬件加速设置为false时,方法canvas.getWidth()或canvas.getHeight()会返回到一个奇怪的行为: @Override protected void onDraw(Canvas canvas) { int h = canvas.getHeight(); int w = canvas.getWidth(); } 如果硬件加速开启:h=视野高度&

当我使用
hardwareAccelerated=“false”
AndroidManifest.xml
中将硬件加速设置为
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)

hardwareAcceleration
false
时,如何获取视图的维度

hardwareAcceleration
false
时,如何获取视图的维度


画布大小与视图的大小无关。如果要获取
onDraw()内部视图的大小,可以使用/

,但为什么在hardwareAcceleration为true时返回视图大小?无法回答该问题。这似乎是一个我们作为开发人员不应该依赖的实现细节。您的用例是什么?为什么您需要底层
画布的大小而不是
视图的大小?我不需要精确区分这两种大小。我的on-draw方法依赖于视图的宽度和高度(以px为单位),因为在内部我使用百分比值进行绘制。因此,我需要准确测量宽度和高度
getMeasuredWidth()
getMeasuredHeight()
可能可以正常工作,我会在几分钟后试用