Salut Je veux faire une barre de progression Pie dans Android comme l'image ci-jointe ..Pie barre de progression dans Android
je passer par le code suivant, mais aucun gain. J'ai donc décidé d'écrire mon propre ProgressBarView. Voici mon exemple de code ..
public class PieProgressView extends View {
private float mProgress;
private int MAX_ANGLE = 360;
public PieProgressView(Context context) {
super(context);
}
public PieProgressView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public PieProgressView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
drawOval(canvas);
}
public void setProgress(int progress){
mProgress = (float) ((float)progress*3.6);
invalidate();
}
private void drawOval(Canvas canvas){
canvas.drawColor(Color.CYAN);
Paint paint = new Paint();
// smooths
paint.setStyle(Paint.Style.FILL);
paint.setColor(Color.RED);
RectF oval2 = new RectF(50, 50, 500, 500);
canvas.drawOval(oval2, paint);// opacity
Paint p = new Paint();
p.setColor(Color.BLACK);
canvas.drawArc(oval2, 270, mProgress, true, p);
System.out.println("drawOval Progress == "+mProgress);
//p.setAlpha(0x80); //
}
}
et la classe d'activité de ce que j'appelle ..
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button = (Button)findViewById(R.id.button);
pieProgressView = (PieProgressView)findViewById(R.id.pieprogress);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
fillProgress();
}
});
}
private void fillProgress(){
for(int i=0;i<100 ; i++) {
pieProgressView.setProgress(i);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
Maintenant, au cours de cette boucle il n'y a pas de progrès démontré, mais bien après pour la boucle il montrera la barre de progression comme dans l'image attachée montrant une progression noire. Quelqu'un peut-il me dire ce qui ne va pas avec ce code
Pourquoi ce code ne fait pas une mise à jour continue?
Est-ce que 'setProgress()' fonctionne correctement sans la boucle? –
@LittleChild oui cela fonctionne sans boucle mais quand je lance la boucle alors il ne se mettra à jour qu'après l'achèvement de la boucle. En fait, dans mon application, je télécharge un fichier du serveur et je veux montrer le dialogue de progression de cette façon. Donc j'utilise pour la boucle pour mettre à jour continuellement la vue. –