Android SeekBar setOnSeekBarChangeListener

前端 未结 5 690
借酒劲吻你
借酒劲吻你 2020-12-03 09:58

I\'m wondering about the behavior of the android SeekBars OnSeekBarChangeListener. In particular, is the onProgressChanged-method notified only for the first and the last to

相关标签:
5条回答
  • 2020-12-03 10:02

    All answers are correct, but you need to convert a long big fat number into a timer first:

        public String toTimer(long milliseconds){
        String finalTimerString = "";
        String secondsString;
        // Convert total duration into time
        int hours = (int)( milliseconds / (1000*60*60));
        int minutes = (int)(milliseconds % (1000*60*60)) / (1000*60);
        int seconds = (int) ((milliseconds % (1000*60*60)) % (1000*60) / 1000);
        // Add hours if there
        if(hours > 0){
            finalTimerString = hours + ":";
        }
        // Prepending 0 to seconds if it is one digit
        if(seconds < 10){
            secondsString = "0" + seconds;
        }else{
            secondsString = "" + seconds;}
        finalTimerString = finalTimerString + minutes + ":" + secondsString;
        // return timer string
        return finalTimerString;
    }
    

    And this is how you use it:

    @Override
    public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
    textView.setText(String.format("%s", toTimer(progress)));        
    }
    
    0 讨论(0)
  • 2020-12-03 10:06

    onProgressChanged is called every time you move the cursor.

    @Override
    public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
        textView.setText(String.valueOf(new Integer(progress)));        
    }
    

    so textView should show the progress and alter always if the seekbar is being moved.

    0 讨论(0)
  • 2020-12-03 10:07

    Override all methods

        @Override
        public void onProgressChanged(SeekBar arg0, int arg1, boolean arg2) {
    
    
        }
    
        @Override
        public void onStartTrackingTouch(SeekBar arg0) {
    
    
        }
    
        @Override
        public void onStopTrackingTouch(SeekBar arg0) {
    
    
        }
    
    0 讨论(0)
  • 2020-12-03 10:10

    I hope this will help you:

    final TextView t1=new TextView(this); 
    t1.setText("Hello Android");        
    final SeekBar sk=(SeekBar) findViewById(R.id.seekBar1);     
    sk.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {       
    
        @Override       
        public void onStopTrackingTouch(SeekBar seekBar) {      
            // TODO Auto-generated method stub      
        }       
    
        @Override       
        public void onStartTrackingTouch(SeekBar seekBar) {     
            // TODO Auto-generated method stub      
        }       
    
        @Override       
        public void onProgressChanged(SeekBar seekBar, int progress,boolean fromUser) {     
            // TODO Auto-generated method stub      
    
            t1.setTextSize(progress);
            Toast.makeText(getApplicationContext(), String.valueOf(progress),Toast.LENGTH_LONG).show();
    
        }       
    });             
    
    0 讨论(0)
  • 2020-12-03 10:11

    onProgressChanged() should be called on every progress changed, not just on first and last touch (that why you have onStartTrackingTouch() and onStopTrackingTouch() methods).

    Make sure that your SeekBar have more than 1 value, that is to say your MAX>=3.

    In your onCreate:

     yourSeekBar=(SeekBar) findViewById(R.id.yourSeekBar);
     yourSeekBar.setOnSeekBarChangeListener(new yourListener());
    

    Your listener:

    private class yourListener implements SeekBar.OnSeekBarChangeListener {
    
            public void onProgressChanged(SeekBar seekBar, int progress,
                    boolean fromUser) {
                                // Log the progress
                Log.d("DEBUG", "Progress is: "+progress);
                                //set textView's text
                yourTextView.setText(""+progress);
            }
    
            public void onStartTrackingTouch(SeekBar seekBar) {}
    
            public void onStopTrackingTouch(SeekBar seekBar) {}
    
        }
    

    Please share some code and the Log results for furter help.

    0 讨论(0)
提交回复
热议问题