view.getDrawingCache () só funciona uma vez
Eu tenho um RelativeLayout com uma imagem de bitmap carregada usando o exemplo do Touch V2 da Pragmatic Bookshelf -http://media.pragprog.com/titles/eband3/code/Touchv2/src/org/example/touch/Touch.java
Eu adicionei um botão separado com onclicklistener que, quando clicado, carregará uma imagem da galeria. No resultado da atividade, a imagem é carregada como um bitmap no 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();
}
}
Um clique no botão seguinte, eu pego a imagem do relativelayout usando:
thepicture.buildDrawingCache(true);
Bitmap bm = Bitmap.createBitmap(thepicture.getDrawingCache());
O processo funciona muito bem - para a primeira imagem. Quando eu carrego outra imagem novamente, o bitmap passado ainda é o mesmo que o original. Eu tentei o thepicture.invalidate () e thepicture.resetDrawableState () antes de getDrawingCache (), mas nenhum parece atualizar a imagem para a imagem recém-carregada, embora o layout do quadro exibe a imagem correta.
Existe algo que eu não entendo sobre a atualização do drawingCache que preciso implementar para a segunda imagem que carrego?