У меня есть серия фотографий и более 500 изображений, представленных в каталоге для рисования. Мне нужно сделать анимацию (загрузить около 20 изображений в секунду). Я хочу, чтобы он работал без сбоев в памяти.
У меня есть идея сделать это так, чтобы изображения в течение 2-3 секунд (от 40 до 60 изображений) загружались в память и отображались, а затем они должны быть удалены (освободить память), а затем изображения в течение следующих 2-3 секунд должны нагрузки. Этот метод может предотвратить исключение нехватки памяти. Это просто идея, я не знаю, хорошая это идея или нет. Пожалуйста, поделитесь со мной какой-нибудь лучшей идеей с некоторым кодом ... Если моя идея намного лучше и может работать, то, пожалуйста, подскажите мне какой-нибудь вспомогательный код для этого.
После прочтения ответов и выполнения того, что вы предлагаете, я написал такой код:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/llMain">
<ViewFlipper android:id="@+id/imageflipper"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<ImageView android:id="@+id/ImageView01"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:scaleType="centerInside"
android:layout_gravity="center" />
</ViewFlipper>
</LinearLayout>
и вот мой код для анимации:
public class Animation extends Activity {
ViewFlipper flipper;
int myIndex = 216;
private final Handler handler = new Handler();
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
flipper=(ViewFlipper)findViewById(R.id.imageflipper);
doTheAutoRefresh();
//displayData();
}
private void doTheAutoRefresh() {
handler.postDelayed(new Runnable() {
public void run(){
displayData(); // this is where you put your refresh code
doTheAutoRefresh();
}
}, 30);
}
private void displayData()
{
Resources r = getResources();
if(myIndex > 230){
myIndex = 216;
ImageView myImg = (ImageView)findViewById(R.id.ImageView01);
myImg.setImageResource(r.getIdentifier("drum0" + myIndex, "drawable", "com.vt.animation"));
myIndex += 1;
flipper.showNext();
}
else{
ImageView myImg = (ImageView)findViewById(R.id.ImageView01);
myImg.setImageResource(r.getIdentifier("drum0" + myIndex, "drawable", "com.vt.animation"));
myIndex += 1;
flipper.showNext();
}
}
}
но очень медленно. Я установил время обновления на 30 миллисекунд, но на самом деле оно не обновляется слишком быстро, скорее его время обновления составляет около 1 секунды. Любое предложение, чтобы сделать так, чтобы быстро почувствовать себя настоящей анимацией?
Спасибо