我有一个MainActivity,我在MainActivity中有一个自定义TouchView对象,它扩展了ImageView。在我的项目中没有使用XML布局,我在MainActivity的onCreate()中有以下几行:
...
myTouchView = new TouchView();
myTouchView.layout(0,0,bitmap.getWidth(),bitmap.getHeight());//bitmap W*H: 3264*2448
MainActivity.this.setContentView(myTouchView);
...
然后我在TouchView的onDraw()中设置一个断点,在那里我总是得到TouchView对象的宽度和高度,而不是我在layout()上设置的3264 * 2448。这意味着在onDraw()之前我的TouchView的大小已经改变。我得到的宽度和高度是480 * 320(实际上是屏幕尺寸)。
如何获得正确的size(3264*2448)?
谢谢!
答案 0 :(得分:0)
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec){
int parentWidth = MeasureSpec.getSize(widthMeasureSpec);
int parentHeight = MeasureSpec.getSize(heightMeasureSpec);
if(parentWidth == bmp.getWidth() && parentHeight == bmp.getHeight())
super.onMeasure(idthMeasureSpec, heightMeasureSpec);
else
this.setMeasuredDimension(parentWidth/2, parentHeight);
}
适合我,任何潜在的错误。