2010-02-23 16 views
8

मैं प्रगति पट्टी का रंग (विशेष रूप से द्वितीयक प्रगति जिसे setSecondaryProgress के साथ अपडेट किया गया है) को रनटाइम पर गतिशील रूप से बदलने के लिए एक निश्चित बिंदु को पार करना चाहते हैं।आप एक सेकरबार के रंग को गतिशील रूप से कैसे अपडेट कर सकते हैं?

मैं पहले से ही अपनी गतिविधि के ऑनक्रेट फ़ंक्शन (पीले से हरे रंग से रंग बदलना) के दौरान बार में अपने स्वयं के चित्रकारी को प्रतिस्थापित करने में सक्षम हूं, सेट प्रोग्रेस ड्रायबल को कॉल करके और एक संसाधन को प्रतिस्थापित कर रहा हूं जिसे मैंने क्षैतिज प्रगति के डिफ़ॉल्ट एंड्रॉइड संस्करण से कॉपी किया है (एसडीके/प्लेटफार्मों/एंड्रॉयड-2.1/डेटा/res/drawable/progress_horizontal.xml)। हालांकि, इसे रनटाइम पर अपडेट करना (हां, यूआई थ्रेड से एसिंक टास्क के माध्यम से) थंबटैब को काले या पारदर्शी जाने के अलावा पूरी प्रगति पट्टी का कारण बनता है।

+0

एक दृष्टिकोण मैं के बारे में सोच सकते हैं अलग अलग रंग के साथ दो seekbars के बीच एक दृश्य स्विचर उपयोग करने के लिए है देखते हैं, लेकिन उपयोगकर्ता उस पर नज़र रखने के नियंत्रण का उपयोग कर रहा है, तो समय, यह काम नहीं करेगा। – PseudoNoise

+0

अभी आईआरसी कार्यालय के घंटों के रूप में, अवैध लाभ का उपयोग करने के साथ प्रयोग किया जाने वाला कोई फायदा नहीं हुआ। ड्रॉबल्स के मानों को पढ़ने की कोशिश की लेकिन प्रत्येक ऑब्जेक्ट (संसाधनों से दो रंग, और इसे प्राप्त करने के बाद getProgressDrawable) सभी में अलग हैश मान हैं। – PseudoNoise

उत्तर

2

मुझे लगता है कि यह आप

enter image description here

के लिए क्या देख रहे है

enter image description here

enter image description here

इस पृष्ठभूमि और seak बार की प्रगति के लिए कस्टम drwables बनाने नमूना कोड के लिए इस link देखें द्वारा हासिल किया जा सकता है।

Pls नीचे दिए गए लिंक भी http://javatechig.com/android/android-seekbar-example/

Change the color of a seekbar on onProgressChanged

+0

हां! मेरा प्रश्न कई वर्षों से जुड़े प्रश्नों की भविष्यवाणी करता है, लेकिन आखिर में मुझे जवाब देने में खुशी है (हालांकि मैं इस परियोजना से आगे बढ़ गया)। – PseudoNoise

-1

एक सेकबार प्रोग्रेसबार का विस्तार है जो एक ड्रैगगेबल अंगूठे जोड़ता है। उपयोगकर्ता अंगूठे को छू सकता है और वर्तमान प्रगति स्तर को सेट करने के लिए बाएं या दाएं खींच सकता है या तीर कुंजियों का उपयोग कर सकता है।

जब SeekBarChange, OnSeekBarChangeListener के ऑन प्रोग्रेस चेंज() को कॉल किया जाएगा, और स्क्रीन (लीनियरलाउट) की पृष्ठभूमि को मूल्य (SeekBar.getProgress()) के अनुसार अपडेट किया जाएगा।

main.xml

+1

यह सवाल से पूरी तरह से असंबंधित है। ओपी ने रंग अपडेट करने के बारे में पूछा, और एक बार आप रंग के बारे में कुछ भी नहीं बताते हैं। – lrAndroid

1

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

प्रगति पट्टी के कारण स्क्रीन रंग सेट करता है। मैंने जो पूछा वह प्रगति पट्टी के पृष्ठभूमि रंग को सेट करने के लिए है, पूरी स्क्रीन पर नहीं। – PseudoNoise

संबंधित मुद्दे

 संबंधित मुद्दे