我创建了非常简单的Android应用程序,显示图像。 代码:
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
activity_main.xml中
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" >
<ImageView
android:id="@+id/imageView1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/textView1"
android:scaleType="matrix"
android:src="@drawable/img_big_size"
/>
</RelativeLayout>
此外,我有两张相同的图片,首先是img_big_size.jpg(大小为468 KB),第二张是img_small_size.jpg(大小为192 KB)。 第一个图像具有更高的分辨率,因此它比第二个图像需要更多的内存。 当我尝试显示第二个图像(img_small_size.jpg)应用程序工作正常并显示图像。 但是当我尝试显示拳头图像(img_small_size.jpg)时,应用程序不显示图像只显示黑屏。为什么我的应用程序无法显示第一张图片如何显示第一张图片?
我想显示第一张图片,因为当我首先缩放图像时,图像更清晰 而不是第二张图片。
答案 0 :(得分:3)
你的大图像尺寸是:1571x2166
OpenGLRenderer 硬件加速无法处理大于 2048x2048 的位图。您可以尝试通过在AndroidManifest.xml 文件中的中定义 android:hardwareAccelerated =“false ”来禁用硬件加速。
<application
android:hardwareAccelerated="false"
android:largeHeap="true" >
或为了获得最佳性能,您可以在显示前调整图像大小。 保留大堆将显着降低您的应用程序性能。