13 votes

comment dessiner un chemin dans la vue sous Android

J'ai besoin de dessiner un chemin avec des lignes simples sur le canevas, il devrait écrire un rectangle rouge avec des lignes blanches, mais il ne dessine rien, qu'est-ce que je manque ? Mon code :

Canvas canvas = new Canvas();

       Paint paint = new Paint();

       paint.setStyle(Paint.Style.FILL);
       paint.setColor(Color.RED);
       canvas.drawPaint(paint);
       Path path = new Path();
       //canvas.drawColor(Color.CYAN);

       for (int i = 5; i < 50; i++) {

           path.moveTo(4, i-1);
           path.lineTo(4, i);

       }
       path.close();

       paint.setStrokeWidth(3);
       paint.setPathEffect(null);
       paint.setColor(Color.WHITE);
       paint.setStyle(Paint.Style.STROKE);

       canvas.drawPath(path, paint);

        for (int i = 0; i < 3; i++) {
            View iview =    inflater.inflate(R.layout.linear_layout, null);
            if(i == 0){
                iview.findViewById(R.id.imageView1).setBackgroundResource(R.drawable.distspeed);
            }
            if(i == 1){
                iview.findViewById(R.id.imageView1).setBackgroundResource(R.drawable.hxmdist);
            }
            if(i == 2){
                iview.findViewById(R.id.imageView1).setBackgroundResource(R.drawable.hxmspeeed);
            }

            iview.draw(canvas);

            realViewSwitcher.addView(iview);
        }

21voto

Csabi Points 927

Je ne poste que le code de travail :

activité modifiée :

for (int i = 0; i < 2; i++) {

        MyView mView = new MyView(this,i);

        realViewSwitcher.addView(mView);
        }

ma vue :

public class MyView extends View {

    public MyView(Context context, int kolki) {
        super(context);

        if (kolki == 0){
            this.setBackgroundResource(R.drawable.distspeed);
        }
        if (kolki == 1){
            this.setBackgroundResource(R.drawable.hxmdist);
        }
    }

    public void setBackgroundResource (int resid){
        super.setBackgroundResource(resid);
    } 

    public void onDraw(Canvas c){
        super.onDraw(c);
        Paint paint = new Paint();
        Path path = new Path();
        paint.setStyle(Paint.Style.FILL);
        paint.setColor(Color.TRANSPARENT);
        c.drawPaint(paint);
        for (int i = 50; i < 100; i++) {
               path.moveTo(i, i-1);
               path.lineTo(i, i);  
        }
        path.close();
        paint.setStrokeWidth(3);
        paint.setPathEffect(null);
        paint.setColor(Color.BLACK);
        paint.setStyle(Paint.Style.STROKE);
        c.drawPath(path, paint);
    }

}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X