簡體   English   中英

縮放Android可繪制資源

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM