Вместо этого попробуйте получить изображение в виде холста для рисования.
ImageView CanvasView = (ImageView) findViewById(R.id.fashion_pic)
Отсюда вы можете создать собственное растровое изображение и заново нарисовать его после TouchEvent. Следующий фрагмент содержит необходимый обход ошибки в 2.1 (или 2.2, я не могу вспомнить):
public void redrawImage() {
Bitmap bm = BitmapFactory.decodeResource(getResources(), R.drawable.fashion_pic);
Bitmap proxy = Bitmap.createBitmap(bm.getWidth(), bm.getHeight(), Config.ARGB_8888);
Canvas c = new Canvas(proxy);
//Here, we draw the background image.
c.drawBitmap(bm, new Matrix(), null);
//Here, we draw the text where the user last touched.
c.drawText("Fashion", someGlobalXvariable, someGlobalYvariable, somePaint);
CanvasView.setImageBitmap(proxy);
}
Здесь вы создали холст, который уже имеет вашу картинку в качестве фона и рисует текст в переменных x и y. Теперь просто установите OnTouchListener:
CanvasView.setOnTouchListener( new OnTouchListener(){
public boolean onTouch(View v, MotionEvent e) {
someGlobalXvariable = e.getX();
someGlobalYvariable = e.getY();
redrawImage();
return true;
}
});
Как вы можете видеть, слушатель автоматически обновляет ваше изображение при касании, и текст будет следовать за пальцем пользователя. Поскольку вы используете растровое изображение в качестве основы, вы также можете добавить поддержку сохранения / загрузки изображения, если ваше приложение хочет иметь такую функциональность.
Редактировать: Это может быть более удобным для производительности, если вы переместите строки 1-3 из redrawImage()
и разместите их в другом месте, устанавливая эти объекты как глобальные объекты. Я позволю вам возиться с этим.