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

Bitmap只能存一个,不知道怎么使用集合存储每一个图片,对多长图片怎么进行一个翻页的效果

以下内容部分参考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);
        }
    }
}

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

  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/254048
  • 除此之外, 这篇博客: android高斯模糊,设置ImageView源图片中的 输入Bitmap类型图片,输出Bitmap模糊后的图片。 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • ImageView设置Bitmap类型图片

    // 获取资源图片bitmap
    //Bitmap bitmap = BitmapFactory.decodeResource(this.getContext().getResources(), R.drawable.lyric_bg);
    imageView.setImageBitmap(bitmapOutput);