添加按钮时应用程序崩溃-Android

添加按钮时应用程序崩溃-Android,android,xml,button,views,Android,Xml,Button,Views,我在android应用程序设计方面有绝对的0经验。我的一个朋友让我尝试为他们的应用程序创建一个功能,这就是我过去一周一直在尝试的。我需要做的前几件事是添加背景图像(完成)、添加一些文本(完成)和添加一个按钮,以显示菜单(问题)。如果不添加按钮,我可以在Android Studio的内置模拟器中运行应用程序,但添加按钮/imageButton后,应用程序就会崩溃。在这一点上,我甚至没有试图让按钮打开菜单,那是另一天。我所要做的就是让按钮不要使应用程序崩溃。我一直在互联网上寻找教程、文档,甚至这里的

我在android应用程序设计方面有绝对的0经验。我的一个朋友让我尝试为他们的应用程序创建一个功能,这就是我过去一周一直在尝试的。我需要做的前几件事是添加背景图像(完成)、添加一些文本(完成)和添加一个按钮,以显示菜单(问题)。如果不添加按钮,我可以在Android Studio的内置模拟器中运行应用程序,但添加按钮/imageButton后,应用程序就会崩溃。在这一点上,我甚至没有试图让按钮打开菜单,那是另一天。我所要做的就是让按钮不要使应用程序崩溃。我一直在互联网上寻找教程、文档,甚至这里的stack overflow,但我找不到任何东西

现在我甚至还没有开始使用Java代码,我只使用XML代码(见下文)。我将发布错误消息(来自android监视器功能的消息),我将发布我的设备在studio中的外观图像以及出现在模拟器上的消息。如果有人能帮助我,我将非常感激

07-17 21:38:05.700 4273-4273/com.example.android.postvu E/AndroidRuntime: FATAL EXCEPTION: main
                                                                      Process: com.example.android.postvu, PID: 4273
                                                                      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:1415)
                                                                          at android.graphics.drawable.BitmapDrawable.draw(BitmapDrawable.java:545)
                                                                          at android.view.View.getDrawableRenderNode(View.java:17314)
                                                                          at android.view.View.drawBackground(View.java:17250)
                                                                          at android.view.View.draw(View.java:17062)
                                                                          at android.view.View.updateDisplayListIfDirty(View.java:16053)
                                                                          at android.view.View.draw(View.java:16837)
                                                                          at android.view.ViewGroup.drawChild(ViewGroup.java:3764)
                                                                          at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3550)
                                                                          at android.view.View.updateDisplayListIfDirty(View.java:16048)
                                                                          at android.view.View.draw(View.java:16837)
                                                                          at android.view.ViewGroup.drawChild(ViewGroup.java:3764)
                                                                          at android.support.design.widget.CoordinatorLayout.drawChild(CoordinatorLayout.java:1228)
                                                                          at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3550)
                                                                          at android.view.View.updateDisplayListIfDirty(View.java:16048)
                                                                          at android.view.View.draw(View.java:16837)
                                                                          at android.view.ViewGroup.drawChild(ViewGroup.java:3764)
                                                                          at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3550)
                                                                          at android.view.View.updateDisplayListIfDirty(View.java:16048)
                                                                          at android.view.View.draw(View.java:16837)
                                                                          at android.view.ViewGroup.drawChild(ViewGroup.java:3764)
                                                                          at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3550)
                                                                          at android.view.View.updateDisplayListIfDirty(View.java:16048)
                                                                          at android.view.View.draw(View.java:16837)
                                                                          at android.view.ViewGroup.drawChild(ViewGroup.java:3764)
                                                                          at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3550)
                                                                          at android.view.View.updateDisplayListIfDirty(View.java:16048)
                                                                          at android.view.View.draw(View.java:16837)
                                                                          at android.view.ViewGroup.drawChild(ViewGroup.java:3764)
                                                                          at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3550)
                                                                          at android.view.View.updateDisplayListIfDirty(View.java:16048)
                                                                          at android.view.View.draw(View.java:16837)
                                                                          at android.view.ViewGroup.drawChild(ViewGroup.java:3764)
                                                                          at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3550)
                                                                          at android.view.View.draw(View.java:17074)
                                                                          at com.android.internal.policy.DecorView.draw(DecorView.java:751)
                                                                          at android.view.View.updateDisplayListIfDirty(View.java:16053)
                                                                          at android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:656)
                                                                          at android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:662)
                                                                          at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:770)
                                                                          at android.view.ViewRootImpl.draw(ViewRootImpl.java:2796)
                                                                          at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:2604)
                                                                          at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2211)
                                                                          at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1246)
                                                                          at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6301)
                                                                          at android.view.Choreographer$CallbackRecord.run(Choreographer.java:871)
                                                                          at android.view.Choreographer.doCallbacks(Choreographer.java:683)
                                                                          at android.view.Choreographer.doFrame(Choreographer.java:619)
                                                                          at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:857)
                                                                          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:6077)
                                                                          at java.lang.reflect.Method.invoke(Native Method)
                                                                          at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:866)
                                                                          at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:756)
