У меня есть серия неподвижных изображений и всего более 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 секунды. Любое предложение сделать его быстрым, чтобы почувствовать себя настоящей анимацией?
Спасибо,