Покадровая анимация: java.lang.OutOfMemoryError: размер растрового изображения превышает бюджет виртуальной машины. - PullRequest
2 голосов
/ 26 декабря 2011

Я пытаюсь загрузить анимацию по нажатию кнопки. У меня есть 90 изображений в папке ресурсов, и я пытаюсь загрузить их, каждое изображение имеет ок. размер 50kb когда я нажимаю кнопку запуска анимации, я получаю исключение как OutOfmemory. Пожалуйста, проверьте следующий код. Любая помощь будет оценена.

  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    startbtn=(Button) findViewById(R.id.myStartButton);
    stopbtn=(Button)findViewById(R.id.myStopButton);
    startbtn.setOnClickListener(this);
    stopbtn.setOnClickListener(this);
    images=(ImageView) findViewById(R.id.myImageView);

    images.setBackgroundResource(R.drawable.demo_animation);

    AniFrame = (AnimationDrawable)images.getBackground();



}

public void onClick(View v) {
    if(v.getId()==R.id.myStartButton)
    {
        AniFrame.start();
    }else if(v.getId()==R.id.myStopButton)
    {
        AniFrame.stop();
    }

}

1 Ответ

2 голосов
/ 08 марта 2012

Сжатые изображения (JPG или PNG)? Я думаю, что когда они загружаются в память, они конвертируются в растровый формат и используют гораздо больше памяти (до 4 байтов на пиксель). Это, вероятно, является причиной вашего исключения из памяти. Вы не можете рассчитать 90x50kb, как на диске, например, 90 x 750Kb.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...