在我的自定义视图的.xml,我已定义宽度和高度w = 600dp , h = 700dp
。 现在我知道图绘后getMeasuredHeight()/ getMeasuredWidth()给宽度和高度的价值,他们可以从我的.xml文件已经给什么不同,有一种解决方法获得getMeasuredHeight()
和getMeasuredWidth()
前值观点实际上是吸取了布局,而无需使用onMeasure()
以及如何计算改变了dp
在不同的屏幕尺寸? 像我600h*700w
当在模拟器上运行转换为300*300
。
您可以覆盖onSizeChanged()
来获取视图的高度和宽度,当它低于drawn.refer:
@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
mWidth = w;
mHeight = h;
super.onSizeChanged(w, h, oldw, oldh);
Log.d(TAG, "onSizeChanged: " + " width: " + w + " height: " + h + " oldw " + oldw + " oldh " + oldh);
}
为了DP转换为像素,您可以使用下面的代码:
sizeInPixels = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,
sizeInDp, getResources().getDisplayMetrics());