2017-11-21 9 views
-4

Wie kann ich ein Layout in android wie Grafik erstellen, ohne eine externe Bibliothek zu verwenden.Wie kann ich ein Layout in android wie Grafik erstellen, ohne eine externe Bibliothek zu verwenden

enter image description here

+0

was wollen Sie damit zu tun? – Ashkan

+0

Ich möchte nur Graphen darauf zeichnen. –

+0

Muster als Hintergrund verwenden. Verwenden Sie "Canvas", um Linien zu zeichnen. Verwenden Sie eine Menge '1px' Ansichten, um sie zu gestalten. Ihre Frage ist nutzlos, ohne den Zweck zu kennen. –

Antwort

0

Sie Canvas für gleiche verwenden können, ist hier compltete Beschreibung für die Leinwand:

https://developer.android.com/reference/android/graphics/Canvas.html

Sie einen Surface schaffen könnte, in dem Sie eine Leinwand in der OnDraw ziehen kann () Methode. Um Ihr Diagramm zu zeichnen, können Sie die Path-Klasse verwenden, und es ist moveTo() und lineTo() -Methoden. Verwenden Sie die Klasse Paint, um das Aussehen der Linien zu ändern. Verwenden Sie dann die Canvases-Methode drawPath(), die ein Path-Objekt verwendet, und ein Paint-Objekt. Ich denke, es ist ein bisschen einfacher zu beginnen, als OpenGl.

  • Surface
  • Leinwand
  • Pfad
  • Malen

Some Demo

0
public class CustomView extends View { 
     private Paint paint; 
     Context app_context; 

     public CustomView(Context context) { 
      super(context); 
      paint = new Paint(); 
      paint.setColor(Color.GRAY); 
      app_context = context; 
     } 

     @Override 
     protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) 
     { 
      int width = 1000; 
      int height = 1200; 
      setMeasuredDimension(width, height); 
     } 

     @Override 
     public void onDraw(Canvas canvas) 
     { 
      canvas.drawColor(Color.BLUE); 

      paint.setColor(Color.GRAY); 
      paint.setTextSize(50); 
      canvas.drawText("Bilal",45f,55f, paint); 

      float[] xStopPointsLine1 = new float[]{0f,200.1f,450.5f,650f,850f}; 
      float[] yStopPointsLine1 = new float[]{100f,380f,540f,400f,720f}; 
      float[] xStopPointsLine2 = new float[]{20f,170.1f,350.5f,480f,650f}; 
      float[] yStopPointsLine2 = new float[]{200f,480f,240f,600f,380f}; 

      for(int i=0; i<yStopPointsLine1.length; i++){ 
       paint.setColor(Color.GRAY); 
       paint.setStrokeWidth(8); 
       if(i==0){ 
        canvas.drawLine(xStopPointsLine1[i],yStopPointsLine1[i],xStopPointsLine1[i+1],yStopPointsLine1[i+1], paint); 
        paint.setColor(Color.GREEN); 
        canvas.drawLine(xStopPointsLine2[i],yStopPointsLine2[i],xStopPointsLine2[i+1],yStopPointsLine2[i+1], paint); 
        paint.setColor(Color.RED); 
        canvas.drawCircle(xStopPointsLine1[i], yStopPointsLine1[i], 12, paint); 
        paint.setColor(Color.GREEN); 
        canvas.drawCircle(xStopPointsLine2[i], yStopPointsLine2[i], 12, paint); 
       } 
       else if(i>0 && i<yStopPointsLine1.length-1) 
       { 
        canvas.drawLine(xStopPointsLine1[i],yStopPointsLine1[i],xStopPointsLine1[i+1],yStopPointsLine1[i+1], paint); 
        paint.setColor(Color.RED); 
        canvas.drawCircle(xStopPointsLine1[i], yStopPointsLine1[i], 12, paint); 
        paint.setColor(Color.GREEN); 
        canvas.drawLine(xStopPointsLine2[i],yStopPointsLine2[i],xStopPointsLine2[i+1],yStopPointsLine2[i+1], paint); 
        paint.setColor(Color.GREEN); 
        canvas.drawCircle(xStopPointsLine2[i], yStopPointsLine2[i], 12, paint); 
       } 
       else if(i == yStopPointsLine1.length-1){ 
        paint.setColor(Color.RED); 
        canvas.drawCircle(xStopPointsLine1[i], yStopPointsLine1[i], 12, paint); 
        paint.setColor(Color.GREEN); 
        canvas.drawCircle(xStopPointsLine2[i], yStopPointsLine2[i], 12, paint); 
       } 
      } 
     } 
    } 
Verwandte Themen