Android 图片视图?

6 浏览
0 Comments

Android 图片视图?

当用户点击按钮时,我正在尝试运行一个活动,并且该活动根据铃声音量显示图片。当我执行它时,由于某种原因它不起作用。任何帮助都将不胜感激。\n以下是日志显示的信息 -\n09-19 09:12:54.656: W/dalvikvm(555): threadid=1: thread exiting with uncaught exception (group=0x409c01f8)\n09-19 09:12:54.696: E/AndroidRuntime(555): FATAL EXCEPTION: main\n09-19 09:12:54.696: E/AndroidRuntime(555): java.lang.OutOfMemoryError\n09-19 09:12:54.696: E/AndroidRuntime(555): at android.graphics.Bitmap.nativeCreate(Native Method)\n09-19 09:12:54.696: E/AndroidRuntime(555): at android.graphics.Bitmap.createBitmap(Bitmap.java:605)\n09-19 09:12:54.696: E/AndroidRuntime(555): at android.graphics.Bitmap.createBitmap(Bitmap.java:551)\n09-19 09:12:54.696: E/AndroidRuntime(555): at android.graphics.Bitmap.createScaledBitmap(Bitmap.java:437)\n09-19 09:12:54.696: E/AndroidRuntime(555): at android.graphics.BitmapFactory.finishDecode(BitmapFactory.java:524)\n09-19 09:12:54.696: E/AndroidRuntime(555): at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:499)\n09-19 09:12:54.696: E/AndroidRuntime(555): at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:351)\n09-19 09:12:54.696: E/AndroidRuntime(555): at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:773)\n09-19 09:12:54.696: E/AndroidRuntime(555): at android.content.res.Resources.loadDrawable(Resources.java:1935)\n09-19 09:12:54.696: E/AndroidRuntime(555): at android.content.res.Resources.getDrawable(Resources.java:664)\n09-19 09:12:54.696: E/AndroidRuntime(555): at Sarath.app.SilencePlzz.Androidzip.show(Androidzip.java:75)\n09-19 09:12:54.696: E/AndroidRuntime(555): at Sarath.app.SilencePlzz.Androidzip.onResume(Androidzip.java:28)\n09-19 09:12:54.696: E/AndroidRuntime(555): at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1154)\n09-19 09:12:54.696: E/AndroidRuntime(555): at android.app.Activity.performResume(Activity.java:4539)\n09-19 09:12:54.696: E/AndroidRuntime(555): at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2434)\n09-19 09:12:54.696: E/AndroidRuntime(555): at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2472)\n09-19 09:12:54.696: E/AndroidRuntime(555): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1986)\n09-19 09:12:54.696: E/AndroidRuntime(555): at android.app.ActivityThread.access$600(ActivityThread.java:123)\n09-19 09:12:54.696: E/AndroidRuntime(555): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)\n09-19 09:12:54.696: E/AndroidRuntime(555): at android.os.Handler.dispatchMessage(Handler.java:99)\n09-19 09:12:54.696: E/AndroidRuntime(555): at android.os.Looper.loop(Looper.java:137)\n09-19 09:12:54.696: E/AndroidRuntime(555): at android.app.ActivityThread.main(ActivityThread.java:4424)\n09-19 09:12:54.696: E/AndroidRuntime(555): at java.lang.reflect.Method.invokeNative(Native Method)\n09-19 09:12:54.696: E/AndroidRuntime(555): at java.lang.reflect.Method.invoke(Method.java:511)\n09-19 09:12:54.696: E/AndroidRuntime(555): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)\n09-19 09:12:54.696: E/AndroidRuntime(555): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)\n09-19 09:12:54.696: E/AndroidRuntime(555): at dalvik.system.NativeStart.main(Native Method)

0
0 Comments

问题:Android ImageView显示大型位图时出现问题的原因以及解决方法

原因:您正在使用太大的位图,导致其无法适应内存。请首先尝试缩放位图。此外,避免在UI线程中使用Thread.sleep(),这会导致不良的用户体验。

解决方法:首先尝试缩放位图,以确保其适应内存限制。可以参考Android官方文档中的加载位图的方法

避免在UI线程中使用Thread.sleep(),这会导致应用程序无响应,给用户带来不好的体验。可以使用其他方法来替代Thread.sleep(),例如使用Handler.postDelayed()来实现延迟操作。

以下是一个示例代码,演示如何加载并缩放位图:

// 加载位图
Bitmap originalBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.large_bitmap);
// 计算缩放比例
int desiredWidth = 500; // 设置期望的宽度
int desiredHeight = 500; // 设置期望的高度
float scale = Math.min((float) desiredWidth / originalBitmap.getWidth(), (float) desiredHeight / originalBitmap.getHeight());
// 缩放位图
Matrix matrix = new Matrix();
matrix.postScale(scale, scale);
Bitmap scaledBitmap = Bitmap.createBitmap(originalBitmap, 0, 0, originalBitmap.getWidth(), originalBitmap.getHeight(), matrix, true);
// 将缩放后的位图设置给ImageView
ImageView imageView = findViewById(R.id.imageView);
imageView.setImageBitmap(scaledBitmap);

通过以上方法,您可以解决Android ImageView显示大型位图时出现的问题,并提升应用的用户体验。

0
0 Comments

问题原因:在主线程中进行操作,导致应用程序无响应对话框出现。

解决方法:根据链接中的文档,学习如何有效加载图像。

以下是将内容整理成的文章:

在Android开发中,如果在主线程中进行某些操作,可能会导致应用程序无响应对话框出现。这种情况在加载图像时尤其常见。为了避免这种情况的发生,我们需要学习如何有效地加载图像。

为了解决这个问题,我们需要避免在主线程中进行图像加载操作。相反,我们应该将图像加载操作放在后台线程中进行。这样可以避免主线程被阻塞,确保应用程序的流畅运行。

为了学习如何有效地加载图像,我们可以参考Android开发官方文档中的一篇精彩文章。该文档提供了关于如何加载图像的详细指导,帮助我们避免常见的问题并提高图像加载的效率。

你可以通过点击以下链接阅读这篇文章:链接

通过学习并遵循这篇文章中的指导,我们可以避免在主线程中加载图像时出现应用程序无响应对话框,提高应用程序的性能和用户体验。

0
0 Comments

Android中ImageView出现问题的原因是图片加载不高效。解决方法是使用适当的解码方法来缩小图片,并在Android 2.3.3及以下版本中使用recycle()方法来回收内存,以便尽快释放内存。而在Android 3.0及以上版本中,可以使用BitmapFactory.Options.inBitmap字段来重用现有的位图,从而提高性能并减少内存分配和释放。

此外,还要注意不要在UI线程上调用sleep方法,因为这会阻塞UI线程,可能导致ANR(应用无响应)。可以参考相关链接了解更多信息。

参考链接:

- [OutOfMemory error with Bitmap](https://stackoverflow.com/questions/16765899)

- [加载位图](http://developer.android.com/training/displaying-bitmaps/load-bitmap.html)

- [BitmapFactory](http://developer.android.com/reference/android/graphics/BitmapFactory.html)

- [管理内存](http://developer.android.com/training/displaying-bitmaps/manage-memory.html)

- [性能和ANR](http://developer.android.com/training/articles/perf-anr.html)

0