Android:获取背景可绘制资源

时间:2019-05-20 17:43:44

标签: android background resources

我有很多按钮,在drawable中定义了不同的自定义背景。 单击按钮后,我想根据实际资源更改背景可绘制资源。

我正在尝试使用此代码来获取实际资源,并将其与所有可绘制对象进行比较,但是,如果验证了大小写,它将无法正常工作。另外,每次我单击按钮时,“日志第一,第二和第三”每次都会打印不同的值(不应该相同吗?)

private void selectNewCell(){
        Log.d("ChangeBG","Select new cell");
        Button btn = buttonMatrix[selectedCoordinates.getI()][selectedCoordinates.getJ()];
        Drawable actualBG = btn.getBackground();
        Log.d("Actual", "Value " + actualBG.getConstantState());
        Log.d("First", "Value " + getResources().getDrawable(R.drawable.button_bg).getConstantState());
        Log.d("Second", "Value " + getResources().getDrawable(R.drawable.button_bg_bot).getConstantState());
        Log.d("Third", "Value " + getResources().getDrawable(R.drawable.button_bg_right).getConstantState());
        if(actualBG.getConstantState().equals(getResources().getDrawable(R.drawable.button_bg).getConstantState())){
            btn.setBackgroundResource(R.drawable.button_bg_selected);
            Log.d("ChangeBG","Case1");
        } else if(actualBG.getConstantState().equals(getResources().getDrawable(R.drawable.button_bg_bot).getConstantState())){
            btn.setBackgroundResource(R.drawable.button_bg_bot_selected);
            Log.d("ChangeBG","Case2");
        } else if(actualBG.getConstantState().equals(getResources().getDrawable(R.drawable.button_bg_right).getConstantState())){
            btn.setBackgroundResource(R.drawable.button_bg_right_selected);
            Log.d("ChangeBG","Case3");
        }
    }

0 个答案:

没有答案
相关问题