Как вы можете динамически обновить цвет SeekBar? - PullRequest
8 голосов
/ 23 февраля 2010

Мне бы хотелось, чтобы цвет индикатора выполнения (в частности, дополнительный прогресс, который обновляется с помощью setSecondaryProgress ), изменялся динамически во время выполнения, когда он пересекает определенную точку.

Я уже могу подставить свой собственный объект рисования в панель во время функции onCreate моей активности (меняя цвет с желтого на зеленый), вызвав setProgressDrawable и подставив ресурс, скопированный из версии Android по умолчанию для горизонтального прогресса (SDK) /platforms/android-2.1/data/res/drawable/progress_horizontal.xml). Однако обновление этого во время выполнения (да, из потока пользовательского интерфейса через AsyncTask) приводит к тому, что весь индикатор выполнения, за исключением вкладки, становится черным или прозрачным.

Ответы [ 3 ]

2 голосов
/ 09 июня 2013

Я думаю, это то, что вы ищете

enter image description here

enter image description here

enter image description here

Это может быть достигнутосоздание пользовательских drwables для фона и хода работы панели поиска. См. ссылку для примера кода.

Просьба также посмотреть ссылки ниже http://javatechig.com/android/android-seekbar-example/

Изменить цветпанели поиска на onProgressChanged

1 голос
/ 18 июня 2011

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
  );
}
}
0 голосов
/ 18 июня 2011

SeekBar - это расширение ProgressBar, которое добавляет перетаскиваемый большой палец. Пользователь может коснуться большого пальца и перетащить влево или вправо, чтобы установить текущий уровень прогресса или использовать клавиши со стрелками.

Когда SeekBarChange вызывается onProgressChanged () OnSeekBarChangeListener, и фон экрана (LinearLayout) будет обновляться в соответствии со значением (SeekBar.getProgress ()).

main.xml

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...