在我的應用程序中,我以編程方式將按鈕添加到我的視圖中。我maked字符串的一個LinkedList把這個: numers是顏色Android - 如何檢查按鈕背景顏色是否與視圖中的前一個顏色相同(以編程方式)
ArrayList lesCouleurs;
我添加顏色:
lesCouleurs = new ArrayList<>();
lesCouleurs.add(0, Color.RED);
lesCouleurs.add(1, Color.BLUE);
lesCouleurs.add(2, Color.CYAN);
lesCouleurs.add(3, Color.GREEN);
lesCouleurs.add(4, Color.YELLOW);
lesCouleurs.add(5, Color.WHITE);
這裏是我的方法以編程方式添加按鈕:(評是法語)
private void addButton() {
//Instanciation de l'enteier aléatoire
//Création programmatique d'un boutonn (cf. Doc Création programmatique de boutons)
final Button button = new Button(this);
//Instanciation du MediaPlayer
final MediaPlayer[] mediaPlayer = {new MediaPlayer()};
mediaPlayer[0].setAudioStreamType(AudioManager.STREAM_MUSIC);
//On récupère la taille de l'écran du terminal
this.getWindowManager().getDefaultDisplay().getRealMetrics(metrics);
button.setWidth(metrics.widthPixels/2);
button.setHeight(metrics.heightPixels/6);
//Et on ajoute les boutons à la vue avec les paramètres ajoutés ci-dessus
linearLayout.addView(button);
String myString = nomFichier;
int index = myString.indexOf(".");
String fileNameForButton = myString.substring(0, index);
button.setText(fileNameForButton);
button.setTextSize(25);
//On met le texte du bouton en gras
button.setTypeface(Typeface.defaultFromStyle(Typeface.BOLD));
//On choisit de manière aléatoire la couleur dans la liste proposée
int random= 0;
int color = 0;
if (nbButton > 0) {
while ((linearLayout.getChildAt(nbButton - 1).getBackground()).equals(linearLayout.getChildAt(nbButton).getBackground())) {
random = new Random().nextInt(lesCouleurs.size());
color = (int) lesCouleurs.get(random);
}
button.setBackgroundColor(color);
}
else {
random = new Random().nextInt(lesCouleurs.size());
color = (int) lesCouleurs.get(random);
button.setBackgroundColor(color);
}
final Uri myUri = Uri.parse(currentDir + "/" + nomFichier);
button.setTag(R.id.tag_uri, myUri);
//Dans le create, .prepare() est fait automatiquement pas besoin de le refaire dans le test if
final MediaPlayer[] finalMediaPlayer = {mediaPlayer[0]};
//Quand on clique sur le bouton
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (modeDelete) {
//Si le mode delete est activé, on supprime le bouton de la vue
linearLayout.removeView(button);
} else {
//En dehors du mode delete , on joue le son demandé
finalMediaPlayer[0].stop();
finalMediaPlayer[0].release();
finalMediaPlayer[0] = MediaPlayer.create(getApplicationContext(), myUri);
finalMediaPlayer[0].setVolume(0.5f, 0.5f);
finalMediaPlayer[0].start();
}
}
});
mediaPlayer[0].setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
mp.release();
}
});
nbButton ++;
//On commit la nouvelle valeur dans les préférences
savePrefs();
}
當我加載回喜好,我希望他們獲得與addButton()方法中選擇的相同的顏色。
我使用放置在ScrollView中的LinearView。
因此,這裏是我的問題:
如何檢查是否一個按鈕的背景顏色是一樣的前一個視圖?
對不起,我不知道該怎麼做(只發現一個吸氣劑的Drawable和一個色調列表),但爲什麼不你只需在while循環中保留最後一個隨機數就可以將它與新的隨機數進行比較? – 0X0nosugar