view.getDrawingCache () работает только один раз
У меня есть 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();
}
}
Следующим нажатием кнопки я получаю изображение относительного слоя, используя:
thepicture.buildDrawingCache(true);
Bitmap bm = Bitmap.createBitmap(thepicture.getDrawingCache());
Процесс работает потрясающе - для первого изображения. Когда я снова загружаю другое изображение, переданное растровое изображение остается таким же, как и оригинал. Я пробовал функции thepicture.invalidate () и thepicture.resetDrawableState () перед getDrawingCache (), но ни один из них не обновляет изображение до вновь загруженного изображения, хотя макет кадра отображает правильное изображение.
Есть ли что-то, чего я не понимаю в обновлении DrawingCache, которое мне нужно реализовать для второго загружаемого изображения?