ANDROID:将按钮背景设置为可绘制图像时,手机速度很慢

时间:2015-03-03 23:28:59

标签: java android

基本上是标题。

我做了一个小游戏,每次玩家移动时,我都希望从新数据中重置和创建棋盘。这是我试图开始工作的代码。

    mustache = new BitmapDrawable(getResources(), BitmapFactory.decodeResource(getResources(), R.drawable.moustache));
    greenHairedPotato = new BitmapDrawable(getResources(), BitmapFactory.decodeResource(getResources(), R.drawable.greenhairedpotato));
    purpleHairedPotato = new BitmapDrawable(getResources(), BitmapFactory.decodeResource(getResources(), R.drawable.purplehairedpotato));
    redHairedPotato = new BitmapDrawable(getResources(), BitmapFactory.decodeResource(getResources(), R.drawable.redhairedpotato));
    yellowHairedPotato = new BitmapDrawable(getResources(), BitmapFactory.decodeResource(getResources(), R.drawable.yellowhairedpotato));
    angryWall = new BitmapDrawable(getResources(), BitmapFactory.decodeResource(getResources(), R.drawable.angrywall));
    blueSpace = new BitmapDrawable(getResources(), BitmapFactory.decodeResource(getResources(), R.drawable.bluespace));

这是我用于所有drawable的代码。将其调用到按钮的代码就像这样清除板子:

public void clearBoard(int lX, int lY) {
    Button temp;
    for(int i = 0; i < buttons.length; i ++){
        for(int j = 0; j < buttons.length; j++){
            temp = (Button)findViewById(buttons[i][j]);
            temp.setBackground(blueSpace);
        }
    }
}

从这里,我可以设置用户导向的按钮,或更改其他按钮。但是,清除图像和显示用户所需的时间通常超过一秒钟。

任何帮助都会很好。

谢谢!

1 个答案:

答案 0 :(得分:0)

两个建议

  1. 确保您只对位图进行一次解码(保存 引用并且不在每个clearBoard上创建它们
  2. 使用ImageButton而不是Image,因此您不需要将图像资源解码为位图