У меня есть RelativeLayout с загруженным растровым изображением, используя пример Touch V2 из Pragmatic Bookshelf - http://media.pragprog.com/titles/eband3/code/Touchv2/src/org/example/touch/Touch.java
Я добавил отдельную кнопку с onclicklistener, которая при нажатии будет загружать изображение из галереи. В результате действия изображение загружается как растровое изображение в RelativeLayout:
public void getPictureFromFile(Uri targetUri){
try {
BitmapFactory.Options options = new BitmapFactory.Options();
options.inSampleSize = scale(getContentResolver()
.openInputStream(targetUri));
workinprogress = BitmapFactory.decodeStream(
getContentResolver().openInputStream(targetUri),
null, options);
view.setImageBitmap(workinprogress);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
Один из следующих щелчков мыши, я захватываю изображение relativelayout, используя:
thepicture.buildDrawingCache(true);
Bitmap bm = Bitmap.createBitmap(thepicture.getDrawingCache());
Процесс работает потрясающе - для первого изображения. Когда я снова загружаю другое изображение, битмап все равно совпадает с оригиналом. Я попробовал thepicture.invalidate() и thepicture.resetDrawableState() перед getDrawingCache(), но ни один из них не обновляет изображение до загруженного изображения, хотя макет кадра отображает правильное изображение.
Есть ли что-то, что я не понимаю об обновлении drawCache, которое мне нужно реализовать для второго загружаемого изображения?