package com.example.test1;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.LinearLayout.LayoutParams;
import android.widget.Toast;
public class MainActivity extends Activity {
Button button_1;
private Circle circle;
LayoutParams params = new LayoutParams(LayoutParams.MATCH_PARENT,1000);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button_1 = (Button) findViewById(R.id.button_1);
button_1.setOnClickListener( new OnClickListener(){
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
final String[] items = {"圆","2","3","4","5","6","7","8","9","0"};
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setTitle("选择序号");
builder.setItems(items,new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int index) {
// TODO Auto-generated method stub
switch(index){
case 0:
circle = new Circle(getApplicationContext());
Toast.makeText(MainActivity.this,"圆",Toast.LENGTH_LONG).show();
addContentView(circle,params);
break;
case 1:
Toast.makeText(MainActivity.this,"click 2", Toast.LENGTH_LONG).show();
break;
case 2:
Toast.makeText(MainActivity.this,"click 3",Toast.LENGTH_LONG).show();
break;
case 3:
Toast.makeText(MainActivity.this,"click 4",Toast.LENGTH_LONG).show();
break;
case 4:
Toast.makeText(MainActivity.this,"click 5",Toast.LENGTH_LONG).show();
break;
case 5:
Toast.makeText(MainActivity.this,"click 6",Toast.LENGTH_LONG).show();
break;
case 6:
Toast.makeText(MainActivity.this,"click 7",Toast.LENGTH_LONG).show();
break;
case 7:
Toast.makeText(MainActivity.this,"click 8",Toast.LENGTH_LONG).show();
break;
case 8:
Toast.makeText(MainActivity.this,"click 9",Toast.LENGTH_LONG).show();
break;
case 9:
Toast.makeText(MainActivity.this,"click 0",Toast.LENGTH_LONG).show();
break;
}
}
});
builder.create().show();
}
});
}
@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;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
package com.example.test1;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Point;
import android.graphics.Paint.Style;
import android.view.View;
public class MyLayout extends View {
public Point uppoint,downpoint,movepoint;
public Paint paint;
public Canvas canvas;
public Bitmap bitmap;
public int flag;
public MyLayout(Context context) {
super(context);
// TODO Auto-generated constructor stub
paint = new Paint(Paint.DITHER_FLAG);
bitmap = Bitmap.createBitmap(1000,2000,Bitmap.Config.ARGB_8888);
canvas = new Canvas(bitmap);
paint.setStyle(Style.STROKE);//非填充
paint.setStrokeWidth(4);
paint.setColor(Color.BLACK);
paint.setAntiAlias(true);
}
@Override
protected void onDraw(Canvas canvas) {
// TODO Auto-generated method stub
super.onDraw(canvas);
canvas.drawBitmap(bitmap,0,0,null);
}
}
package com.example.test1;
import android.content.Context;
import android.graphics.*;
import android.util.Log;
import android.view.MotionEvent;
import android.widget.Toast;
public class Circle extends MyLayout {
public Point rpoint;
public int radius;
public double distance;
public Circle(Context context) {
super(context);
// TODO Auto-generated constructor stub
rpoint = new Point();
}
@Override
public boolean onTouchEvent(MotionEvent event) {
// TODO Auto-generated method stub
switch(event.getAction()){
case MotionEvent.ACTION_DOWN:
downpoint.set((int)event.getX(),(int)event.getY());
if(radius!=0){
distance = Math.sqrt((downpoint.x - rpoint.x)*(downpoint.x - rpoint.x)+(downpoint.y - rpoint.y)*(downpoint.y - rpoint.y));
// Toast.makeText(Circle.this,"distance",Toast.LENGTH_LONG).show();
Log.i("distance::::::::::::::::::::::",String.valueOf(distance));
if(distance >= radius - 20 ||distance <= radius + 20){
Log.e("circle::::","error");
flag = 1;//yuanshang
}
if(distance < radius){
Log.e("circle::::","2e2r2r2o2r2");
//yuannei
flag = -1;
}
if(distance > radius){
Log.e("circle::::","3e3r3r3o3r3");
//yuanwai
flag = 0;
}
else{
Log.e("circle::::","4e4r4r4o4r4");
flag = 0;
}
}
break;
case MotionEvent.ACTION_MOVE:
movepoint.set((int)event.getX(),(int)event.getY());
switch(flag){
case 1:
Log.i("circle::::-------","1");
radius = (int)Math.sqrt((movepoint.x - rpoint.x)*(movepoint.x - rpoint.x)+(movepoint.y - rpoint.y)*(movepoint.y - rpoint.y));
break;
case -1:
Log.i("circle::::-------","2");
rpoint.x = movepoint.x;
rpoint.y = movepoint.y;
break;
default:
Log.i("circle::::-------","3");
rpoint.set(downpoint.x, downpoint.y);
radius = (int)Math.sqrt((movepoint.x - rpoint.x)*(movepoint.x - rpoint.x)+(movepoint.y - rpoint.y)*(movepoint.y - rpoint.y));
break;
}
}
return true;
}
}
各位大神,我这个东西发布上去选定圆,然后触摸拖动的时候就崩溃了,求大神帮忙看看