在 GridView 中具有相同大小和分辨率的图像不会运行



>我正在尝试处理显示图像的代码代码是正确的,并且显示了一些图像,但是当我在评论后按图像"我为enplane编写了它"应用井停止所有图像具有相同的大小和分辨率我不知道错误在哪里...

Grid_activities1

package com.children_activities;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.GridView;
public class Grid_activities1 extends AppCompatActivity {
GridView gridView;
Integer[] image_grid={R.drawable.month1,R.drawable.month2,
        R.drawable.month3,R.drawable.month4,
        R.drawable.month5,R.drawable.month6,
        R.drawable.month7,
       // R.drawable.month8,
      //  R.drawable.month9,
   //     R.drawable.month10,
      //  R.drawable.month11,
     //   R.drawable.month12,
        R.drawable.month16
};
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_grid_activities1);
    gridView=findViewById(R.id.gridview);
    GridAdapter gridAdapter=new GridAdapter(getApplication(),image_grid);
    gridView.setAdapter(gridAdapter);
    gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int 
  position, long id) {
            Intent intent=new 
 Intent(Grid_activities1.this,Image_show.class);
            intent.putExtra("images",image_grid[position]);
            //intent.putExtra("text",info[position]);
            startActivity(intent);
        }
    });

}

}

日志猫有错误

2019-01-13 11:42:11.675 19394-19394/com.children_activities E/AndroidRuntime: 
    FATAL EXCEPTION: main
    Process: com.children_activities, PID: 19394
    java.lang.RuntimeException: Unable to start activity 
    ComponentInfo{com.children_activities/com.children_activities.Image_show}: 
    android.view.InflateException: Binary XML file line #2: Binary XML file line 
    #2: Error inflating class <unknown>
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2927)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2988)
        at android.app.ActivityThread.-wrap14(ActivityThread.java)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1631)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:154)
        at android.app.ActivityThread.main(ActivityThread.java:6682)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1520)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1410)
     Caused by: android.view.InflateException: Binary XML file line #2: Binary XML file line #2: Error inflating class <unknown>
     Caused by: android.view.InflateException: Binary XML file line #2: Error inflating class <unknown>
     Caused by: java.lang.reflect.InvocationTargetException
        at java.lang.reflect.Constructor.newInstance0(Native Method)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:430)
        at android.view.LayoutInflater.createView(LayoutInflater.java:652)
        at com.android.internal.policy.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:58)
        at android.view.LayoutInflater.onCreateView(LayoutInflater.java:724)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:792)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:734)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:496)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:427)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:378)
        at android.support.v7.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:469)
        at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140)
        at com.children_activities.Image_show.onCreate(Image_show.java:15)
        at android.app.Activity.performCreate(Activity.java:6942)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1126)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2880)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2988)
        at android.app.ActivityThread.-wrap14(ActivityThread.java)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1631)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:154)
        at android.app.ActivityThread.main(ActivityThread.java:6682)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1520)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1410)
     Caused by: java.lang.OutOfMemoryError: Failed to allocate a 24471564 byte allocation with 5218424 free bytes and 4MB until OOM
        at dalvik.system.VMRuntime.newNonMovableArray(Native Method)
        at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method)
        at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:700)
        at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:535)
        at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:1179)
        at android.content.res.ResourcesImpl.loadDrawableForCookie(ResourcesImpl.java:770)
        at android.content.res.ResourcesImpl.loadDrawable(ResourcesImpl.java:621)
        at android.content.res.Resources.loadDrawable(Resources.java:1727)
        at android.content.res.TypedArray.getDrawable(TypedArray.java:945)
        at android.view.View.<init>(View.java:4516)
        at android.view.ViewGroup.<init>(ViewGroup.java:579)
        at android.widget.RelativeLayout.<init>(RelativeLayout.java:248)
        at android.widget.RelativeLayout.<init>(RelativeLayout.java:244)
2019-01-13 11:42:11.675 19394-19394/com.children_activities E/AndroidRuntime:     at android.widget.RelativeLayout.<init>(RelativeLayout.java:240)
            ... 25 more

image_show.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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"
    android:background="@drawable/backg"
    tools:context=".Image_show"
    tools:layout_editor_absoluteY="25dp">
    <ImageView
        android:id="@+id/selected_image"
        android:layout_width="match_parent"
        android:layout_height="300dp"
        android:layout_alignParentTop="true"
        android:layout_marginTop="63dp" />
    <TextView
        android:id="@+id/txt_show"
        android:layout_width="match_parent"
        android:layout_height="80dp"
        android:layout_alignParentBottom="true"
        android:layout_marginBottom="142dp"
        android:gravity="center"
        android:text="hii"
        android:textColor="#782ad4"
        android:textSize="35dp"
        android:textStyle="bold" />

</RelativeLayout>

内存不足错误是主要错误,这是由于大图像大小导致内存泄漏而发生的。您可以在manifest.xml的应用程序标记中添加android:largeHeap="true"android:hardwareAccelerated="false"

 <application
    android:allowBackup="true"
    android:hardwareAccelerated="false"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:largeHeap="true"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">

问题出在可绘制对象上。尝试将@dawable/backg移动到res/drawable-xhdpi/文件夹。

最新更新