public class MainActivity extends AppCompatActivity { private RelativeLayout relat; //item上的数据源 private String[] name = {"矩形", "圆形", "三角形", "扇形", "椭圆", "曲线","文字和图片"}; private ListView listview; //listview的adapter private ArrayAdapter<String> adapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //实例化listview listview = (ListView) findViewById(R.id.listview); //实例化数据源 adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, name); //listview设置adapter listview.setAdapter(adapter); //listview设置点击事件 listview.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Intent intent=new Intent(MainActivity.this,Main2Activity.class); intent.putExtra("position",position); startActivity(intent); } }); } }
public class Main2Activity extends AppCompatActivity { private RelativeLayout relat; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main2); //获取布局文件中的容器 relat=(RelativeLayout)findViewById(R.id.rela); int position=getIntent().getIntExtra("position",0); //判断点击了第几个 if (position == 0) { //矩形 //创建DrawView组件 RectActivity dv=new RectActivity(getApplicationContext()); //设置自定义组件的最大宽度、高度 dv.setMinimumHeight(400); dv.setMinimumWidth(200); //添加到容器中 relat.addView(dv); } else if (position == 1) { //圆形 //创建DrawView组件 CircleActivity dv=new CircleActivity(getApplicationContext()); //设置自定义组件的最大宽度、高度 dv.setMinimumHeight(400); dv.setMinimumWidth(200); //添加到容器中 relat.addView(dv); } else if (position == 2) { //三角形 //创建DrawView组件 TrigonActivity dv=new TrigonActivity(getApplicationContext()); //设置自定义组件的最大宽度、高度 dv.setMinimumHeight(400); dv.setMinimumWidth(200); //添加到容器中 relat.addView(dv); } else if (position == 3) { //扇形 //创建DrawView组件 SectorActivity dv=new SectorActivity(getApplicationContext()); //设置自定义组件的最大宽度、高度 dv.setMinimumHeight(400); dv.setMinimumWidth(200); //添加到容器中 relat.addView(dv); } else if (position == 4) { //椭圆 //创建DrawView组件 OvalActivity dv=new OvalActivity(getApplicationContext()); //设置自定义组件的最大宽度、高度 dv.setMinimumHeight(400); dv.setMinimumWidth(200); //添加到容器中 relat.addView(dv); } else if (position == 5) { //曲线 //创建DrawView组件 PathActivity dv=new PathActivity(getApplicationContext()); //设置自定义组件的最大宽度、高度 dv.setMinimumHeight(400); dv.setMinimumWidth(200); //添加到容器中 relat.addView(dv); }else if (position == 6) { //曲线 //创建DrawView组件 TvIvActivity dv=new TvIvActivity(getApplicationContext()); //设置自定义组件的最大宽度、高度 dv.setMinimumHeight(400); dv.setMinimumWidth(200); //添加到容器中 relat.addView(dv); } } }//矩形 public class RectActivity extends View { //无参 public RectActivity(Context context) { super(context); } //有参 public RectActivity(Context context, AttributeSet attrs) { super(context, attrs); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); // 创建画笔 Paint p = new Paint(); //设置实心 p.setStyle(Paint.Style.FILL); // 设置红色 p.setColor(Color.BLACK); // 设置画笔的锯齿效果 p.setAntiAlias(true); //绘制 canvas.drawRect(50, 100, 900, 900, p); } }//圆形 public class CircleActivity extends View { int width; int height; //无参 public CircleActivity(Context context) { super(context); init(); } //有参 public CircleActivity(Context context, AttributeSet attrs) { super(context, attrs); init(); } private void init() { //获取屏幕的宽高 //Android绘图机制(一)——自定义View的基础属性和方法里面有讲 WindowManager wm = (WindowManager) getContext() .getSystemService(Context.WINDOW_SERVICE); width = wm.getDefaultDisplay().getWidth(); height = wm.getDefaultDisplay().getHeight(); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); Paint p = new Paint(); p.setColor(Color.BLACK); // 设置画笔的锯齿效果 p.setAntiAlias(true); canvas.drawCircle(width / 4, height / 2, width / 4, p); } }//扇形 public class SectorActivity extends View { public SectorActivity(Context context) { super(context); } public SectorActivity(Context context, AttributeSet attrs) { super(context, attrs); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); // 创建画笔 Paint p = new Paint(); p.setColor(Color.BLACK); RectF rectF = new RectF(300, 300, 600, 700); canvas.drawArc(rectF, 300, 160, true, p); } }//三角形 public class TrigonActivity extends View { //无参 public TrigonActivity(Context context) { super(context); } //有参 public TrigonActivity(Context context, AttributeSet attrs) { super(context, attrs); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); Paint p = new Paint(); p.setColor(Color.BLACK); //实例化路径 Path path = new Path(); path.moveTo(100, 200);// 此点为多边形的起点 path.lineTo(500, 400); path.lineTo(100, 400); path.close(); // 使这些点构成封闭的多边形 canvas.drawPath(path, p); } }//椭圆 public class OvalActivity extends View { public OvalActivity(Context context) { super(context); } public OvalActivity(Context context, AttributeSet attrs) { super(context, attrs); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); // 创建画笔 Paint p = new Paint(); p.setColor(Color.BLACK); RectF rectF = new RectF(60, 100, 200, 240); rectF.set(210,100,600,300); canvas.drawOval(rectF, p); } }//曲线 public class PathActivity extends View { public PathActivity(Context context) { super(context); } public PathActivity(Context context, AttributeSet attrs) { super(context, attrs); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); // 创建画笔 Paint p = new Paint(); p.setColor(Color.BLACK); p.reset(); //设置空心 p.setStyle(Paint.Style.STROKE); Path path = new Path(); path.moveTo(100, 320);//设置Path的起点 path.quadTo(300, 900, 300, 300); //设置路径点和终点 canvas.drawPath(path, p); } }//文字或图片 public class TvIvActivity extends View { public TvIvActivity(Context context) { super(context); } public TvIvActivity(Context context, AttributeSet attrs) { super(context, attrs); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); Paint p = new Paint(); p.setColor(Color.RED); //文本 canvas.drawText("自定义文本", 200, 330, p); Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher); //图片 canvas.drawBitmap(bitmap, 250, 300, p); } }//圆环 public class CircleActivity extends View { int width; int height; //无参 public CircleActivity(Context context) { super(context); init(); } //有参 public CircleActivity(Context context, AttributeSet attrs) { super(context, attrs); init(); } private void init() { //获取屏幕的宽高 //Android绘图机制(一)——自定义View的基础属性和方法里面有讲 WindowManager wm = (WindowManager) getContext() .getSystemService(Context.WINDOW_SERVICE); width = wm.getDefaultDisplay().getWidth(); height = wm.getDefaultDisplay().getHeight(); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); Paint p = new Paint(); p.setColor(Color.BLACK); // 设置画笔的锯齿效果 p.setAntiAlias(true); canvas.drawCircle(width / 5, height / 2, width / 8, p); Paint w = new Paint(); w.setColor(Color.WHITE); // 设置画笔的锯齿效果 w.setAntiAlias(true); canvas.drawCircle(width / 5, height / 2, width / 9, w); } }