Android ViewPager + GridView 的图像占用太多堆内存

标签 android gridview android-viewpager

我正在尝试为我的游戏制作一个关卡选择器,现在它可以工作了,但是,在某些手机上它确实很慢,有时甚至无法工作(FC),我意识到它使用了太多的堆内存。

我对 Android 开发还很陌生,所以这是我的代码,希望你能帮助我。

使用 VIEWPAGER 进行的 Activity :

   setContentView(R.layout.level_selector);
   ViewPagerAdapter adapter = new ViewPagerAdapter(this);
   ViewPager myPager = (ViewPager) findViewById(R.id.mypagerwontwork); //cool id huh
   myPager.setAdapter(adapter);
   myPager.setCurrentItem(0);

查看寻呼机适配器:

  public Object instantiateItem(View collection, int position) {
       LayoutInflater inflater = (LayoutInflater)    activity.getSystemService(activity.LAYOUT_INFLATER_SERVICE);
     if(position == 0)
     {
         View layout = inflater.inflate(R.layout.world1, null);
         final GridView gridview = (GridView) layout.findViewById(R.id.gridLvl);
         gridview.setAdapter(new LevelAdapter(activity,"World1"));
         gridview.setOnItemClickListener(itemClickListener);
         ((ViewPager) collection).addView(layout); 
         return layout;
     }

GridView 适配器:

public View getView(int position, View convertView, ViewGroup parent) {
        ImageView imageView = new ImageView(mContext);
        imageView.setLayoutParams(new GridView.LayoutParams(100, 100));
        if (mWorld.equals("World1"))
        {
            imageView.setImageResource(World1[position]);
        }

有用信息:

  • 共有 3 个“世界”(查看页面),每个世界都有不同的背景
  • 每个“世界”有 15 个图像,编号从 1 到 15。
  • 图像大小为:+- 12kb
  • BG 大小为:+- 140kb

我希望它是清楚的。

谢谢。

最佳答案

我发现我的图像太大,不是尺寸太大,而是分辨率太大。

我必须将它们的大小调整为 ldpi、mdpi 和 hdpi。

这些尺寸可以在以下位置找到:

Android activity image background size

Button Image size in android

关于Android ViewPager + GridView 的图像占用太多堆内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16015595/

相关文章:

java - 与 android 包冲突 - Amazon SNS

java - ListView 仅显示每行中的最后一项?

android - ViewPager + 带有 Activity 的选项卡上的选项卡

android - 多次在 ViewPager 中使用一个 Fragment

android - Android GPS 定位的 getAltitude() 是如何工作的

android - 安装 Android Studio - 未安装 SDK 组件

c# - 使用分页对 Gridview 列求和

Android:GridView 拉动刷新

angular - 如何将 MatPaginator 附加到 Angular Material 表中来自服务器的数据源?

android - 循环 ViewPager。 Fragments 在第一轮后无法正常工作