2016-04-15 54 views
0

在我的應用程序中,我以編程方式將按鈕添加到我的視圖中。我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。

因此,這裏是我的問題:

如何檢查是否一個按鈕的背景顏色是一樣的前一個視圖?

+0

對不起,我不知道該怎麼做(只發現一個吸氣劑的Drawable和一個色調列表),但爲什麼不你只需在while循環中保留最後一個隨機數就可以將它與新的隨機數進行比較? – 0X0nosugar

回答

1

我能想到的最簡單的方法是將隨機(顏色)保存到列表中,並且可以通過它的數字訪問每個按鈕,並檢查它是否與前一個按鈕顏色相同。

添加List<int> colors = new ArrayList<int>();功能

之外,在功能

random = new Random().nextInt(lesCouleurs.size()); 
colors.add(random); 

然後比較列表

的項目,如果這個答案的問題解決了,請把它標記爲正確的答案 謝謝你

+0

謝謝你的想法!我沒有想到它! – AntoineDJ

相關問題