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
=视野宽度(例如500x500)w
- 如果硬件加速关闭:
=屏幕高度&h
=屏幕宽度(例如1080x1920)w
hardwareAcceleration
为false
时,如何获取视图的维度
当hardwareAcceleration
为false
时,如何获取视图的维度
画布大小与视图的大小无关。如果要获取
onDraw()内部视图的大小,可以使用/,但为什么在hardwareAcceleration为true时返回视图大小?无法回答该问题。这似乎是一个我们作为开发人员不应该依赖的实现细节。您的用例是什么?为什么您需要底层画布的大小而不是视图的大小?我不需要精确区分这两种大小。我的on-draw方法依赖于视图的宽度和高度(以px为单位),因为在内部我使用百分比值进行绘制。因此,我需要准确测量宽度和高度getMeasuredWidth()
和getMeasuredHeight()
可能可以正常工作,我会在几分钟后试用