Java魔匣 2023-04-10 08:19 采纳率: 100%
浏览 15
已结题

Android网络获取多张图片使用Bitmap,viewpager,imageview进行引导页的实现

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);
            }
        }
    }
    

    如果我的建议对您有帮助、请点击采纳、祝您生活愉快

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 4月30日
  • 已采纳回答 4月22日
  • 创建了问题 4月10日

悬赏问题

  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效