2017-11-21 18 views
-4

외부 라이브러리를 사용하지 않고 그래프처럼 안드로이드 레이아웃을 어떻게 만들 수 있습니까? 당신은 당신이 된 onDraw에서 캔버스에 그릴 수있는 서피스 뷰 SurfaceView를 만들 수어떻게 외부 라이브러리를 사용하지 않고도 그래프처럼 안드로이드 레이아웃을 만들 수 있습니다.

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

(: 당신은 같은 캔버스를 사용할 수 있습니다

enter image description here

+0

이 함께 무엇을 원하는가 페인트? – Ashkan

+0

그냥 그래프를 그리기 만하면됩니다. –

+0

패턴을 배경으로 사용하십시오. 캔버스를 사용하여 선을 그립니다. 그들을 레이아웃하기 위해'1px' 뷰를 많이 사용하십시오. 당신의 질문은 목적을 알지 못하면 쓸모가 없습니다. –

답변

0

, 여기에 캔버스 compltete 설명입니다) 방법. 그래프를 그리려면 Path 클래스를 사용하고 moveTo() 및 lineTo() 메서드를 사용할 수 있습니다. 선의 모양을 변경하려면 Paint 클래스를 사용합니다. 그런 다음 Canvases drawPath() 메서드를 사용합니다.이 메서드는 Path 및 Paint 객체를 사용합니다. 나는 OpenGl보다 시작하는 것이 약간 쉽다고 생각한다.

  • 서피스 뷰 SurfaceView
  • 캔버스
  • 경로

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); 
       } 
      } 
     } 
    }