Autore Topic: ProgressBar verticale?  (Letto 694 volte)

Offline IacopoDeeNosee

  • Utente junior
  • **
  • Post: 128
  • Respect: +33
    • Google+
    • iacopodeenosee
    • Mostra profilo
    • visualhunter
  • Dispositivo Android:
    Samsung Nexus S - GT-I9023
  • Play Store ID:
    IacopoDeeNosee
  • Sistema operativo:
    Arch linux x86_64
ProgressBar verticale?
« il: 23 Agosto 2011, 12:12:34 CEST »
0
ciao,vorrei poter implementare una progressbar verticale,quello orizzontale la vedo nelle reference ma quella verticale da quanto ho capito non l'hanno implementata,come posso agire?devo modificare il codice della progressbar orizzontale?8y3

Offline IacopoDeeNosee

  • Utente junior
  • **
  • Post: 128
  • Respect: +33
    • Google+
    • iacopodeenosee
    • Mostra profilo
    • visualhunter
  • Dispositivo Android:
    Samsung Nexus S - GT-I9023
  • Play Store ID:
    IacopoDeeNosee
  • Sistema operativo:
    Arch linux x86_64
Re:ProgressBar verticale?
« Risposta #1 il: 24 Agosto 2011, 11:49:51 CEST »
0
Ho fatto dei progressi:sono riuscito a mettere in verticale la barra ma il problema che la grafica viene disegnata sulle misure della view ancora da ruotare,vi allego qualche immagine,la parte rossa è lo spazio della view in cui non c'è la grafica.
questo è il codice della custom view che ho usato:
Codice (Java): [Seleziona]
import android.content.Context;
import android.graphics.Canvas;
import android.util.AttributeSet;
import android.widget.ProgressBar;

public class VerticalProgressBar extends ProgressBar {

        public VerticalProgressBar(Context context) {
                super(context);
        }
       
        public VerticalProgressBar(Context context, AttributeSet attrs, int defStyle){
                super(context,attrs,defStyle);
        }
       
        public VerticalProgressBar(Context context, AttributeSet attrs, int defStyle,int widthT,int heightT){
                super(context,attrs,defStyle);
               
                this.setMeasuredDimension(widthT, heightT);
        }

        @Override
        protected synchronized void onDraw(Canvas canvas) {
                canvas.save();
               
                canvas.rotate(270,canvas.getWidth()/2,canvas.getHeight()/2);
               
                super.onDraw(canvas);
                canvas.restore();
        }

}
qua come l'ho richiamato:
Codice (Java): [Seleziona]
...
                /*
                 * show the final result MAX 158 MIN 29
                 */

               
                VerticalProgressBar pbScore = new VerticalProgressBar(
                                getApplicationContext(), null,
                                android.R.attr.progressBarStyleHorizontal);
                pbScore.setBackgroundColor(Color.RED);
                pbScore.setPadding(0, PadProgressBar, 0,
                                PadProgressBar);
               
                pbScore.setMax(129);
                pbScore.setProgress(Points - 29);

                LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(
                                LinearLayout.LayoutParams.MATCH_PARENT,
                                LinearLayout.LayoutParams.MATCH_PARENT);
                lp.weight = 1.0f;
                lp.gravity = Gravity.CENTER;

                linearlayoutProgressBar.addView(pbScore, lp);
...
come posso obbligare la progressbar a disegnare la grafica sulle misure della view ruotata?