2016-11-29 14 views
-1

私はアンドロイドでキャンバスを作る方法を理解していません。私は多くのチュートリアルを見てきましたが、私はそれらを正しくフォローしたと思いますが、まだ動作しないので、私は明らかにしませんでした。ここで私は私の主な活動のために持っているコードです:AndroidでCanvasを作成するにはどうすればよいですか?

package com.example.dan.shootyguy; 

import android.content.Intent; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 


public class MainActivity extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

    } 

    public void neato(View view){ 
     Intent intent = new Intent(MainActivity.this, DrawThing.class); 
    } 
} 

私はこの部分がうまくいくと思うが、アプリが私は確認することはできませんどのように見えるか変更されていません。

その後、私はキャンバスとonDrawを持っている別のクラスを持っている:

package com.example.dan.shootyguy; 

import android.annotation.TargetApi; 
import android.content.Context; 
import android.graphics.Canvas; 
import android.graphics.Color; 
import android.graphics.Paint; 
import android.os.Build; 
import android.os.Bundle; 
import android.view.View; 

public class DrawThing extends View{ 

    Paint paint = new Paint(Color.RED); 

    public DrawThing(Context context) { 
     super(context); 
    } 

    @TargetApi(Build.VERSION_CODES.LOLLIPOP) 
    @Override 
    protected void onDraw(Canvas canvas){ 
     super.onDraw(canvas); 
     canvas.drawOval(25f,25f,25f,25f,paint); 
    } 

} 

これは、赤い丸を作るべきであるが、それは何もしません。誰も助けを提供することはできますか?ありがとう。これを試してみてください 意図によって

+0

あなたの関数 'neato'は呼び出されず、それがあれば何もしません。また、インテントが欲しいと思わない場合は、キャンバスをレイアウトに追加したいと思うかもしれません。 –

+0

申し訳ありませんが、その部分については説明しませんでした。 NeatoはXMLファイルにあるボタンのonClickです。また、レイアウトにキャンバスを追加するにはどうすればよいですか?私は前にキャンバスで何かをやったことはありません。 – moxide

+0

@moxide addViewメソッドを使用して描画した後、キャンバスに追加することができます。 – Faraz

答えて

1

ビュー(DrawThing)con'tコール... onDrawメソッドをオーバーライド

public class MainActivity extends AppCompatActivity { 

     @Override 
     protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
     DrawThing draw=new DrawThing(this); 
      setContentView(draw); 

     } 


    } 
+0

これを持っているとアプリがクラッシュするので、わかりません。 – moxide

+0

あなたはlogcatを投稿することができます.. –

+0

ああ、私はそれを再試行し、今働く、私は前に間違っていたか分からない。助けてくれてありがとう! – moxide

0

はあなただけで何かを描くためにそれを言わなかった罰金です。

drawOval

無効drawOval(左フロート、 フロートトップ、 フロート右、 フロート下、 ペイント塗料)指定された塗料を使用して、指定された楕円を描画します。楕円形は塗料のスタイル に基づいて塗りつぶされます。

canvas.drawOval(25f、25f、25f、25f、paint);それは25,25,25,25で囲まれた楕円形で、幅は0、高さは0です。言い換えれば、ただそれを蹴って何も描かないでください。多分ピクセルですが、それは疑わしいです。

非常に描画ルーチンをオーバーライドして描画することができます。あなたはそれを描くために存在するものを伝える必要があります。

関連する問題