2012-12-07 14 views
5

Bir kamera zoom denetleyicisi olarak bir android seekBar kullanıyorum.Arama çubuğunu programatik olarak değiştirmek için setProgress kullanabilir miyim

Arama çubuğu sürüklerken çekicilik gibi çalışır ancak ilerlemeyi artıracak bir zoomIn ve zoomOut düğmesi eklemek istedim. Sorun iki kat.

  1. Ben ilerleme aslında Buna da ilerleme çubuğu

    btn_zoomIn.setOnClickListener(new View.OnClickListener() { 
        public void onClick(View view) { 
        try { 
         zoomCtrl.setProgress(zoomCtrl.getProgress()+1); 
         onProgressChanged(zoomCtrl, zoomCtrl.getProgress(), true); 
        } catch(Exception ex) { } 
        } 
    }); 
    
    btn_zoomOut.setOnClickListener(new View.OnClickListener() { 
        public void onClick(View view) { 
        try { 
         zoomCtrl.setProgress(zoomCtrl.getProgress()-1); 
        } catch(Exception ex){ } 
        } 
    }); 
    

üzerine sürüklenebilir başparmak güncellenmiyorsa

  • artırır önce bunu 4 kez tıklamak zorunda düğmesini tıkladığında Birisi yardım edebilir mi lütfen?

    ADDITION:

    şudur i yerine Seekbar kullanıyorum verticalSeekBar sınıfı:

    public class VerticalSeekBar extends SeekBar { 
    
    /** 
    * Instantiates a new vertical seek bar. 
    * 
    * @param context the context 
    */ 
    public VerticalSeekBar(Context context) { 
    
        super(context); 
    } 
    
    /** 
    * Instantiates a new vertical seek bar. 
    * 
    * @param context the context 
    * @param attrs the attrs 
    * @param defStyle the def style 
    */ 
    public VerticalSeekBar(Context context, AttributeSet attrs, int defStyle) { 
    
        super(context, attrs, defStyle); 
    } 
    
    /** 
    * Instantiates a new vertical seek bar. 
    * 
    * @param context the context 
    * @param attrs the attrs 
    */ 
    public VerticalSeekBar(Context context, AttributeSet attrs) { 
    
        super(context, attrs); 
    } 
    
    /* (non-Javadoc) 
    * @see android.widget.AbsSeekBar#onSizeChanged(int, int, int, int) 
    */ 
    protected void onSizeChanged(int w, int h, int oldw, int oldh) { 
    
        super.onSizeChanged(h, w, oldh, oldw); 
    } 
    
    /* (non-Javadoc) 
    * @see android.widget.AbsSeekBar#onMeasure(int, int) 
    */ 
    @Override 
    protected synchronized void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { 
    
        super.onMeasure(heightMeasureSpec, widthMeasureSpec); 
        setMeasuredDimension(getMeasuredHeight(), getMeasuredWidth()); 
    } 
    
    /* (non-Javadoc) 
    * @see android.widget.AbsSeekBar#onDraw(android.graphics.Canvas) 
    */ 
    protected void onDraw(Canvas c) { 
    
        c.rotate(-90); 
        c.translate(-getHeight(), 0); 
    
        super.onDraw(c); 
    } 
    
    /* (non-Javadoc) 
    * @see android.widget.AbsSeekBar#onTouchEvent(android.view.MotionEvent) 
    */ 
    @Override 
    public boolean onTouchEvent(MotionEvent event) { 
    
        if (!isEnabled()) { 
         return false; 
        } 
    
        switch (event.getAction()) { 
        case MotionEvent.ACTION_DOWN: 
        case MotionEvent.ACTION_MOVE: 
        case MotionEvent.ACTION_UP: 
         setProgress(getMax() - (int) (getMax() * event.getY()/getHeight())); 
         onSizeChanged(getWidth(), getHeight(), 0, 0); 
         break; 
    
        case MotionEvent.ACTION_CANCEL: 
         break; 
        } 
        return true; 
    } 
    

    }

    ve ben şöyle Etkinliğime eklemeden ediyorum:

    zoomCtrl = new VerticalSeekBar(this); 
         zoomCtrl.setLayoutParams(zCtrl); 
    
         zoomCtrl.setProgressDrawable(getResources().getDrawable(R.drawable.zoombar_progress_bg)); 
         zoomCtrl.setThumb(getResources().getDrawable(R.drawable.imagebtn_zoom_thumb)); 
         zoomCtrl.setBackgroundDrawable(getResources().getDrawable(R.drawable.zoom_track)); 
         zoomCtrl.setPadding(25, 0, 25, 0); 
         zoomCtrl.setOnSeekBarChangeListener(this); 
    
    
         rel.addView(zoomCtrl); 
    
  • +0

    seekbar.setProgress (seekbar.getProgress() + 5) ve seekbar.setOffsetThumb (ofset int) ya da seekbar.setThumb (çekilebilir) – Tobrun

    +0

    setThumb()? zaten ayarlanmış .. setThumbOffset()? offset int nasıl belirlenir? – erik

    +0

    aslında ofset sıfırlamak istemiyorum .. o iyi değil – erik

    cevap

    8

    Sorunu geçersiz kılarak çözdü. VerticalSeekbar sınıfında eProgress. @Override public synchronized void setProgress(int progress) { super.setProgress(progress); onSizeChanged(getWidth(), getHeight(), 0, 0); }

    +0

    Benim Sorun çözüldü :) –

    +0

    gerçekten harika bir bağlantı. –

    3

    Create updateThumb(); Bu yöntem, ilerlemeyi ayarladıktan sonra güncelleştirme başparmak yöntemini çağırır.

    seekBar.setProgress(100 - (int) progress); 
    seekBar.updateThumb(); 
    
    İlgili konular