Что я получаю с сайта разработчика: «Если во время загрузки общий размер анимации превышает значение виртуальной кучной памяти, эта ошибка будет иметь место», а для решения - BitmapFactory
. Я попробовал в нижнем коде:java.lang.OutOfMemoryError появляется на анимации Загрузка?
Теперь вопрос: «что несет ответственность за эту ошибку?»:
ли размеры изображения учитываются при загрузке изображений для анимации.
Нравится: Если у меня 10 размеров изображений (1100 * 1100) и используйте рисунок ARGB_8888 для изображения.
Размер изображения (500 КБ, 1 МБ и т. Д.) Также имеет значение для этой ошибки.
or Both несет ответственность за эту ошибку.
Если я использую более одной анимации на один вид деятельности, чем я
change this Activity to another Activity
, Как освободить всю память, я использую в предыдущей деятельности поAnimationDrawable
?
Все предложения приветствуются. благодаря
Код
public class AdActivity extends Activity {
ImageView iView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_ad);
iView = (ImageView) findViewById(R.id.iView);
//iView.setBackgroundResource(R.drawable.anim); // (1)
try{
// (2)
iView.setImageBitmap(decodeSampleBitmapFromResource(getResources(), R.drawable.anim, 100, 100));
AnimationDrawable frameAnimation = (AnimationDrawable) iView.getBackground();
frameAnimation.start();
}
catch(Exception e){
}
}
public static int calculateInSampleSize(BitmapFactory.Options options, int reqWidth, int reqHeight) {
final int height = options.outHeight;
final int width = options.outWidth;
int inSampleSize = 1;
if (height > reqHeight || width > reqWidth) {
final int heightRatio = Math.round((float) height/(float) reqHeight);
final int widthRatio = Math.round((float) width/(float) reqWidth);
inSampleSize = heightRatio < widthRatio ? heightRatio : widthRatio;
}
return inSampleSize;
}
public static Bitmap decodeSampleBitmapFromResource(Resources res, int resId, int reqWidth, int reqHeight) {
final BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
BitmapFactory.decodeResource(res, resId, options);
options.inSampleSize = calculateInSampleSize(options, reqWidth, reqHeight);
options.inJustDecodeBounds = false;
return BitmapFactory.decodeResource(res, resId, options);
}
}
Две вещи:
Где я упоминаю комментарий с (1), это простой способ получить анимацию в ImageView, но в этом случае размер используемого файла составляет около 44 МБ, когда приложение запускается. 'Run Perfect'
Где я упоминаю (2) в попытке, Это решение, которое дается веб-разработчиком Android here.
Я не пытался ошибаться и размер был apporox 11Mb, когда приложение запущено, но анимация не отображается в ImageView.
Пожалуйста, предложите мне, что я сделал не так?
, пожалуйста, проверьте: http://developer.android.com/training/displaying-bitmaps/load-bitmap.html#load-bitmap –
прямо сейчас, я не использую ни одного изображения .. anim - это xml-файл, который используется в анимации .. @stack_ved –