【发布时间】:2012-06-02 23:01:27
【问题描述】:
我正在为平板电脑 (1024x768) 开发 Android 应用程序。我在这里搜索并找到了一些解决方案,但有人解决了我的问题。该应用程序有 5 个屏幕,每个屏幕都有一个我加载的 ImageView:
<ImageView
android:id="@+id/imageView1"
android:layout_width="1024dp"
android:layout_height="768dp"
android:layout_centerHorizontal="TRUE"
android:src="@drawable/scene1"
/>
第一个和第二个屏幕加载良好,但是当我尝试加载第三个屏幕时,出现以下错误(我通过 startActivity 加载的每个屏幕,它的布局。这不是布局错误,因为如果我用不同的顺序,我也可以加载两个和第三个 crase):
05-28 17:03:51.774: E/AndroidRuntime(401): java.lang.RuntimeException: Unable to start activity ComponentInfo{xxx}: android.view.InflateException: Binary XML file line #10: Error inflating class <unknown>
05-28 17:03:51.774: E/AndroidRuntime(401): Caused by: android.view.InflateException: Binary XML file line #10: Error inflating class <unknown>
05-28 17:03:51.774: E/AndroidRuntime(401): Caused by: java.lang.reflect.InvocationTargetException
05-28 17:03:51.774: E/AndroidRuntime(401): Caused by: java.lang.OutOfMemoryError: bitmap size exceeds VM budget
我尝试了几件事:
@Override
public void onPause()
{
super.onPause();
Log.i("URI", "Syste.gc");
// yada yada yada...
System.gc();
}
和
@Override
protected void onDestroy()
{
super.onDestroy();
unbindDrawables(findViewById(R.id.RootView));
System.gc();
}
private void unbindDrawables(View view)
{
if (view.getBackground() != null)
{
view.getBackground().setCallback(null);
}
if (view instanceof ViewGroup)
{
for (int i = 0; i < ((ViewGroup) view).getChildCount(); i++)
{
unbindDrawables(((ViewGroup) view).getChildAt(i));
}
((ViewGroup) view).removeAllViews();
}
}
但我总是得到错误。
图片为PNG,重量小于50k。
有什么建议吗?
谢谢!
【问题讨论】:
-
图像的文件大小几乎无关紧要。像素的宽度和高度是多少?
-
1024x768 是宽度和高度,但我需要图像填满整个屏幕...
标签: java android android-layout tablet