Bitmap只能存一个,不知道怎么使用集合存储每一个图片,对多长图片怎么进行一个翻页的效果
首先,我们可以使用ArrayList来存储多个Bitmap图片,然后使用ViewPager来展示这些图片并实现翻页效果。具体实现过程如下:
1.在布局文件中添加ViewPager和指示器(可以使用第三方库如IndicatorSeekBar等):
<androidx.viewpager.widget.ViewPager
android:id="@+id/viewPager"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<com.warkiz.widget.IndicatorSeekBar
android:id="@+id/indicator"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:isb_indicator_type="circle"
app:isb_indicator_color="@android:color/white"
app:isb_indicator_text_color="@android:color/white"
app:isb_max="3"/>
2.在Java代码中获取Bitmap图片,并添加到ArrayList中:
ArrayList<Bitmap> bitmapList = new ArrayList<>();
bitmapList.add(BitmapFactory.decodeResource(getResources(), R.drawable.image1));
bitmapList.add(BitmapFactory.decodeResource(getResources(), R.drawable.image2));
bitmapList.add(BitmapFactory.decodeResource(getResources(), R.drawable.image3));
3.创建自定义PagerAdapter,并在其中实现展示每个页面的方法:
private class MyPagerAdapter extends PagerAdapter {
private ArrayList<Bitmap> bitmapList;
public MyPagerAdapter(ArrayList<Bitmap> bitmapList) {
this.bitmapList = bitmapList;
}
@Override
public int getCount() {
return bitmapList.size();
}
@Override
public boolean isViewFromObject(@NonNull View view, @NonNull Object object) {
return view == object;
}
@NonNull
@Override
public Object instantiateItem(@NonNull ViewGroup container, int position) {
ImageView imageView = new ImageView(MainActivity.this);
imageView.setImageBitmap(bitmapList.get(position));
container.addView(imageView);
return imageView;
}
@Override
public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
container.removeView((ImageView) object);
}
}
4.将自定义PagerAdapter设置为ViewPager的适配器,并设置指示器的最大值:
MyPagerAdapter adapter = new MyPagerAdapter(bitmapList);
viewPager.setAdapter(adapter);
indicator.setMax(bitmapList.size() - 1);
5.监听ViewPager的滑动事件,更新指示器的进度:
viewPager.addOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
@Override
public void onPageSelected(int position) {
indicator.setProgress(position);
}
});
现在,我们就可以展示多张图片并实现翻页效果了。完整代码如下:
public class MainActivity extends AppCompatActivity {
private ViewPager viewPager;
private IndicatorSeekBar indicator;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
viewPager = findViewById(R.id.viewPager);
indicator = findViewById(R.id.indicator);
ArrayList<Bitmap> bitmapList = new ArrayList<>();
bitmapList.add(BitmapFactory.decodeResource(getResources(), R.drawable.image1));
bitmapList.add(BitmapFactory.decodeResource(getResources(), R.drawable.image2));
bitmapList.add(BitmapFactory.decodeResource(getResources(), R.drawable.image3));
MyPagerAdapter adapter = new MyPagerAdapter(bitmapList);
viewPager.setAdapter(adapter);
indicator.setMax(bitmapList.size() - 1);
viewPager.addOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
@Override
public void onPageSelected(int position) {
indicator.setProgress(position);
}
});
}
private class MyPagerAdapter extends PagerAdapter {
private ArrayList<Bitmap> bitmapList;
public MyPagerAdapter(ArrayList<Bitmap> bitmapList) {
this.bitmapList = bitmapList;
}
@Override
public int getCount() {
return bitmapList.size();
}
@Override
public boolean isViewFromObject(@NonNull View view, @NonNull Object object) {
return view == object;
}
@NonNull
@Override
public Object instantiateItem(@NonNull ViewGroup container, int position) {
ImageView imageView = new ImageView(MainActivity.this);
imageView.setImageBitmap(bitmapList.get(position));
container.addView(imageView);
return imageView;
}
@Override
public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
container.removeView((ImageView) object);
}
}
}
ImageView设置Bitmap类型图片
// 获取资源图片bitmap
//Bitmap bitmap = BitmapFactory.decodeResource(this.getContext().getResources(), R.drawable.lyric_bg);
imageView.setImageBitmap(bitmapOutput);