Как нарисовать круг на сенсорном месте над изображением?
Я загружаю изображения, хранящиеся в каталоге моих приложений, используя UIL, в imageView. Что я хочу сделать, так это нарисовать маленький круг над изображением на экране, основываясь на прикосновениях пользователей. поэтому я решил использовать вид поверхности. я могу нарисовать круг на основе onTouch
Событие, но проблема, с которой я столкнулся, состоит в том, что весь экран имеет белый фон. Я хочу, чтобы круг был нарисован поверх изображения.
public class SingleViewActivity extends Activity {
int position;
String[] imageUrls;
ImageView imageView;
ImageLoader imageloader;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.single_view);
File Path = getExternalFilesDir(null);
Constants cons = new Constants();
imageUrls = cons.getImagePath(Path.toString());
// Get intent data
Intent i = getIntent();
// Selected image id
position = i.getExtras().getInt("position", -1);
imageView = (ImageView) findViewById(R.id.SingleView);
imageloader = ImageLoader.getInstance();
imageloader.displayImage("file://" + imageUrls[position], imageView);
setContentView(new DrawingView(this));
}
class DrawingView extends SurfaceView {
private final SurfaceHolder surfaceHolder;
private final Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
public DrawingView(Context context) {
super(context);
setZOrderOnTop(true);
surfaceHolder = getHolder();
surfaceHolder.setFormat(PixelFormat.TRANSLUCENT);
paint.setColor(Color.RED);
paint.setStyle(android.graphics.Paint.Style.FILL);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
if (surfaceHolder.getSurface().isValid()) {
Canvas canvas = surfaceHolder.lockCanvas();
canvas.drawCircle(event.getX(), event.getY(), 50, paint);
surfaceHolder.unlockCanvasAndPost(canvas);
}
}
return false;
}
}
}