画圆不用切换activity?
Draw circle without having to switch activity?
所以,我有一个应用程序,在主 activity(主屏幕)上有一张地图(一个 jpg 文件)。
现在我想在这张地图上画一个圆圈,因为用户会搜索一个位置,然后,我想用一个圆圈标记这个位置,请问如何实现?
我已经试过了:
@Override
protected void onDraw(Canvas canvas) {
// TODO Auto-generated method stub
super.onDraw(canvas);
paint.setStyle(Paint.Style.STROKE);
canvas.drawCircle(50, 50, 30, paint);
}
在我的 DrawDis class 和我的主要 activity class 中,我得到了这个:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//setContentView(R.layout.activity_main);
//RelativeLayout relativeLayout = new RelativeLayout(this);
//relativeLayout.setLayoutParams(new RelativeLayout.LayoutParams(
//ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
//setContentView(relativeLayout);
//relativeLayout.addView(new DrawDis(this));
}
我知道创建新布局会改变整个屏幕,但我应该如何在不改变的情况下只绘制到屏幕上?activity?
下面的代码片段将在用户触摸图像的任何地方绘制一个圆圈。
另见 link
image.setOnTouchListener(new OnTouchListener() {
public boolean onTouch(View arg0, MotionEvent arg1) {
System.out.println("Touch recieved at "+arg1.getX() + " " + arg1.getY());
touchX = (arg1.getX());
touchY = (arg1.getY());
System.out.println("Touch recieved at "+touchX + " " + touchY);
image.setImageBitmap(createImage());
return true;
}
});
public Bitmap createImage(){
Bitmap image = bmp.copy(Bitmap.Config.RGB_565, true);
Canvas canvas = new Canvas(image);
Paint paint = new Paint();
paint.setStyle(Paint.Style.STROKE);
paint.setColor(Color.GREEN);
touchX=touchX- image.getWidth() / 2;
touchY=touchY- image.getHeight() / 2;
canvas.drawCircle(touchX, touchY, radius, paint);
System.out.println("Drew a circle at "+touchX+" " + touchY+" with a radius of "+radius+".");
return image;
}
所以,我有一个应用程序,在主 activity(主屏幕)上有一张地图(一个 jpg 文件)。
现在我想在这张地图上画一个圆圈,因为用户会搜索一个位置,然后,我想用一个圆圈标记这个位置,请问如何实现?
我已经试过了:
@Override
protected void onDraw(Canvas canvas) {
// TODO Auto-generated method stub
super.onDraw(canvas);
paint.setStyle(Paint.Style.STROKE);
canvas.drawCircle(50, 50, 30, paint);
}
在我的 DrawDis class 和我的主要 activity class 中,我得到了这个:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//setContentView(R.layout.activity_main);
//RelativeLayout relativeLayout = new RelativeLayout(this);
//relativeLayout.setLayoutParams(new RelativeLayout.LayoutParams(
//ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
//setContentView(relativeLayout);
//relativeLayout.addView(new DrawDis(this));
}
我知道创建新布局会改变整个屏幕,但我应该如何在不改变的情况下只绘制到屏幕上?activity?
下面的代码片段将在用户触摸图像的任何地方绘制一个圆圈。
另见 link
image.setOnTouchListener(new OnTouchListener() {
public boolean onTouch(View arg0, MotionEvent arg1) {
System.out.println("Touch recieved at "+arg1.getX() + " " + arg1.getY());
touchX = (arg1.getX());
touchY = (arg1.getY());
System.out.println("Touch recieved at "+touchX + " " + touchY);
image.setImageBitmap(createImage());
return true;
}
});
public Bitmap createImage(){
Bitmap image = bmp.copy(Bitmap.Config.RGB_565, true);
Canvas canvas = new Canvas(image);
Paint paint = new Paint();
paint.setStyle(Paint.Style.STROKE);
paint.setColor(Color.GREEN);
touchX=touchX- image.getWidth() / 2;
touchY=touchY- image.getHeight() / 2;
canvas.drawCircle(touchX, touchY, radius, paint);
System.out.println("Drew a circle at "+touchX+" " + touchY+" with a radius of "+radius+".");
return image;
}