mercredi 7 janvier 2015

I need to use Hexadecimal as the Cases in my Switch statement

So, basically I have two color integer arrays defined in XML. The first array is set to Random.



int[] materialColors = getResources().getIntArray(R.array.materialColors);
int randomMaterialColor = materialColors[new Random().nextInt(materialColors.length)];


I want the Status bar of the application to change accordingly to a darker shade of the color randomly selected.


I have used Switch case for this.



switch (randomMaterialColor){

case R.color.red:

window.setStatusBarColor(getResources().getColor(R.color.reds));
break;

case R.color.pink:
window.setStatusBarColor(getResources().getColor(R.color.pinks));
break;

case R.color.purple:
window.setStatusBarColor(getResources().getColor(R.color.purples));
break;

case R.color.deep_purple:
window.setStatusBarColor(getResources().getColor(R.color.deep_purple));
break;


case R.color.indigo:
window.setStatusBarColor(getResources().getColor(R.color.indigos));
break;

case R.color.blue:
window.setStatusBarColor(getResources().getColor(R.color.blues));
break;

case R.color.light_blue:
window.setStatusBarColor(getResources().getColor(R.color.light_blues));
break;

case R.color.cyan:
window.setStatusBarColor(getResources().getColor(R.color.cyans));
break;

case R.color.teal:
window.setStatusBarColor(getResources().getColor(R.color.teal));
break;

case R.color.green:
window.setStatusBarColor(getResources().getColor(R.color.greens));
break;

case R.color.light_green:
window.setStatusBarColor(getResources().getColor(R.color.light_greens));
break;

case R.color.lime:
window.setStatusBarColor(getResources().getColor(R.color.limes));
break;

case R.color.yellow:
window.setStatusBarColor(getResources().getColor(R.color.yellows));
break;

case R.color.amber:
window.setStatusBarColor(getResources().getColor(R.color.ambers));
break;

case R.color.deep_orange:
window.setStatusBarColor(getResources().getColor(R.color.deep_oranges));
break;

case R.color.brown:
window.setStatusBarColor(getResources().getColor(R.color.browns));
break;

case R.color.gray:
window.setStatusBarColor(getResources().getColor(R.color.grays));
break;

case R.color.blue_gray:
window.setStatusBarColor(getResources().getColor(R.color.blue_grays));
break;

default:
Toast.makeText(this, "Could not detect color!", Toast.LENGTH_SHORT);
}


The application is able to run, but the Status bar color fails to change. I'm unable to use Hexadecimal values in the Switch case. And randomMaterialColors is an Integer having that value, but I'm unable to find a workaround.


How can I resolve this?





Aucun commentaire:

Enregistrer un commentaire