それぞれが画像とテキストで構成される 5 つのスライドを使用して、Android で ViewPager を作成する必要があります。画像のリソースを含む配列があります。
private static final int[] images = {R.drawable.tutorial_step_01, R.drawable.tutorial_step_02, R.drawable.tutorial_step_03, R.drawable.tutorial_step_04, R.drawable.tutorial_step_05, R.drawable.tutorial_step_06};
次に、アダプターを作成します。
@Override
public Object instantiateItem(ViewGroup container, int position) {
LinearLayout tv = (LinearLayout) inflater.inflate(R.layout.tut_slide, null);
TextView title = (TextView) tv.findViewById(R.id.tut_title);
title.setText(getResources().getText(titles[position]));
TextView content = (TextView) tv.findViewById(R.id.tut_content);
ImageView image = (ImageView) tv.findViewById(R.id.tut_image);
slide_image = BitmapFactory.decodeResource(getResources(), images[position]);
image.setImageBitmap(slide_image);
content.setText(getResources().getText(contents[position]));
((ViewPager) container).addView(tv, 0);
return tv;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
((ViewPager) container).removeView((LinearLayout) object);
//
}
問題は、別のページを選択した後、アンドロイドが画像を収集したくないという事実です。そのため、10 ~ 15 回の変更の後、OutOfMemory 例外が発生します。次に、初期化行に追加しました
if (slide_image!= null) {
slide_image.recycle();
System.gc();
}
そして、それは良い仕事です!ただし、1 つ例外があります。最初の画像の代わりに黒い画面があり、数回フリップすると実際の画像に置き換えられます。だから私はそのようなメモリリークをどうするかわかりません