¿Cómo se puede actualizar dinámicamente el color de un SeekBar?

Me gustaría tener el color de la barra de progreso (específicamente el progreso secundario que se actualiza con setSecondaryProgress ) para cambiar dinámicamente en tiempo de ejecución cuando cruza un cierto punto.

Ya puedo sustituir mi propio dibujable en la barra durante la función onCreate de mi actividad (cambiando el color de amarillo a verde) llamando a setProgressDrawable y sustituyendo un recurso que he copiado de la versión predeterminada de Android de un progreso horizontal (SDK / plataformas / Android-2.1 / data / res / drawable / progress_horizontal.xml). Sin embargo, actualizar esto en tiempo de ejecución (sí, desde el subproceso de interfaz de usuario a través de AsyncTask) hace que la barra de progreso completa, excepto para que el thumbtab pase a negro o transparente.

Creo que esto es lo que estás buscando

Introduzca aquí la descripción de la imagen

Introduzca aquí la descripción de la imagen

Introduzca aquí la descripción de la imagen

Esto se puede lograr mediante la creación de drwables personalizados para el fondo y el progreso de la barra de seak Vea este enlace para el código de ejemplo.

Pls vea los siguientes enlaces también http://javatechig.com/android/android-seekbar-example/

Cambiar el color de un buscador en onProgressChanged

SeekColorActivity.java

package com.exercise.seekcolor; import android.app.Activity; import android.os.Bundle; import android.widget.LinearLayout; import android.widget.SeekBar; public class SeekColorActivity extends Activity { private int seekR, seekG, seekB; SeekBar redSeekBar, greenSeekBar, blueSeekBar; LinearLayout mScreen; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); mScreen = (LinearLayout) findViewById(R.id.myScreen); redSeekBar = (SeekBar) findViewById(R.id.mySeekingBar_R); greenSeekBar = (SeekBar) findViewById(R.id.mySeekingBar_G); blueSeekBar = (SeekBar) findViewById(R.id.mySeekingBar_B); updateBackground(); redSeekBar.setOnSeekBarChangeListener(seekBarChangeListener); greenSeekBar.setOnSeekBarChangeListener(seekBarChangeListener); blueSeekBar.setOnSeekBarChangeListener(seekBarChangeListener); } private SeekBar.OnSeekBarChangeListener seekBarChangeListener = new SeekBar.OnSeekBarChangeListener() { @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { // TODO Auto-generated method stub updateBackground(); } @Override public void onStartTrackingTouch(SeekBar seekBar) { // TODO Auto-generated method stub } @Override public void onStopTrackingTouch(SeekBar seekBar) { // TODO Auto-generated method stub } }; private void updateBackground() { seekR = redSeekBar.getProgress(); seekG = greenSeekBar.getProgress(); seekB = blueSeekBar.getProgress(); mScreen.setBackgroundColor( 0xff000000 + seekR * 0x10000 + seekG * 0x100 + seekB ); } } 

Un SeekBar es una extensión de ProgressBar que agrega un pulgar draggable. El usuario puede tocar el pulgar y arrastrar hacia la izquierda o la derecha para establecer el nivel de progreso actual o usar las teclas de flecha.

Cuando se llama SeekBarChange, onProgressChanged () de OnSeekBarChangeListener se llamará y el fondo de la pantalla (LinearLayout) se actualizará según el valor (SeekBar.getProgress ()).

Main.xml

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.