Итак, у меня есть активность, которая представляет собой сетку изображений HD, которые сжимаются до примерно 64x64 пикселей. Я хочу, чтобы иметь возможность получить изображение, а затем загрузить их в действие, но я получаю сообщение об ошибке, в котором говорится, что память, которая требуется для загрузки всех изображений, намного выше, чем может обрабатывать эмулятор/телефон.Android: как загружать несколько изображений и звуков в активность без ошибки памяти
Я решил проблему, зайдя в Photoshop и сделав 64x64 изображения, но я видел приложения, которые запускают видео и имеют сотни изображений в представлении текущей деятельности. Как они компилируются со всей этой памятью в одном списке?
У меня есть другое приложение, которое представляет собой анимацию, которая воспроизводит полноэкранную анимацию с 20 картинками, но в Android Studio такая же ошибка связана с памятью.
Как загрузить 20 изображений в одном действии, не получая ошибку из памяти.
Код для деятельности с GridView @Override защищен недействительным OnCreate (Bundle savedInstanceState) { super.onCreate (savedInstanceState); setContentView (R.layout.wallpapers);
//**
//Gridview, onclick of icon will open up dialog
//allows to SAVE, SET, CANCEL - not in that order
GridView gridview = (GridView) findViewById(R.id.gridview);
gridview.setAdapter(new ImageAdapter(this));
gridview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View v,
int position, long id) {
Toast.makeText(Wallpaper.this, "Setting BG to ..." + position,
Toast.LENGTH_SHORT).show();
}
});
}
Код для ImageAdapter
public class ImageAdapter extends BaseAdapter {
private Context mContext;
public ImageAdapter(Context c) {
mContext = c;
}
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;
if (convertView == null) {
// if it's not recycled, initialize some attributes
imageView = new ImageView(mContext);
imageView.setLayoutParams(new GridView.LayoutParams(85, 85));
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.raw.es_1_pix, R.raw.es1_c, R.raw.es2_c, R.raw.es_1_pix
//.raw.es_1_pix,R.raw.es_1_pix,R.raw.es_1_pix,R.raw.es_1_pix,R.raw.es_1_pix
//R.raw.es2_c, R.raw.es3_c, R.raw.es4_c,
//R.raw.es5_c, R.raw.es6_c, R.raw.es7_c
};
}
можете ли вы опубликовать часть кода адаптера gridview? – petey
'есть сотни изображений в представлении текущей деятельности' - они этого не делают. Узнайте, как работает «ListView» или «RecyclerView». –
Да, нужно видеть, что код адаптера, список 20 картинок - ничто. Что-то еще происходит. –