使用背景图片时应用崩溃

时间:2018-12-20 17:26:00

标签: android xml

这是xml代码:

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
  >


    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:background="@drawable/backgound"
        android:orientation="vertical">



        <TextView
            android:id="@+id/txt1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_marginTop="20dp"

            android:text="Welcome to Ordering Menu"
            android:textColor="@android:color/black"
            android:textSize="25sp"
             />

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_marginTop="20dp"
            android:layout_height="wrap_content"
            android:orientation="vertical">



            <Button
                android:id="@+id/btn2"
                android:layout_width="48dp"
                android:layout_height="48dp"

                android:layout_marginTop="20dp"
                android:onClick="increase"
                android:text="+"
                android:textColor="@android:color/black"/>




            <TextView

                android:id="@+id/quantity_text_view"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="20dp"
                android:text="0"
                android:textSize="20sp"
             />

            <Button
                android:id="@+id/btn3"
                android:layout_width="50dp"
                android:textColor="@android:color/black"
                android:layout_height="50dp"

                 android:layout_marginTop="20dp"
                android:onClick="decrease"
                android:textSize="30sp"
                android:text="-" />


        </LinearLayout>


        <TextView

            android:id="@+id/kk"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Price" />

        <TextView
            android:id="@+id/price_text_view"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="20dp"
            android:layout_marginTop="10dp"
            android:text="$0"
            android:textColor="#000000" />


        <Button
            android:id="@+id/btn1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="10dp"
            android:layout_marginTop="15dp"
            android:onClick="submitOrder"
            android:text="ORDER" />


    </LinearLayout>

</android.support.constraint.ConstraintLayout>

当我将颜色用作背景时的XML代码:

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
  >


    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:background="@android:color/holo_blue_light"
        android:orientation="vertical">



        <TextView
            android:id="@+id/txt1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_marginTop="20dp"

            android:text="Welcome to Ordering Menu"
            android:textColor="@android:color/black"
            android:textSize="25sp"
             />

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_marginTop="20dp"
            android:layout_height="wrap_content"
            android:orientation="vertical">



            <Button
                android:id="@+id/btn2"
                android:layout_width="48dp"
                android:layout_height="48dp"

                android:layout_marginTop="20dp"
                android:onClick="increase"
                android:text="+"
                android:textColor="@android:color/black"/>




            <TextView

                android:id="@+id/quantity_text_view"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="20dp"
                android:text="0"
                android:textSize="20sp"
             />

            <Button
                android:id="@+id/btn3"
                android:layout_width="50dp"
                android:textColor="@android:color/black"
                android:layout_height="50dp"

                 android:layout_marginTop="20dp"
                android:onClick="decrease"
                android:textSize="30sp"
                android:text="-" />


        </LinearLayout>


        <TextView

            android:id="@+id/kk"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Price" />

        <TextView
            android:id="@+id/price_text_view"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="20dp"
            android:layout_marginTop="10dp"
            android:text="$0"
            android:textColor="#000000" />


        <Button
            android:id="@+id/btn1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="10dp"
            android:layout_marginTop="15dp"
            android:onClick="submitOrder"
            android:text="ORDER" />


    </LinearLayout>

</android.support.constraint.ConstraintLayout>

1 个答案:

答案 0 :(得分:2)

mention in the comments表示您使用的背景图像尺寸为1600 x 2560像素。当渲染到屏幕上时,所有图像都会放大为位图,因此对于这些尺寸为1600 * 2560 * 3字节(即11.71 MB,最小)的图像,this answer会进行粗略计算在单张图片上。

基于this answer,假设您的应用程序总共有16-32MB的可用RAM,那么您在此映像中占用了很大一部分内存。您需要减少使用图像编辑器确定该图像的尺寸,并将其替换到应用程序的res/drawable文件夹中。不管怎么说,这是在图像尺寸和质量在设备上渲染后的折衷方案。

我建议您阅读Android文档about supporting bitmaps on different screen densities,以便您可以按设备提供最佳图像质量,而无需再次遇到此问题。