在Viewpager中从位图保存图像

时间:2018-10-19 07:52:19

标签: android android-viewpager

我正在使用Glide在Viewpager中显示来自服务器的图像。我有一个按钮,用户单击该按钮即可保存当前图像。

apachectl restart

我从这样的ViewpagerAdapter获取位图-

// Code from FullImage Fragment
save_img.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if(myViewPagerAdapter.getBitmap() != null)
                saveImage(myViewPagerAdapter.getBitmap());

            }
        });

}

我的问题是这段代码可以正常工作,但是它正在保存viewpager中的下一张图像(我知道viewpager加载了3张图像,下一张,当前和上一张)。 现在如何获取当前的位图?

1 个答案:

答案 0 :(得分:1)

  1. 为您的ViewPager添加一个类型为SparseArray<Bitmap>的变量mMap,以便在位图完全加载后将其放入位图
  2. 为您的ViewPager添加一个变量mCurrentPosition,并在InstantiateItem方法中设置其值
  3. 更改getBitmap的逻辑,例如以下代码段

//通过以下代码替换您的getBitmap

public Bitmap getBitmap(int pos){

   return mMap.get(pos);

}

redit:关于如何清除变量mMap并对其进行初始化。

public class MyViewPagerAdapter extends PagerAdapter {
    ...
    Context context;
    SparseArray<Bitmap> mMap = new SparseArray<Bitmap>();
    ...
}


public Object instantiateItem(@NonNull final ViewGroup container, int position) {
    ...
    //add your bitmap in here after it load complete
    mMap.put(position,bitmap)
    ...
}

reedit:saveImage中的内容应为:

saveImage(myViewPagerAdapter.getBitmap(position));
相关问题