Android 如何在viewpager中单击“滑动”按钮保存图像
我正在使用滑翔进入viewpager显示图像。如果用户喜欢图片,请单击按钮保存Android 如何在viewpager中单击“滑动”按钮保存图像,android,android-viewpager,android-glide,Android,Android Viewpager,Android Glide,我正在使用滑翔进入viewpager显示图像。如果用户喜欢图片,请单击按钮保存 @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View v = inflater.inflate(R.layout.fragment_full_image, container, f
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_full_image, container, false);
viewPager = (ImageViewPager) v.findViewById(R.id.viewpager);
images = (ArrayList<Photos>) getArguments().getSerializable("url");
selectedPosition = getArguments().getInt("position");
final Button save_img = (Button) v.findViewById(R.id.save_img);
final View view2 = viewPager.findViewWithTag("myview" +
viewPager.getCurrentItem());
save_img.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
saveImage();
}
});
myViewPagerAdapter = new MyViewPagerAdapter();
viewPager.setAdapter(myViewPagerAdapter);
viewPager.addOnPageChangeListener(viewPagerPageChangeListener);
setCurrentItem(selectedPosition);
return v;
}
@覆盖
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
视图v=充气机。充气(R.layout.fragment\u full\u图像,容器,假);
viewPager=(ImageViewPager)v.findViewById(R.id.viewPager);
images=(ArrayList)getArguments().getSerializable(“url”);
selectedPosition=getArguments().getInt(“位置”);
最后一个按钮save\u img=(按钮)v.findviewbyd(R.id.save\u img);
最终视图view2=viewPager.findViewWithTag(“myview”+
getCurrentItem());
保存\u img.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
saveImage();
}
});
myViewPagerAdapter=新的myViewPagerAdapter();
设置适配器(myViewPagerAdapter);
viewPager.addOnPageChangeListener(viewPagerPageChangeListener);
setCurrentItem(selectedPosition);
返回v;
}
这是实例化Item方法-
@Override
public Object instantiateItem( final ViewGroup container, int position) {
layoutInflater = (LayoutInflater) getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
final View view = layoutInflater.inflate(R.layout.image_fullscreen_preview, container, false);
final ImageView imageViewPreview = (ImageView) view.findViewById(R.id.image_preview);
imageViewPreview.setOnTouchListener(new ImageMatrixTouchHandler(view.getContext()));
Photos image = images.get(position);
final String img_title = image.getTitle();
final String img_weight = image.getWeight();
Glide.with(imageViewPreview.getContext())
.load(image.getUrl())
.asBitmap()
.fitCenter().into(new SimpleTarget<Bitmap>() {
@Override
public void onResourceReady(final Bitmap resource, GlideAnimation<? super Bitmap> glideAnimation) {
imageViewPreview.setImageBitmap(resource);
}
});
view.setTag("myview" + position);
container.addView(view);
return view;
}
@覆盖
公共对象实例化项(最终视图组容器,int位置){
layoutInflater=(layoutInflater)getActivity().getSystemService(Context.LAYOUT\u INFLATER\u SERVICE);
最终视图=布局更平坦。充气(R.layout.image\u全屏预览,容器,假);
最终ImageView ImageView预览=(ImageView)view.findViewById(R.id.image\u预览);
setOnTouchListener(新的ImageMatrixTouchHandler(view.getContext());
照片图像=图像。获取(位置);
最后一个字符串img_title=image.getTitle();
最后一个字符串img_weight=image.getWeight();
Glide.with(imageViewPreview.getContext())
.load(image.getUrl())
.asBitmap()
.fitCenter().into(新SimpleTarget()){
@凌驾
public void onResourceReady(最终位图资源,GlideAnimation//内部实例化Item使用位置为图像制作标记
Glide.with(context).load(images.get(position))
.crossFade()
.diskCacheStrategy(DiskCacheStrategy.ALL)
.into(myImage);
container.addView(view);
yourimageview.setTag(position);
//在活动中定义此变量
final File myDir = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/SmartPhoto");
boolean success = false;
//在“活动”中,使用此方法保存图像
public void SaveImage()
{
final Random generator = new Random();
int n = 10000;
n = generator.nextInt(n);
final String fname = "image" + n + ".png";
myDir.mkdirs();
File image = new File(myDir, fname);
ImageView Imgv = (ImageView) yourviewpager.findViewWithTag(mPager.getCurrentItem());
Imgv.setDrawingCacheEnabled(true);
Bitmap bitmap = Imgv.getDrawingCache();
// Encode the file as a PNG image.
FileOutputStream outStream;
try {
outStream = new FileOutputStream(image);
bitmap.compress(Bitmap.CompressFormat.PNG, 100, outStream);
/* 100 to keep full quality of the image */
outStream.flush();
outStream.close();
success = true;
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
if (success) {
Toast.makeText(getApplicationContext(), R.string.savedimage, Toast.LENGTH_LONG).show();
} else {
Toast.makeText(getApplicationContext(), R.string.errorloadingimage, Toast.LENGTH_LONG).show();
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
final Intent scanIntent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
final Uri contentUri = Uri.fromFile(image);
scanIntent.setData(contentUri);
sendBroadcast(scanIntent);
} else {
sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://mnt/sdcard/" + Environment.getExternalStorageDirectory())));
}
}
请检查我的答案,如果我理解正确,希望它能帮助你,如果符合你的需要,请将答案标记为正确@Mukesh Soni