<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"
tools:context="com.example.view_exercise.MainActivity" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hello_world"/>
<com.example.view_exercise.MyView
android:id="@+id/myview"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</RelativeLayout>
package com.example.view_exercise;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
public class MyView extends View{
private Paint paint;
private float x=200;
private float y=200;
private float hand_x,hand_y;
private float r;
private float radius=5;
private float x_s_old;
private float y_s_old;
private float x_s_new;
private float y_s_new;
private float old=0;
private float ne1=0;
private float round=50;
public MyView(Context context, AttributeSet attrs, int defStyleAttr){
super(context, attrs, defStyleAttr);
// TODO Auto-generated constructor stub
paint=new Paint();
// paint.setTextSize(25f);
}
public MyView(Context context, AttributeSet attrs){
// super(context, attrs);
this(context, attrs, 0);
}
public MyView(Context context){
// super(context);
this(context, null);
}
@Override
protected void onDraw(Canvas canvas) {
// TODO Auto-generated method stub
super.onDraw(canvas);
canvas.drawARGB(255, 255, 100, 100);
//绘制实心圆
paint.setColor(Color.GREEN);
canvas.drawCircle(x, y, round, paint);
//绘制字
/*paint.setColor(Color.BLUE);
canvas.drawText("我们都是好孩子", 100, 200, paint);*/
/*paint.setColor(Color.BLUE);
canvas.drawLine(10, 230, 60, 230, paint);*/
}
@Override
public boolean onTouchEvent(MotionEvent event) {
// TODO Auto-generated method stub
switch (event.getPointerCount()) {
case 1:
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
break;
case MotionEvent.ACTION_MOVE:
float x_t=event.getX();
float y_t=event.getY();
float t=(x_t-x)*(x_t-x)+(y_t-y)*(y_t-y);
float sqrt = (float) Math.sqrt(t);
if(sqrt<=50){
x=event.getX();
y=event.getY();
invalidate();
}
break;
case MotionEvent.ACTION_UP:
break;
}
break;
case 2:
switch (event.getAction()&event.ACTION_MASK){
case MotionEvent.ACTION_POINTER_DOWN:
x_s_old=event.getX(0)-event.getX(1);
y_s_old=event.getY(0)-event.getY(1);
old=(float) Math.sqrt(x_s_old*x_s_old+y_s_old*y_s_old);
break;
case MotionEvent.ACTION_MOVE:
x_s_new=event.getX(event.getPointerId(0))-event.getX(event.getPointerId(1));
y_s_new=event.getY(event.getPointerId(0))-event.getY(event.getPointerId(1));
ne1=(float) Math.sqrt(x_s_new*x_s_new+y_s_new*y_s_new);
if(ne1>old){
float side=round+3;
round=side;
round=side;
Log.i("aaa", round+"");
}else if(ne1<old){
float side=round-3;
round=side;
// round=(float) (round*1.01);
}
invalidate();
break;
case MotionEvent.ACTION_UP:
break;
}
break;
}
return true;
}
//计算屏幕
/*@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec){
// TODO Auto-generated method stub
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
setMeasuredDimension(400,600);
}*/
//触摸事件
/* @Override
public boolean onTouchEvent(MotionEvent event){
// TODO Auto-generated method stub
switch (event.getAction()){
case MotionEvent.ACTION_DOWN:
break;
case MotionEvent.ACTION_MOVE:
//获取触摸点的个数
int count=event.getPointerCount();
switch (count){
case 1:
hand_x=event.getX();
hand_y=event.getY();
r=(float) Math.sqrt((hand_x-x)*(hand_x-x)+(hand_y-y)*(hand_y-y));
if(r<50){
x=event.getX();
y=event.getY();
//全部刷新(重绘)
invalidate();
}
break;
case 2:
float x1=event.getX(0);
float y1=event.getY(0);
float x2=event.getX(1);
float y2=event.getY(1);
float d=(float) Math.sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
radius=(float)d/2;
invalidate();
break;
default:
break;
}
if(count==1){
OneTouch(event);
}else if(count==2){
float x1=event.getX(0);
float y1=event.getY(0);
float x2=event.getX(1);
float y2=event.getY(1);
float d=(float) Math.sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
r=(float)d/2;
invalidate();
}
break;
case MotionEvent.ACTION_UP:
break;
default:
break;
}
//一定要返回true
return true;
}
*/
/*private void OneTouch(MotionEvent event){
hand_x=event.getX();
hand_y=event.getY();
r=(float) Math.sqrt((hand_x-x)*(hand_x-x)+(hand_y-y)*(hand_y-y));
if(r<50){
x=event.getX();
y=event.getY();
//全部刷新(重绘)
invalidate();
}
}*/
//确定布局
/* @Override
protected void onLayout(boolean changed, int left, int top, int right,
int bottom){
// TODO Auto-generated method stub
super.onLayout(changed, 50,50,50,50);
}*/
}
package com.example.view_exercise;
import com.bwei.view_exercise.R;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
public class MainActivity extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//引用自定义布局
// setContentView(new MyView(this));
}
}