2013-03-27 20 views
0

捉迷藏我有一個Panel類,它擴展SurfaceView。該面板填補了我的整個活動。在面板內部,我繪製了一個球 - 位圖(和其他一些東西(線條/方塊))。如何調整位圖,而在Android的

我想補充一些僞深度。類似於2.5D,不是真正的3D,而是一種。但是現在我面臨一個問題,當球進入深度時,我不知道如何重新調整它的大小。因爲球不斷前後移動(左/右,上/下)。

我不知道在哪裏閱讀,但我認爲如果我將位圖添加到ImageView,這將解決我所有的問題。

我的第一個問題,這是否即使解決我的問題?如果不是,我還能如何解決它。

我的第二個問題是,我怎麼添加ImageviewSurfaceView

我在這裏發現了一些很好的提示:Implement a ImageView to a SurfaceView 但它只說明要做什麼,而不是如何去做。因爲我的活動沒有任何反應。一切都發生在我的Panel

回答

0

我認爲答案給了我一個問題可以幫助你:Unable to draw on top of a custom SurfaceView class。將ImageView添加到SurfaceView是不可能的,因爲SurfaceView不會擴展ViewGroup類,但正如答案所顯示的那樣,在SurfaceView的頂部繪圖很簡單。

在這個問題,我有叫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); 
+0

我遇到了同樣的解決方案。但這樣我會不斷製作新的Bitmap對象。這是我試圖避免的。但是,如果我總是創造新的物體,也許它不是那麼大的問題?! – Aqua 2013-03-27 20:12:25

+0

據我所知,這是做到這一點的唯一方法。我的應用程序不斷創建新對象,並且在我看到它運行的設備上似乎沒有任何性能問題。但是,如果您只是縮放而不旋轉對象,則可以事先創建所有可能的縮放對象並將其放入數組中。只要不佔用太多內存,這會提高性能。 – Stochastically 2013-03-28 07:15:47

+0

如果恐懼是垃圾收集器,該怎麼辦?由於這是我的第一個android項目,我聽說GC是我最大的敵人... – Aqua 2013-03-28 14:26:00

相關問題