标签:
布局
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.day01_1_view.MainActivity" >
<com.example.day01_1_view.view.MyView
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</RelativeLayout>
创建类
package com.example.day01_1_view.view;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Paint.Style;
import android.util.AttributeSet;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
public class MyView extends View {
// 画笔
Paint paint = new Paint();
// 画笔颜色
int color = Color.RED;
// 圆的半径大小
int radius = 0;
// 获取屏幕的宽度和高度
private int with;
private int heigh;
// 圆心位置
float centerx = 0;
float centery = 0;
// 圆的边距
float padding = 0;
public MyView(Context context) {
super(context);
// TODO Auto-generated constructor stub
}
public MyView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
// TODO Auto-generated constructor stub
}
public MyView(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
}
// 测量view的宽和高
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
// TODO Auto-generated method stub
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
with = MeasureSpec.getSize(widthMeasureSpec);
heigh = MeasureSpec.getSize(heightMeasureSpec);
// // 圆的位置
centerx = with / 2;
centery = heigh / 2;
Log.d("withheigh", with + "==" + heigh);
}
// 画布
@Override
protected void onDraw(Canvas canvas) {
// TODO Auto-generated method stub
super.onDraw(canvas);
// Canvas 画布
// 获取圆的半径
radius = (with - 40) / 2;
// // 圆的位置
// centerx = with / 2;
// centery = heigh / 2;
// 设置画笔颜色
paint.setColor(color);
// // 设置圆的样式
// // FILL 实心
// // STROKE 空心圆
// paint.setStyle(Style.STROKE);
//
// // 设置圆的边宽
// padding = 20;
// paint.setStrokeWidth(padding);
// 抗锯齿
paint.setAntiAlias(true);
// 画圆
// 通过画布调用画圆的方法
// cx x轴的坐标
// cy Y轴的坐标
// radius 半径
// paint 画笔
canvas.drawCircle(centerx, centery, radius, paint);
}
//
@Override
protected void onLayout(boolean changed, int left, int top, int right,
int bottom) {
// TODO Auto-generated method stub
super.onLayout(changed, left, top, right, bottom);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
// TODO Auto-generated method stub
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:// 手指按下的时候
break;
case MotionEvent.ACTION_MOVE:// 手指移动的时候
// 圆的位置
centerx =event.getX();
centery = event.getY();
//重新绘制
postInvalidate();
break;
case MotionEvent.ACTION_UP:// 手指抬起的时候
break;
case MotionEvent.ACTION_CANCEL:// 手指取消的时候
break;
default:
break;
}
return true;
}
}
标签:
原文地址:http://blog.csdn.net/jsx9057/article/details/51351958