0

Panelを拡張するクラスがありますSurfaceView。パネルは私の活動全体を満たしています。パネル内で、ボール - ビットマップ (およびその他のもの (線/正方形)) を描画します。

疑似深度を追加します。2.5 D のようなもので、実際には 3D ではありませんが、そのようなものです。しかし、今私は問題に直面しています。ボールが深くなると、サイズを変更する方法がわかりません。ボールは常に前後に (左右、上下も) 動いているためです。

それについてどこで読むべきかわかりませんが、ビットマップを に追加すると、ImageViewすべての問題が解決すると思います。

私の最初の質問ですが、これで問題は解決しますか? そうでない場合は、他にどのように解決できますか。

Imageview2 番目の質問は、 に を追加するにはどうすればよいSurfaceViewですか?

ここでいくつかの良いヒントを見つけました:ImageViewをSurfaceViewに実装します が、それは何をすべきかだけを示しており、それを行う方法は示していません。私の活動では何も起こらないからです。すべてが私の中で起こりPanelます。

4

1 に答える 1

0

私の質問の 1 つに対する答えが役立つと思います: Unable to draw on top of a custom SurfaceView class。SurfaceView は ViewGroup クラスを拡張しないため、ImageView を SurfaceView に追加することはできませんが、その答えが示すように、SurfaceView の上に描画するのは簡単です。

その質問では、View から直接継承した DrawOnTop というカスタム ビューがあり、そのビューのキャンバスにサイズ変更および回転したビットマップを問題なく描画しました。私の推測では、ボール オブジェクトでも同じことができると思います。私が使用したコードは次のとおりです。

Bitmap bitmapOrg = BitmapFactory.decodeResource(getResources(), R.drawable.bitmap);
int bitmapOrg_width = bitmapOrg.getWidth();
int bitmapOrg_height = bitmapOrg.getHeight();

float bitmapScaleFactor = 1.5;   // to create a resized bitmap 50% bigger
float angle = 90;                // to rotate by 90 degrees

Matrix matrix = new Matrix();
// resize the bit map
matrix.postScale(bitmapScaleFactor, bitmapScaleFactor);
// rotate the Bitmap
matrix.postRotate(angle);
// create the resized bitmap
Bitmap resizedBitmap = Bitmap.createBitmap(bitmapOrg, 0, 0, bitmapOrg_width, bitmapOrg_height, matrix, true);
canvas.drawBitmap(resizedBitmap, left, top, null);
于 2013-03-27T17:08:39.783 に答える