Viewについて調べてみる

越野亮さんの「Androidアプリ開発超入門」を参考に。

ViewSample.java

package jp.android.viewsample;

import android.app.Activity;
import android.os.Bundle;

public class ViewSample extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //setContentView(R.layout.main);
        setContentView(new MyView(this));     //1,一先ず、R.layout.mainをコメントアウトして
        //MyViewを設定、クラスが無いとEclipseに起こられるので、補完してもらう
    }
}
package jp.android.viewsample;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.view.View;

public class MyView extends View {
	public MyView(Context context){
		super(context);    //2,コンストラクタでViewに引数渡す
	}
	
	protected void onDraw(Canvas canvas) {
		super.onDraw(canvas);    //3,こっちも渡す。ってめんどくさいな、もうw
		Paint paint = new Paint();
		canvas.drawColor(Color.WHITE);
		paint.setColor(Color.BLUE);
		paint.setAntiAlias(true);
		canvas.drawCircle(150, 150, 100, paint);
	}
	
}

っと、このあとonTouchEvent等といろいろ続くが、読み飛ばし^^;

MyView.java

 android.os.Handlerって何だろう?

package jp.android.viewsample;

import java.util.Timer;
import java.util.TimerTask;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.view.View;

public class MyView extends View {
	android.os.Handler handler = new android.os.Handler();
	public MyView(Context context){
		super(context);
		Timer timer = new Timer(false);
		timer.schedule(new TimerTask(){
			public void run(){
				handler.post(new Runnable(){
					public void run(){
						invalidate();
					}
				});
			}
		},0,1000);
	}
	
	protected void onDraw(Canvas canvas) {
		super.onDraw(canvas);
		Paint paint = new Paint();
		canvas.drawColor(Color.WHITE);
		paint.setColor(Color.BLUE);
		float cx = (float)Math.random() * 200 + 15;
		float cy = (float)Math.random() * 300 + 15;
		canvas.drawCircle(cx, cy, 30, paint);
	}
	
}