1

MainActivity があり、ImageView を拡張する MainActivity 内にカスタム TouchView オブジェクトがあります。私のプロジェクトでは 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() にブレークポイントを設定すると、layout() で設定した 3264*2448 ではない TouchView オブジェクトの幅と高さが常に取得されます。これは、onDraw() の前に TouchView のサイズが変更されたことを意味します。私が得た幅と高さは480 * 320(実際の画面サイズ)です。

どうすれば正確に取得できますかsize(3264*2448)?

ありがとう!

4

1 に答える 1

0

私はこの質問を自分で殺しました。次のように onMeasure() をオーバーライドします。

 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);
 }

私にとってはうまく機能します。潜在的なバグはありません。

于 2012-10-15T13:56:28.340 に答える