2016-07-01 4 views
0

アンドロイドスタジオで円、半円、三角形を描きたい。アンドロイドスタジオで図形を描く簡単な方法はありますか?各図形にイメージを使用すべきですか?Androidスタジオの図形ですか?

iが円形やその他の形状の正確な外形を作成する描画可能なソースとして

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval" > 
<solid android:color="#000000"/> 

が、十分にその良好ではないが、これを試みました。それを行う他の方法はありますか?

semicircletriangle circle

+0

http://android-dev-tips-and-tricks.blogspot.in/2012/08/xml-drawables-part-i.html –

+0

私の問題にはあまり役立たないが、円はまだソリッドカラー – Redman

+0

https://docs.oracle.com/javase/tutorial/2d/ –

答えて

1

あなたはドローハーフサークルのために、以下のクラスを使用することができます

public class MyView extends View { 


    public MyView(Context context) { 

     super(context); 

     // TODO Auto-generated constructor stub 

    } 


    @Override 

    protected void onDraw(Canvas canvas) { 

     // TODO Auto-generated method stub 

     super.onDraw(canvas); 

     float width = (float) getWidth(); 

     float height = (float) getHeight(); 

     float radius; 


     if (width > height) { 

      radius = height/4; 

     } else { 

      radius = width/4; 

     } 


     Path path = new Path(); 

     path.addCircle(width/2, 

       height/2, radius, 

       Path.Direction.CW); 


     Paint paint = new Paint(); 

     paint.setColor(Color.BLACK); 

     paint.setStrokeWidth(5); 


     paint.setStyle(Paint.Style.FILL); 

     float center_x, center_y; 
     final RectF oval = new RectF(); 


     paint.setStyle(Paint.Style.STROKE); 
     center_x = width/2; 

     center_y = height/2; 

     oval.set(center_x - radius, 

       center_y - radius, 

       center_x + radius, 

       center_y + radius); 

     canvas.drawArc(oval, 90, 180, false, paint); 


    } 

} 

出力

enter image description here

+0

半円は閉じ、他の図形はどうですか? Triangle checkの – Redman

+0

このhttp://stackoverflow.com/questions/20544668/how-to-draw-filled-triangle-on-android-canvasとサークルhttp://www.java2s.com/Code/Android/2D -Graphics/Drawacircle.htm – Sach

+0

ありがとう、私はdrawableフォルダの画像を取得することは、これらのすべてを行うよりも簡単な方法です:D – Redman

1

2つのオプションがあります。あなたがあなた自身の描画可能の定義(ビューは、このタスクのために重いにあるので、最高のパフォーマンスがDrawableのの相続を定義するために、表示しない)、その後、方法onDrawであなたの数字を描画する必要が

1.Throughコード

。例:XMLを通じ

public class MyDrawable extends Drawable { 
    @Override 
    public void onDraw(Canvas canvas) { 
     //call method from canvas to draw your figures or whatever, 
     //provide them by your custom paint (but please don't create them here) 
    } 
} 

2.

サポートライブラリ23.2は、すべての開発者はAPIレベル> 9と、すべてのアプリケーションを介して利用可能なベクトルドローアブルを受け、出てきたとき。だからあなたは次のことができます。

  1. 接続サポートベクタードロワブル(here description how you can do it
  2. 別々のパスタグ(here description how you can do it
  3. で各図を作成し、あなたのXMLでグループタグにpathesを追加します。あなたはそのようなものがあります:

    <vector xmlns:android="http://schemas.android.com/apk/res/android" 
         android:height="64dp" 
         android:width="64dp" 
         android:viewportHeight="600" 
         android:viewportWidth="600" > 
        <group> 
         <path android:pathData="some path data" /> 
         <path android:pathData="some path data" /> 
         <path android:pathData="some path data" /> 
        </group> 
    </vector> 
    

をそして、それがすべてです。

関連する問題