2012-12-02 3 views
0

Alors ... J'essaie de remplir un TextView qui étend toute la moitié inférieure de l'écran d'activité en fonction de la progression des SeekBars rouge, vert et bleu sur le dessus partie de l'activité. L'utilisateur peut déplacer l'une des barres de recherche et le TextView qui s'étend sur toute la largeur et la longueur de la moitié inférieure de l'activité sera rempli avec le schéma de couleurs RVB correct pour correspondre au mouvement 1-100 de tous les 3 SeekBars.Couleur de boîte de remplissage avec seekbar (Android)

Des idées sur comment faire cela? J'ai fait des recherches sur Google et je ne trouve pas ce que je recherche. Même un lien pour me donner une idée de ce qu'il faut faire serait bien :)

* Je dois mentionner le code court ici parfaitement bien sur la machine virtuelle Android

import android.os.Bundle; 
import android.app.Activity; 
import android.view.Menu; 
import android.widget.SeekBar; 
import android.widget.SeekBar.OnSeekBarChangeListener; 
import android.widget.TextView; 

public class MainActivity extends Activity implements OnSeekBarChangeListener 
{ 
    private SeekBar red; 
    private SeekBar green; 
    private SeekBar blue; 

    private TextView progress1; 
    private TextView progress2; 
    private TextView progress3; 


    @Override 
    protected void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     red = (SeekBar)findViewById(R.id.seekBar1); 
     red.setOnSeekBarChangeListener(this); 
     green = (SeekBar)findViewById(R.id.seekBar2); 
     green.setOnSeekBarChangeListener(this); 
     blue = (SeekBar)findViewById(R.id.seekBar3); 
     blue.setOnSeekBarChangeListener(this); 
     progress1 = (TextView)findViewById(R.id.textView2); 
     progress2 = (TextView)findViewById(R.id.textView4); 
     progress3 = (TextView)findViewById(R.id.textView6);  
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) 
    { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.activity_main, menu); 
     return true; 
    } 

    @Override 
    public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) 
    { 
     switch(seekBar.getId()) 
     { 
     case R.id.seekBar1: 
     progress1.setText(""+progress); 
     break; 
     case R.id.seekBar2: 
      progress2.setText(""+progress); 
      break; 
     case R.id.seekBar3: 
      progress3.setText(""+progress); 
      break; 
     }  

    } 

    @Override 
    public void onStartTrackingTouch(SeekBar arg0) 
    { 
     // TODO Auto-generated method stub 

    } 

    @Override 
    public void onStopTrackingTouch(SeekBar arg0) 
    { 
     // TODO Auto-generated method stub 

    } 

} 

Répondre

0

Configurer les SeekBars d'avoir une valeur maximale de 255, puis dans votre onProgressChanged() utilisation Color.argb() (docs):

int color = Color.argb(255, red.getProgress(), green.getProgress(), blue.getProgress()); 
    //you can also split that into the 3 channels if you wish 
    //i'm assuming you actually want to show the resulting color 
    progress1.setBackgroundColor(color); 
+0

Merci pour le code et le doc. Très utile. Fait et fait: D – user1780149