java.lang.RuntimeException:Canvas:尝试绘制太大的位图

时间:2017-03-07 07:47:00

标签: android

<android.support.design.widget.FloatingActionButton
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:clickable="true"
    app:fabSize="normal"
    app:srcCompat="@mipmap/ic_launcher"
    android:id="@+id/floatingActionButton"
    android:layout_gravity="bottom|end"
    android:layout_marginRight="20dp"
    android:layout_marginBottom="20dp"
    app:backgroundTint="#54ddde" />

目前,浮动按钮的图像是android。但我想改为'加'图像。

- 喜欢这个

<android.support.design.widget.FloatingActionButton
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:clickable="true"
    app:fabSize="normal"
    android:src="@drawable/img_plus"
    android:id="@+id/floatingActionButton"
    android:layout_gravity="bottom|end"
    android:layout_marginRight="20dp"
    android:layout_marginBottom="20dp"
    app:backgroundTint="#54ddde" />

但是我只更改图像,应用程序已停止。我真的很尴尬。 有人可以帮帮我吗。

java.lang.RuntimeException: Canvas: trying to draw too large(110250000bytes) bitmap.
 at android.view.DisplayListCanvas.throwIfCannotDraw(DisplayListCanvas.java:260)
 at android.graphics.Canvas.drawBitmap(Canvas.java:1420)
 at android.graphics.drawable.BitmapDrawable.draw(BitmapDrawable.java:545)
 at android.widget.ImageView.onDraw(ImageView.java:1286)
 at android.view.View.draw(View.java:18313)
 at android.view.View.updateDisplayListIfDirty(View.java:17291)
 at android.view.View.draw(View.java:18075)
 at android.view.ViewGroup.drawChild(ViewGroup.java:3966)
 at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3752)
 at android.view.View.draw(View.java:18316)
 at android.widget.ScrollView.draw(ScrollView.java:2774)
 at android.view.View.updateDisplayListIfDirty(View.java:17291)
 at android.view.View.draw(View.java:18075)
 at android.view.ViewGroup.drawChild(ViewGroup.java:3966)
 at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3752)
 at android.view.View.updateDisplayListIfDirty(View.java:17286)
 at android.view.View.draw(View.java:18075)
 at android.view.ViewGroup.drawChild(ViewGroup.java:3966)
 at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3752)
 at android.view.View.updateDisplayListIfDirty(View.java:17286)
 at android.view.View.draw(View.java:18075)
 at android.view.ViewGroup.drawChild(ViewGroup.java:3966)
 at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3752)
 at android.view.View.updateDisplayListIfDirty(View.java:17286)
 at android.view.View.draw(View.java:18075)
 at android.view.ViewGroup.drawChild(ViewGroup.java:3966)
 at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3752)
 at android.view.View.updateDisplayListIfDirty(View.java:17286)
 at android.view.View.draw(View.java:18075)
 at android.view.ViewGroup.drawChild(ViewGroup.java:3966)
 at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3752)
 at android.view.View.updateDisplayListIfDirty(View.java:17286)
 at android.view.View.draw(View.java:18075)
 at android.view.ViewGroup.drawChild(ViewGroup.java:3966)
 at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3752)
 at android.view.View.draw(View.java:18316)
 at com.android.internal.policy.DecorView.draw(DecorView.java:850)
 at android.view.View.updateDisplayListIfDirty(View.java:17291)
 at android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:666)
 at android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:672)
 at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:780)
 at android.view.ViewRootImpl.draw(ViewRootImpl.java:3093)
 at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:2889)
 at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2483)
 at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1490)
 at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7027)
 at android.view.Choreographer$CallbackRecord.run(Choreographer.java:927)
 at android.view.Choreographer.doCallbacks(Choreographer.java:702)
 at android.view.Choreographer.doFrame(Choreographer.java:638)
 at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:913)
 at android.os.Handler.handleCallback(Handler.java:751)
 at android.os.Handler.dispatchMessage(Handler.java:95)
 at android.os.Looper.loop(Looper.java:154)
 at android.app.ActivityThread.main(ActivityThread.java:6688)
 at java.lang.reflect.Method.invoke(Native Method)
 at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1468)
 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1358)

这是log cat中的错误。

3 个答案:

答案 0 :(得分:2)

如果您使用的是.jpg格式,则可以通过转换为webp格式来压缩该图像  点击enter image description here

答案 1 :(得分:0)

以礼仪方式进行,试试这个。

    ImageView icon = new ImageView(this); // Create an icon
    icon.setImageDrawable(getResources().getDrawable(R.drawable.add_user));

    //set the appropriate background for the main floating action button along with its icon
    FloatingActionButton factionButton = new FloatingActionButton.Builder(this)
            .setContentView(icon)
            .setBackgroundDrawable(R.drawable.selector_floating_button)
            .build();

答案 2 :(得分:0)

用较低分辨率的图像 JPG / PNG 替换所有启动画面屏幕,以下是设备可能需要的分辨率(res / drawable中的文件夹)帮助,检查您当前使用的初始屏幕图像的大小和分辨率。

  1. 320 * 480-MDPI
  2. 480 * 800-HDPI
  3. 720 * 1280-XHDPI
  4. 960 * 1600-XXHDPI
  5. 1280 * 1920-XXXHDPI