自定义View,ViewGroup的使用

定义自己的view,集成View,实现onDraw

package com.example.testcanvers;

import java.util.ArrayList;
import java.util.List;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Paint.Style;
import android.util.Log;
import android.view.View;
import android.widget.Toast;

public class CircleCanvas extends View{
	public List<CircleInfo> mCircleInfos=new ArrayList<CircleCanvas.CircleInfo>();
	Paint paint=new Paint();
	public static class CircleInfo
	{
		private float x,y,radius;
		private int color;
		public float getX(){return x;}
		public void setX(float x){this.x=x;}
		public float getY(){return y;}
		public void setY(float y){this.y=y;}
		public float getRadius(){return radius;}
		public void setRadius(float radius){this.radius=radius;}
		public int getColor(){return color;}
		public void setColor(int color){this.color=color;}	
	}
	public CircleCanvas(Context context)
	{
		super(context);
	}
	@Override
	public void onDraw(Canvas canvas)
	{
		super.onDraw(canvas);
		for(CircleInfo circleinfo : mCircleInfos)
		{
			paint.setColor(circleinfo.getColor());
			paint.setStrokeWidth(1);
			paint.setStyle(Style.STROKE);
			canvas.drawCircle(circleinfo.getX(), circleinfo.getY(),circleinfo.getRadius(), paint);
			Log.v("Paint","Paint Successful!");
		}
	}
}

  写MainActivity.java

package com.example.testcanvers;

import java.util.Random;

import android.os.Bundle;
import android.app.Activity;
import android.graphics.Color;
import android.view.Menu;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams;
import android.widget.Button;
import android.widget.Toast;
import com.example.testcanvers.CircleCanvas.CircleInfo;
import com.example.testcanvers.CircleCanvas;
public class MainActivity extends Activity {
    private CircleCanvas mCircleCanvas;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        ViewGroup viewGroup=(ViewGroup)getLayoutInflater().inflate(R.layout.activity_main, null);
        mCircleCanvas=new CircleCanvas(this);
        viewGroup.addView(mCircleCanvas,new LayoutParams(LayoutParams.FILL_PARENT,350));
        setContentView(viewGroup);
    }
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
    public void onClick_DrawRandomCircle(View view)
    {
        Random random=new Random();
        float randomX=(float)(100+random.nextInt(100));
        float randomY=(float)(100+random.nextInt(100));
        float randomRadius=(float)(20+random.nextInt(100));
        int randomColor=0;
        if(random.nextInt(100)>50)
            randomColor=Color.BLUE;
        else
        {
            if(random.nextInt(100)>50)
                randomColor=Color.BLUE;
            else
                randomColor=Color.GREEN;
        }
        CircleInfo circleInfo=new CircleInfo();
        circleInfo.setX(randomX);
        circleInfo.setY(randomY);
        circleInfo.setRadius(randomRadius);
        circleInfo.setColor(randomColor);
        mCircleCanvas.mCircleInfos.add(circleInfo);
        mCircleCanvas.invalidate();
        Toast.makeText(this, "Successfun", Toast.LENGTH_SHORT).show();
    }
    public void onClick_Clear(View view)
    {
        mCircleCanvas.mCircleInfos.clear();
        mCircleCanvas.invalidate();
    }
}

以下是布局文件

 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 2     xmlns:tools="http://schemas.android.com/tools"
 3     android:layout_width="match_parent"
 4     android:layout_height="match_parent"
 5     android:orientation="vertical"
 6     tools:context=".MainActivity" >
 7     <Button 
 8         android:layout_width="match_parent"
 9         android:layout_height="wrap_content"
10         android:text="Draw Random Circle"
11         android:onClick="onClick_DrawRandomCircle"/>
12     <Button 
13         android:layout_width="match_parent"
14         android:layout_height="wrap_content"
15         android:text="Clear"
16         android:onClick="onClick_Clear"/>
17 </LinearLayout>

 

posted @ 2014-11-29 18:25  冠king  阅读(68)  评论(0)    收藏  举报