如何在FrameLayout下的2个不同ImageView上一次加载2个大位图?

时间:2014-05-21 19:02:21

标签: android imageview

我正在尝试加载&在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);



}

}

2 个答案:

答案 0 :(得分:0)

您应该阅读位图的尺寸并根据屏幕的分辨率调整位图大小。实际上不必显示像素比显示器多的图像。这是手册。

http://developer.android.com/training/displaying-bitmaps/load-bitmap.html

答案 1 :(得分:0)

您的应用因OutOfMemoryException而崩溃。您将不得不降低图像分辨率,因此不会占用太多内存。设备具有一定量的内存,专用于处理Bitmaps;你的应用程序显然超过它。正如TpoM6oH所说,你应该阅读关于如何正确操纵Bitmaps的{​​{3}}。