スレッドを使用してカスタム サーフェス ビュー クラスを作成し、相対レイアウト内のメイン アクティビティにカスタム サーフェス ビューを追加しました。ここで、カスタム サーフェス ビュー クラス コンストラクターでビットマップを宣言します。
public static Bitmap mbitmap;
public Surface(Context ctx, AttributeSet attrSet) {
super(ctx, attrSet);
context = ctx;
mbitmap = BitmapFactory.decodeResource(context.getResources(), R.drawable.abc);
SurfaceHolder holder = getHolder();
holder.addCallback(this);
}
そして私はそれをキャンバスに描いた
public void doDraw(Canvas canvas) {
canvas.drawBitmap(mbitmap, 0, 0, null);
}
成功した図面を取得します。しかし、それは画面全体を占有します
<RelativeLayout
android:id="@+id/outer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<com.cg.Surface
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<RelativeLayout
android:id="@+id/processing_layout"
android:layout_width="match_parent"
android:layout_height="match_parent" >
</RelativeLayout>
</RelativeLayout>
高さと幅に Wrap_Content を使用しても、画面全体が背面に描画されます。適切なサイズだけでビットマップ画像を描画するには? Custom Surface View Class のこのオーバーライドメソッドでそれは可能ですか:
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height)
{ }
その中でsetMeasuredDimensionを使用し、ビットマップ内のサーフェスビューのサイズを制限する方法がない場合?