Bitmap只能存一个,不知道怎么使用集合存储每一个图片,对多长图片怎么进行一个翻页的效果
2条回答 默认 最新
- 阿里嘎多学长 2023-04-10 09:43关注
以下内容部分参考ChatGPT模型:
首先,我们可以使用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); } } }
如果我的建议对您有帮助、请点击采纳、祝您生活愉快
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥30 STM32 INMP441无法读取数据
- ¥100 求汇川机器人IRCB300控制器和示教器同版本升级固件文件升级包
- ¥15 用visualstudio2022创建vue项目后无法启动
- ¥15 x趋于0时tanx-sinx极限可以拆开算吗
- ¥500 把面具戴到人脸上,请大家贡献智慧
- ¥15 任意一个散点图自己下载其js脚本文件并做成独立的案例页面,不要作在线的,要离线状态。
- ¥15 各位 帮我看看如何写代码,打出来的图形要和如下图呈现的一样,急
- ¥30 c#打开word开启修订并实时显示批注
- ¥15 如何解决ldsc的这条报错/index error
- ¥15 VS2022+WDK驱动开发环境