[英]Scaling Android drawable resource
我正在制作一個簡單的棋盤游戲,它使用一個表格視圖和一個按鈕陣列作為棋盤方塊。 我的movePlayer接受目標行和列,將令牌放置在該行和列中,並用按鈕替換其先前位置。
我的movePlayer方法是:
private void movePlayer(int moveToRow, int moveToCol, Button buttons[][])
{
int oldRow = player.getPlayerRow();
int oldCol = player.getPlayerCol();
Button oldPosition = buttons[oldRow][oldCol];
int oldWidth = oldPosition.getWidth();
int oldHeight = oldPosition.getHeight();
Bitmap originalBitmap = BitmapFactory.decodeResource(getResources(),
android.R.drawable.btn_default);
Bitmap scaledBitmap = Bitmap.createScaledBitmap(originalBitmap, oldWidth, oldHeight, true);
Resources resource = getResources();
oldPosition.setBackground(new BitmapDrawable(resource, scaledBitmap));
player.setPlayerRow(moveToRow);
player.setPlayerCol(moveToCol);
addPlayerToken(moveToRow, moveToCol, buttons);
}
我收到error java.lang.NullPointerException: Attempt to invoke virtual method 'int android.graphics.Bitmap.getWidth()' on a null object reference at android.graphics.Bitmap.createScaledBitmap(Bitmap.java:596) at foo.bar.minions.GameBoard.movePlayer(GameBoard.java:219)
。
如果我將R.drawable.foo
類的android.R.drawable.btn_default
替換為可繪制對象,則此代碼有效。
如果我用oldPosition.setBackgroundResource(android.R.drawable.btn_default);
替換int oldWidth
以下的所有內容,該代碼也將起作用oldPosition.setBackgroundResource(android.R.drawable.btn_default);
但該按鈕縮放比例不正確或與其他按鈕看起來不一樣。 作為參考,我使用tableRow.addView(button);
創建我的按鈕。
我該怎么做才能使按鈕看起來一樣?
修復它,問題是因為使用tableRow.addView(button);
繪制的tableRow.addView(button);
與android.R.drawable.btn_default
圖片不同,因此此修復僅添加了button.setBackgroundResource(android.R.drawable.btn_default);
到tableRow.addView(button);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.