【问题标题】:Using onclicklistener dynamic image display使用onclicklistener动态图片展示
【发布时间】:2016-01-10 13:30:32
【问题描述】:

这是我创建应用程序的代码,该应用程序在单击时会显示下一个图像,我无法创建动态显示,单击图像时会崩溃。

<ImageView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/imageView"
    android:layout_alignParentBottom="true"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"
     />

java 文件:

public class MainActivity extends AppCompatActivity {

private ImageView im1;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    im1 = (ImageView) findViewById(R.id.imageView);
    im1.setImageResource(R.drawable.l);
    im1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            im1.setImageResource(R.drawable.m);
        }
    });
}

}

PS:最初在我的 XML 文件中,我使用的是 android:background="@drawable/l" 在开始时设置我的图像

日志:01-10 19:07:09.912 5465-5465/experiment.com.example.anurag.imageswap2 E/AndroidRuntime: 致命例外:主要 进程:experiment.com.example.anurag.imageswap2,PID:5465 java.lang.OutOfMemoryError:分配 74649612 字节失败 分配 4194304 个空闲字节和 28MB 直到 OOM 在 dalvik.system.VMRuntime.newNonMovableArray(本机方法) 在 android.graphics.BitmapFactory.nativeDecodeAsset(本机方法) 在 android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:609) 在 android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:444) 在 android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:1080) 在 android.content.res.Resources.loadDrawableForCookie(Resources.java:2635) 在 android.content.res.Resources.loadDrawable(Resources.java:2540) 在 android.content.res.Resources.getDrawable(Resources.java:806) 在 android.content.Context.getDrawable(Context.java:458) 在 android.support.v4.content.ContextCompatApi21.getDrawable(ContextCompatApi21.java:26) 在 android.support.v4.content.ContextCompat.getDrawable(ContextCompat.java:321) 在 android.support.v7.widget.TintManager.getDrawable(TintManager.java:175) 在 android.support.v7.widget.TintManager.getDrawable(TintManager.java:168) 在 android.support.v7.widget.AppCompatImageHelper.setImageResource(AppCompatImageHelper.java:51) 在 android.support.v7.widget.AppCompatImageView.setImageResource(AppCompatImageView.java:72) 在 Experiment.com.example.anurag.imageswap2.MainActivity$1.onClick(MainActivity.java:24) 在 android.view.View.performClick(View.java:5198) 在 android.view.View$PerformClick.run(View.java:21147) 在 android.os.Handler.handleCallback(Handler.java:739) 在 android.os.Handler.dispatchMessage(Handler.java:95) 在 android.os.Looper.loop(Looper.java:148) 在 android.app.ActivityThread.main(ActivityThread.java:5417) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

【问题讨论】:

  • 能否提供logcat?
  • 问题是内存不足,看起来你的图片有74兆,你为什么不调整你的图片大小然后再试一次?

标签: java android xml


【解决方案1】:

尝试将您的可绘制对象从较低的 MPI 移动到 HDPI 或更高维度的文件夹,如 XHDPI,具体取决于您的分辨率。

【讨论】:

  • 感谢伙伴,不知道允许的可绘制尺寸会记住这一点
  • 尝试了解更多关于OutOfMemory异常的信息,我很确定你会找到出路的。不客气。
【解决方案2】:

这将提高性能并避免内存不足

<application      
android:hardwareAccelerated="false"
android:largeHeap="true">

在清单中添加这些行

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-12
    • 2020-10-14
    • 1970-01-01
    • 1970-01-01
    • 2012-04-03
    • 1970-01-01
    相关资源
    最近更新 更多