在Android中显示来自SD卡的图像时出现错误。

16 浏览
0 Comments

在Android中显示来自SD卡的图像时出现错误。

08-06 11:35:01.851: E/AndroidRuntime(10736): 主要异常:内存溢出\n08-06 11:35:01.851: E/AndroidRuntime(10736): 在 android.graphics.BitmapFactory.nativeDecodeStream(Native Method) 方法中发生\n08-06 11:35:01.851: E/AndroidRuntime(10736): 在 android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:582) 方法中发生\n08-06 11:35:01.851: E/AndroidRuntime(10736): 在 android.graphics.BitmapFactory.decodeFile(BitmapFactory.java:380) 方法中发生\n08-06 11:35:01.851: E/AndroidRuntime(10736): 在 android.graphics.BitmapFactory.decodeFile(BitmapFactory.java:413) 方法中发生\n08-06 11:35:01.851: E/AndroidRuntime(10736): 在 com.accusol.realestate.property.Property3AddFragmentActivity.onClick(Property3AddFragmentActivity.java:812) 方法中发生\n08-06 11:35:01.851: E/AndroidRuntime(10736): 在 android.view.View.performClick(View.java:3558) 方法中发生\n08-06 11:35:01.851: E/AndroidRuntime(10736): 在 android.view.View$PerformClick.run(View.java:14157) 方法中发生\n08-06 11:35:01.851: E/AndroidRuntime(10736): 在 android.os.Handler.handleCallback(Handler.java:605) 方法中发生\n08-06 11:35:01.851: E/AndroidRuntime(10736): 在 android.os.Handler.dispatchMessage(Handler.java:92) 方法中发生\n08-06 11:35:01.851: E/AndroidRuntime(10736): 在 android.os.Looper.loop(Looper.java:137) 方法中发生\n08-06 11:35:01.851: E/AndroidRuntime(10736): 在 android.app.ActivityThread.main(ActivityThread.java:4514) 方法中发生\n08-06 11:35:01.851: E/AndroidRuntime(10736): 在 java.lang.reflect.Method.invokeNative(Native Method) 方法中发生\n08-06 11:35:01.851: E/AndroidRuntime(10736): 在 java.lang.reflect.Method.invoke(Method.java:511) 方法中发生\n08-06 11:35:01.851: E/AndroidRuntime(10736): 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:790) 方法中发生\n08-06 11:35:01.851: E/AndroidRuntime(10736): 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557) 方法中发生\n08-06 11:35:01.851: E/AndroidRuntime(10736): 在 dalvik.system.NativeStart.main(Native Method) 方法中发生\n我使用了以下代码来显示图片\n

vi = inflator.inflate(R.layout.item_image, null);
Bitmap myBitmap = BitmapFactory.decodeFile(imgFile.getAbsolutePath());
ImageVIew  imgeview=(ImageVIew )vi.findViewById(R.id.imgItem);
imgeview.setImageBitmap(myBitmap);
vi.setTag(i);

\n当有大图文件时,这段代码在 BitmapFactory.decodeFile 发生崩溃。

0
0 Comments

问题的原因是图片显示模糊。解决方法是通过修改变量 final int REQUIRED_SIZE 的值来改变图片的清晰度。可以尝试不同的值来确定最佳清晰度。

0