这是我的XML代码:

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:showIn="@layout/activity_main"
tools:context="com.example.android.postvu.MainActivity">

<ImageView
    android:id="@+id/imageView2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:contentDescription="@string/background"
    android:scaleType="centerCrop"
    android:src="@drawable/grid" />

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/image_view_editor"
    android:textSize="28sp"
    android:textStyle="bold"
    android:textColor="@android:color/black"
    android:id="@+id/textView"
    android:layout_marginLeft="8dp"
    app:layout_constraintLeft_toLeftOf="parent"
    android:layout_marginRight="8dp"
    app:layout_constraintRight_toRightOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    android:layout_marginTop="8dp" />


<Button
    android:layout_width="50dp"
    android:layout_height="50dp"
    android:background="@drawable/logo_black"
    android:scaleType="centerCrop"
    android:layout_marginLeft="8dp"
    app:layout_constraintLeft_toLeftOf="parent"
    android:layout_marginRight="8dp"
    app:layout_constraintRight_toRightOf="parent"
    app:layout_constraintBottom_toBottomOf="parent"
    android:layout_marginBottom="8dp"
    android:layout_marginTop="8dp"
    app:layout_constraintTop_toBottomOf="@+id/textView"
    app:layout_constraintVertical_bias="0.98" />

Image#2(在模拟器中)


您的资产可能太大。将(高分辨率)
drawable
中的图像移动到
drawable xxhdpi
。在这种情况下,它可能是您的
drawable/grid
drawable/logo_black

有关更多详细信息,请阅读此文件

查看错误日志:

java.lang.RuntimeException: Canvas: trying to draw too large(110250000bytes) bitmap.
您的映像太大。这些解决方案之一将解决您的问题 1-使用Glide或Piccaso之类的库加载图像。 2-如果您将图像放入可绘制文件夹,您可以将其移动到可绘制xxxhdpi或可绘制xxhdpi

将图像移动到(高分辨率)可绘制xxhdpi。但在应用程序开发中,您不需要使用它来增大APK文件大小


图像的实际大小太大,因此对其进行了压缩。

用于按钮的可绘制图像太大,约为100MB,请减小大小或使用其他可绘制图像。

请检查按钮中使用的背景图像。我认为在按钮的背景上绘制可绘制的图像时抛出异常太大了


android:background=“@drawable/logo_black”检查此背景图像大小

您的背景图像太大,必须设置为屏幕大小。您可以共享背景的宽度和高度。

您是如何导入图像的?在Android Studio中使用图像资源(右键单击Res目录并选择图像资源)图像将根据需要正确生成

我认为您的图像大小太大,因此您应该压缩图像大小,然后在imageview中使用

 bitmap.compress(Bitmap.CompressFormat.JPEG, 70, stream);
这段代码有助于压缩长文件。 1.首先将图像转换为位图。 2.在位图上应用此行。 3.在imageview中设置位图数据