kit*_*tka 12 android view bitmap
我有一个带有加载位图图像的RelativeLayout,使用来自Pragmatic Bookshelf的Touch V2示例 - 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();
}
}
Run Code Online (Sandbox Code Playgroud)
点击下一个按钮,我使用以下方法抓取relativelayout的图像:
thepicture.buildDrawingCache(true);
Bitmap bm = Bitmap.createBitmap(thepicture.getDrawingCache());
Run Code Online (Sandbox Code Playgroud)
对于第一张图片,这个过程非常有效.当我再次加载另一个图像时,传递的位图仍然与原始位图相同.我在getDrawingCache()之前尝试了thepicture.invalidate()和thepicture.resetDrawableState(),但似乎都没有将图像更新为新加载的图片,尽管框架布局显示正确的图像.
对于我需要为我加载的第二个图像实现的刷新drawingCache,是否有一些我不明白的事情?
Dmy*_*tov 40
为了让它更有效,一旦你必须view.setDrawingCacheEnabled(true)在view.setDrawingCacheEnabled(false)每次调用之前和每次使用之后使用它view.getDrawingCache().看例子:
imageView.setDrawingCacheEnabled(true);
imageView.buildDrawingCache(true);
File imageFile = new File(Environment.getExternalStorageDirectory(),
"Pictures/image.jpg");
FileOutputStream fileOutputStream = new FileOutputStream(imageFile);
imageView.getDrawingCache(true).compress(CompressFormat.JPEG, 100,
fileOutputStream);
fileOutputStream.close();
imageView.setDrawingCacheEnabled(false);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11835 次 |
| 最近记录: |