我正在尝试加载&在FrameLayout下的ImageView上显示2个大图像。但该应用程序往往崩溃。我能够一次加载1张图片但不能加载2.我要做的是基本上使用这种方法显示带有可点击区域的地图: https://blahti.wordpress.com/2012/06/26/images-with-clickable-areas/
稍后我将实现缩放和平移选项。但是现在我只想打开我的应用程序而不会崩溃。
谢谢!
图像尺寸(适用于两张图片): 6027 x 4520
这是代码: XML:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<ImageView
android:id="@+id/mainmap"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:src="@drawable/tc1"/>
<ImageView
android:id="@+id/ident"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:src="@drawable/mask"
android:visibility="invisible" />
</FrameLayout>
班级:
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.widget.ImageView;
public class MainMap extends Activity {
ImageView a_ident, map;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
a_ident = (ImageView) findViewById(R.id.ident);
map = (ImageView) findViewById(R.id.mainmap);
BitmapFactory.Options option = new BitmapFactory.Options();
option.inJustDecodeBounds = true;
BitmapFactory.decodeResource(getResources(), R.id.ident, option);
BitmapFactory.Options option1 = new BitmapFactory.Options();
option1.inJustDecodeBounds = true;
BitmapFactory.decodeResource(getResources(), R.id.mainmap, option1);
}
}
答案 0 :(得分:0)
您应该阅读位图的尺寸并根据屏幕的分辨率调整位图大小。实际上不必显示像素比显示器多的图像。这是手册。
http://developer.android.com/training/displaying-bitmaps/load-bitmap.html
答案 1 :(得分:0)
您的应用因OutOfMemoryException
而崩溃。您将不得不降低图像分辨率,因此不会占用太多内存。设备具有一定量的内存,专用于处理Bitmaps
;你的应用程序显然超过它。正如TpoM6oH所说,你应该阅读关于如何正确操纵Bitmaps
的{{3}}。