具有高分辨率崩溃的Android ImageView

标签 android xml exception

我有一个只包含一个 textView 和一个 ImageView

的 Activity
<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    >


    <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textAppearance="?android:attr/textAppearanceLarge"
            android:text="Large Text"
            android:id="@+id/textView"
            android:layout_gravity="left|center_vertical"
            android:padding="10dp"/>

    <ScrollView android:layout_height="wrap_content" android:layout_width="fill_parent" >
        <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical">
    <ImageView
            android:layout_width="wrap_content"
            android:layout_height="330dip"
            android:id="@+id/civil_seminar_image"
            android:layout_gravity="left|center_vertical"
            android:src="@drawable/seminar"/>
        </LinearLayout>
    </ScrollView>
</LinearLayout>

当这个 ImageView 加载正常大小的图像时,没问题,但是当它加载大尺寸和高分辨率的图像时,它会崩溃我的应用程序并给我这个异常

Failed looking up window
        java.lang.IllegalArgumentException: Requested window android.os.BinderProxy@4356f810 does not exist
        at com.android.server.wm.WindowManagerService.windowForClientLocked(WindowManagerService.java:8911)
        at com.android.server.wm.WindowManagerService.windowForClientLocked(WindowManagerService.java:8902)
        at com.android.server.wm.WindowState$DeathRecipient.binderDied(WindowState.java:934)
        at android.os.BinderProxy.sendDeathNotice(Binder.java:449)
        at dalvik.system.NativeStart.run(Native Method)

我也通过 Stack 和 Google 搜索了很多,我得到的只是建议不要加载这个大图像,我也尝试将它放在 ScrollView 中滚动它但也失败了,任何想法

最佳答案

如果你想在屏幕上显示一个非常大的图像,你必须缩小它。我想这不是您想听到/阅读的答案,但这是唯一的方法。

为避免缩放时质量不佳,您可以在缩放时增加 inSample 大小,并使用增加的 inSample 大小再次解码原始图像资源。

作为解决方法,您可以尝试在 WebView 上加载图像:

webview.getSettings().setBuiltInZoomControls(true);
webview.loadDataWithBaseURL("file:///android_asset/", "<img src='file:///android_res/drawable/example.png' />", "text/html", "utf-8", null);

关于具有高分辨率崩溃的Android ImageView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20337058/

相关文章:

android - 不能从静态上下文中引用非静态变量?

Java递归和异常

安卓 : Can't call BroadcastReceiver Class using Activity

android - HTML5 音频不适用于 Android 4.4 上的 Crosswalk Cordova 或基于标准 Cordova 的 WebView

android - 以 Shell 用户身份运行 Android 应用程序

ruby - 是否有可能获得引发错误的行号?

java - 重复相同的异常堆栈跟踪

java - 如何摆脱出现在我的 Android 应用程序顶部的额外间距?

java - 如何使用 Android SDK 在 onCreate 语句中动态更改 Activity 的背景颜色?

c# - 使用 MemoryStream 写出到 XML