你如何dynamic更新SeekBar的颜色?

我想要使​​进度条的颜色(特别是使用setSecondaryProgress更新的次要进度)在运行时跨越某个点时dynamic更改。

我已经能够在我的Activity的onCreate函数中(通过调用setProgressDrawablereplace从默认的Android版本的水平进度复制的资源(SDK / platforms /机器人-2.1 /数据/ RES /抽拉/ progress_horizo​​ntal.xml)。 但是,在运行时更新(是的,从UI线程通过AsyncTask)会导致整个进度条(除了thumbtab)变黑或透明。

Solutions Collecting From Web of "你如何dynamic更新SeekBar的颜色?"

我想这就是你要找的

在这里输入图像说明

在这里输入图像说明

在这里输入图像说明

这可以通过为seak bar的背景和进度创build自定义drwable来实现。请参阅此链接的示例代码。

请参阅下面的链接也http://javatechig.com/android/android-seekbar-example/

更改onProgressChanged上的一个seekbar的颜色

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 ); } } 

SeekBar是ProgressBar的扩展,增加了一个可拖动的大拇指。 用户可以触摸拇指并向左或向右拖动以设置当前的进度级别或使用箭头键。

当SeekBarChange时,OnSeekBarChangeListener的onProgressChanged()将被调用,并且屏幕的背景(LinearLayout)将根据值(SeekBar.getProgress())被更新。

main.xml中