2017-11-21 9 views
-4

どのように外部のライブラリを使用せずに、グラフのようなアンドロイドでレイアウトを作成することができます。あなたが同じのためのキャンバスを使用することができますどのように外部のライブラリを使用せずにグラフのようなアンドロイドのレイアウトを作成することができます

enter image description here

+0

ペイント? – Ashkan

+0

私はそれにグラフを描きたいだけです。 –

+0

パターンを背景として使用します。行を描くには 'Canvas'を使います。それらをレイアウトするには、多くの '1px'ビューを使います。あなたの質問は、目的を知らずに役に立たない。 –

答えて

0

、ここではキャンバスのためのcompltete説明は次のとおりです。

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

あなたはonDrawでキャンバスに描くことが可能なSurfaceViewを作成することができます( ) 方法。グラフを描画するには、Pathクラスを使用し、moveTo()メソッドとlineTo()メソッドを使用します。線の外観を変更するには、Paintクラスを使用します。次に、CanvasのdrawPath()メソッドを使用します。このメソッドは、パスと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); 
       } 
      } 
     } 
    } 
関連する問題