少量图像的活动在手机上运行缓慢

时间:2016-07-20 23:35:44

标签: android android-studio gridview imageview

我见过其他类似的帖子,这些帖子并没有解决我的问题,因为我的图像分辨率很小(见底部)与他们的相比。我想要一个活动,其中我列出了像是listview的imageview。但由于我不知道如何在Listview中做到这一点,我决定使用gridview和每列一个元素。在这里我的代码 - 它主要是从示例developer.android.com复制的,除了我将网格的宽度拉伸到屏幕的宽度:

public class ImageAdap extends BaseAdapter {
private Context mContext;

private int widthDisplay;

public ImageAdap(Context c, int width) { //int width is the width of the display in pixel
    mContext = c;
    widthDisplay = width;
}

public int getCount() {
    return mThumbIds.length;
}

public Object getItem(int position) {
    return null;
}

public long getItemId(int position) {
    return 0;
}

// create a new ImageView for each item referenced by the Adapter
public View getView(int position, View convertView, ViewGroup parent) {
    ImageView imageView;

    int height = widthDisplay * 3 / 4;

    if (convertView == null) {
        // if it's not recycled, initialize some attributes
        imageView = new ImageView(mContext);
        imageView.setLayoutParams(new GridView.LayoutParams(widthDisplay, height));
        imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
        imageView.setPadding(8, 8, 8, 8);
    } else {
        imageView = (ImageView) convertView;
    }

    imageView.setImageResource(mThumbIds[position]);
    return imageView;
}

// references to our images
private Integer[] mThumbIds = {
        R.drawable.sampleda_01,
        R.drawable.sampleda_02,
        R.drawable.sampleda_03,
        R.drawable.sampleda_04 
};  }

代码在我的8'平板电脑上流畅地工作(我也在10'虚拟设备上进行了测试,它也运行良好)。但是在两个不同的手机和两个约5英寸的虚拟设备上它落后于地狱。

我的图片的分辨率为800x640。我也测试了600x480(图像的质量也最差,每个像90kb) - >所有相同的结果。似乎图像的分辨率对我的问题无关紧要。但是因为它适用于平板电脑:我的平板电脑与我测试的手机相比较旧,所以使用的硬件也不应该是问题的根源。

我在4.1中设计了应用程序,并在虚拟设备和5.0上测试了4.4和6.0,不知道哪个版本带有手机 - > API也不应该是问题。

你们有什么想法吗?

2 个答案:

答案 0 :(得分:1)

尝试实现ViewHolder模式。这必须提高生产力。 这是一个很好的例子,说明如何做到这一点: click

为什么你的' getItem()'方法返回' null'?

答案 1 :(得分:1)

我遇到了保存问题,我在AndroidManifest.xml中添加android:largeHeap="true"然后效果更好。但我不确定同样的原因是否会导致问题