我正在使用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张图像,下一张,当前和上一张)。 现在如何获取当前的位图?
答案 0 :(得分:1)
SparseArray<Bitmap>
的变量mMap,以便在位图完全加载后将其放入位图//通过以下代码替换您的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));