如何ViewPager当前图像保存到SD卡上按一下按钮 [英] how to save ViewPager Current image to sd card on button click

查看:141
本文介绍了如何ViewPager当前图像保存到SD卡上按一下按钮的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的工作中,我对ViewPager刷卡图像的图像刷卡应用程序,我想保存按钮单击当前显示的图像到SD卡。

我的code:SwipeActivity.java

 包com.td.gridview;进口android.app.Activity;
进口android.content.Context;
进口android.content.Intent;
进口android.os.Bundle;
进口android.support.v4.view.PagerAdapter;
进口android.support.v4.view.ViewPager;
进口android.support.v4.view.ViewPager.OnPageChangeListener;
进口android.view.View;
进口android.view.ViewGroup;
进口android.widget.Button;
进口android.widget.ImageView;公共类SwipeActivity延伸活动{    保护INT curruntPosition;
    保护INT HH;    @覆盖
    公共无效的onCreate(捆绑savedInstanceState){
        super.onCreate(savedInstanceState);
        的setContentView(R.layout.swipe_view);        //获取数据的意图
        意向I = getIntent();        //选择图片ID
        最终诠释位置= i.getExtras()调用getInt(ID)。        最后ViewPager viewPager =(ViewPager)findViewById(R.id.view_pager);
        ImagePagerAdapter适配器=新ImagePagerAdapter();
        viewPager.setAdapter(适配器);
        viewPager.setCurrentItem(位置);
        viewPager.setOnPageChangeListener(新OnPageChangeListener(){            @覆盖
            公共无效使用onPageSelected(INT为arg0){
                // TODO自动生成方法存根
                //在这里你可以设置壁纸
                curruntPosition =为arg0;
                如果(curruntPosition ==为arg0){
                    HH = 1;
                }
            }            @覆盖
            公共无效onPageScrolled(INT为arg0,ARG1浮球,诠释ARG2){
                // TODO自动生成方法存根            }            @覆盖
            公共无效onPageScrollStateChanged(INT为arg0){
                // TODO自动生成方法存根            }        });
        //
        按钮BX =(按钮)findViewById(R.id.xoom);
        bx.setOnClickListener(新View.OnClickListener(){
            公共无效的onClick(查看VX){
                // // TODO自动生成方法存根                如果(HH == 1){
                    //发送图片ID来FullScreenActivity
                    意图I2 =新意图(getApplicationContext()
                            Full_Zoom.class);
                    //传递数组索引
                    i2.putExtra(ID,curruntPosition);
                    startActivity(I 2);
                }其他{
                    //获取数据的意图
                    意向I3 = getIntent();                    //选择图片ID
                    INT位置= i3.getExtras()调用getInt(ID)。
                    //发送图片ID来FullScreenActivity
                    意图I2 =新意图(getApplicationContext()
                            Full_Zoom.class);
                    //传递数组索引
                    i2.putExtra(ID,位置);
                    startActivity(I 2);
                }            }
        });
        //        //保存当前ViewPager形象SD卡上按一下按钮
        按钮B1 =(按钮)findViewById(R.id.wll);
        b1.setOnClickListener(新View.OnClickListener(){
            公共无效的onClick(查看V2){
                // // TODO自动生成方法存根                //保存ViewPager当前图像到SD卡            }
        });    }    公共类ImagePagerAdapter扩展PagerAdapter {
        INT []图标= MainActivity.ICONS;        @覆盖
        公众诠释的getCount(){
            返回icons.length;
        }        @覆盖
        公共布尔isViewFromObject(查看视图,Object对象){
            返回查看==((ImageView的)对象);
        }        @覆盖
        公共对象instantiateItem(ViewGroup中的容器,INT位置){
            上下文的背景下= SwipeActivity.this;
            ImageView的ImageView的=新ImageView的(上下文);
            // INT填充= context.getResources()。getDimensionPixelSize(
            // R.dimen.padding_large);
            // imageView.setPadding(填充,填充,填充,填充);
            imageView.setScaleType(ImageView.ScaleType.FIT_CENTER);
            imageView.setImageResource(图标[位置]);
            ((ViewPager)容器).addView(ImageView的,0);
            返回ImageView的;
        }        @覆盖
        公共无效destroyItem(ViewGroup中的容器,INT位置,Object对象){
            ((ViewPager)容器).removeView((ImageView的)对象);
        }
    }}

在这上面code发现这个code:在这里我要执行从viewpager图像保存到SD卡

  //保存当前ViewPager形象SD卡上按一下按钮
        按钮B1 =(按钮)findViewById(R.id.wll);
        b1.setOnClickListener(新View.OnClickListener(){
            公共无效的onClick(查看V2){
                // // TODO自动生成方法存根                //保存ViewPager当前图像到SD卡            }
        });


解决方案

我发现我的回答:

 包com.td.gridview;进口的java.io.File;
进口java.io.FileNotFoundException;
进口java.io.FileOutputStream中;
进口java.io.IOException异常;
进口了java.util.Random;进口android.app.Activity;
进口android.content.Context;
进口android.content.Intent;
进口android.graphics.Bitmap;
进口android.graphics.drawable.BitmapDrawable;
进口android.graphics.drawable.Drawable;
进口android.net.Uri;
进口android.os.Bundle;
进口android.os.Environment;
进口android.support.v4.view.PagerAdapter;
进口android.support.v4.view.ViewPager;
进口android.support.v4.view.ViewPager.OnPageChangeListener;
进口android.view.View;
进口android.view.ViewGroup;
进口android.widget.Button;
进口android.widget.ImageView;
进口android.widget.Toast;公共类SwipeActivity延伸活动{    上下文mContext;    //设置保​​存文件的位置例如:.getAbsolutePath()+/图片);
    最终文件MYDIR =新的文件(Environment.getExternalStorageDirectory()
            .getAbsolutePath()+/);
    布尔成功= FALSE;    保护INT curruntPosition;
    保护INT HH;    @覆盖
    公共无效的onCreate(捆绑savedInstanceState){
        super.onCreate(savedInstanceState);
        的setContentView(R.layout.swipe_view);        最后上下文mContext;
        mContext =这一点;        //获取数据的意图
        意向I = getIntent();        //选择图片ID
        最终诠释位置= i.getExtras()调用getInt(ID)。        最后ViewPager viewPager =(ViewPager)findViewById(R.id.view_pager);
        最后ImagePagerAdapter适配器=新ImagePagerAdapter();
        viewPager.setAdapter(适配器);
        viewPager.setCurrentItem(位置);
        viewPager.setOnPageChangeListener(新OnPageChangeListener(){            @覆盖
            公共无效使用onPageSelected(INT为arg0){
                // TODO自动生成方法存根
                //在这里你可以设置壁纸
                curruntPosition =为arg0;
                如果(curruntPosition ==为arg0){
                    HH = 1;
                }
            }            @覆盖
            公共无效onPageScrolled(INT为arg0,ARG1浮球,诠释ARG2){
                // TODO自动生成方法存根            }            @覆盖
            公共无效onPageScrollStateChanged(INT为arg0){
                // TODO自动生成方法存根            }        });
        //
        按钮BX =(按钮)findViewById(R.id.xoom);
        bx.setOnClickListener(新View.OnClickListener(){
            公共无效的onClick(查看VX){
                // // TODO自动生成方法存根                如果(HH == 1){
                    //发送图片ID来FullScreenActivity
                    意图I2 =新意图(getApplicationContext()
                            Full_Zoom.class);
                    //传递数组索引
                    i2.putExtra(ID,curruntPosition);
                    startActivity(I 2);
                }其他{
                    //获取数据的意图
                    意向I3 = getIntent();                    //选择图片ID
                    INT位置= i3.getExtras()调用getInt(ID)。
                    //发送图片ID来FullScreenActivity
                    意图I2 =新意图(getApplicationContext()
                            Full_Zoom.class);
                    //传递数组索引
                    i2.putExtra(ID,位置);
                    startActivity(I 2);
                }            }
        });
        //        //保存当前ViewPager形象SD卡上按一下按钮
        按钮B1 =(按钮)findViewById(R.id.wll);
        b1.setOnClickListener(新View.OnClickListener(){
            公共无效的onClick(查看V2){
                // // TODO自动生成方法存根                //保存ViewPager当前图像到SD卡                //
                最后随机发生器=新的随机();
                INT N = 10000;
                N = generator.nextInt(N);
                最后弦乐FNAME =temp_image+ N +巴纽;                myDir.mkdirs();                文件图像=新的文件(MYDIR,FNAME);                INT CURRENTITEM = viewPager.getCurrentItem();
                可绘制可绘制= mContext.getResources()。getDrawable(
                        adapter.mImages [CURRENTITEM]);
                位图的位图=((BitmapDrawable)抽拉).getBitmap();                // EN code中的文件作为一个PNG图像。
                FileOutputStream中outStream;
                尝试{                    outStream =新的FileOutputStream(图片);
                    bitmap.com preSS(Bitmap.Com pressFormat.PNG,100,outStream);
                    / * 100,以保持图像的质量完全* /                    outStream.flush();
                    outStream.close();
                    成功= TRUE;
                }赶上(FileNotFoundException异常五){
                    e.printStackTrace();
                }赶上(IOException异常五){
                    e.printStackTrace();
                }                如果(成功){
                    Toast.makeText(getApplicationContext(),
                            在/ SD卡/ temp_image图像保存成功,
                            Toast.LENGTH_LONG).show();
                }其他{
                    Toast.makeText(getApplicationContext(),
                            图像存储过程中的错误,Toast.LENGTH_LONG)
                            。显示();
                }
                sendBroadcast(新意图(Intent.ACTION_MEDIA_MOUNTED,乌里
                        .parse(文件:// MNT / SD卡/
                                + Environment.getExternalStorageDirectory())));            }            //        });    }    公共类ImagePagerAdapter扩展PagerAdapter {
        保护INT [] = mImages MainActivity.ICONS;
        INT []图标= MainActivity.ICONS;        @覆盖
        公众诠释的getCount(){
            返回icons.length;
        }        @覆盖
        公共布尔isViewFromObject(查看视图,Object对象){
            返回查看==((ImageView的)对象);
        }        @覆盖
        公共对象instantiateItem(ViewGroup中的容器,INT位置){
            上下文的背景下= SwipeActivity.this;
            ImageView的ImageView的=新ImageView的(上下文);
            // INT填充= context.getResources()。getDimensionPixelSize(
            // R.dimen.padding_large);
            // imageView.setPadding(填充,填充,填充,填充);
            imageView.setScaleType(ImageView.ScaleType.FIT_CENTER);
            imageView.setImageResource(图标[位置]);
            ((ViewPager)容器).addView(ImageView的,0);
            返回ImageView的;
        }        @覆盖
        公共无效destroyItem(ViewGroup中的容器,INT位置,Object对象){
            ((ViewPager)容器).removeView((ImageView的)对象);
        }
    }}

i am working on a image swipe app in which i am swiping images on ViewPager and i want to save current showing image to sd card on button click.

my code: SwipeActivity.java

package com.td.gridview;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ImageView;

public class SwipeActivity extends Activity {

    protected int curruntPosition;
    protected int hh;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.swipe_view);

        // get intent data
        Intent i = getIntent();

        // Selected image id
        final int position = i.getExtras().getInt("id");

        final ViewPager viewPager = (ViewPager) findViewById(R.id.view_pager);
        ImagePagerAdapter adapter = new ImagePagerAdapter();
        viewPager.setAdapter(adapter);
        viewPager.setCurrentItem(position);
        viewPager.setOnPageChangeListener(new OnPageChangeListener() {

            @Override
            public void onPageSelected(int arg0) {
                // TODO Auto-generated method stub
                // Here you can set the wallpaper
                curruntPosition = arg0;
                if (curruntPosition == arg0) {
                    hh = 1;
                }
            }

            @Override
            public void onPageScrolled(int arg0, float arg1, int arg2) {
                // TODO Auto-generated method stub

            }

            @Override
            public void onPageScrollStateChanged(int arg0) {
                // TODO Auto-generated method stub

            }

        });
        //
        Button bx = (Button) findViewById(R.id.xoom);
        bx.setOnClickListener(new View.OnClickListener() {
            public void onClick(View vx) {
                // // TODO Auto-generated method stub

                if (hh == 1) {
                    // Sending image id to FullScreenActivity
                    Intent i2 = new Intent(getApplicationContext(),
                            Full_Zoom.class);
                    // passing array index
                    i2.putExtra("id", curruntPosition);
                    startActivity(i2);
                } else {
                    // get intent data
                    Intent i3 = getIntent();

                    // Selected image id
                    int position = i3.getExtras().getInt("id");
                    // Sending image id to FullScreenActivity
                    Intent i2 = new Intent(getApplicationContext(),
                            Full_Zoom.class);
                    // passing array index
                    i2.putExtra("id", position);
                    startActivity(i2);
                }

            }
        });
        //

        // Save ViewPager current image  to sd card on button click
        Button b1 = (Button) findViewById(R.id.wll);
        b1.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v2) {
                // // TODO Auto-generated method stub

                // Save ViewPager current image  to sd card

            }
        });

    }

    public class ImagePagerAdapter extends PagerAdapter {
        int[] icons = MainActivity.ICONS;

        @Override
        public int getCount() {
            return icons.length;
        }

        @Override
        public boolean isViewFromObject(View view, Object object) {
            return view == ((ImageView) object);
        }

        @Override
        public Object instantiateItem(ViewGroup container, int position) {
            Context context = SwipeActivity.this;
            ImageView imageView = new ImageView(context);
            // int padding = context.getResources().getDimensionPixelSize(
            // R.dimen.padding_large);
            // imageView.setPadding(padding, padding, padding, padding);
            imageView.setScaleType(ImageView.ScaleType.FIT_CENTER);
            imageView.setImageResource(icons[position]);
            ((ViewPager) container).addView(imageView, 0);
            return imageView;
        }

        @Override
        public void destroyItem(ViewGroup container, int position, Object object) {
            ((ViewPager) container).removeView((ImageView) object);
        }
    }

}

in this above code find this code: here i want to perform save image from viewpager to sd card

// Save ViewPager current image  to sd card on button click
        Button b1 = (Button) findViewById(R.id.wll);
        b1.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v2) {
                // // TODO Auto-generated method stub

                // Save ViewPager current image  to sd card

            }
        });

解决方案

i found my answer:

package com.td.gridview;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Random;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.Toast;

public class SwipeActivity extends Activity {

    Context mContext;

    //set save file location example: .getAbsolutePath() + "/Pictures");
    final File myDir = new File(Environment.getExternalStorageDirectory()
            .getAbsolutePath() + "/");
    boolean success = false;

    protected int curruntPosition;
    protected int hh;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.swipe_view);

        final Context mContext;
        mContext = this;

        // get intent data
        Intent i = getIntent();

        // Selected image id
        final int position = i.getExtras().getInt("id");

        final ViewPager viewPager = (ViewPager) findViewById(R.id.view_pager);
        final ImagePagerAdapter adapter = new ImagePagerAdapter();
        viewPager.setAdapter(adapter);
        viewPager.setCurrentItem(position);
        viewPager.setOnPageChangeListener(new OnPageChangeListener() {

            @Override
            public void onPageSelected(int arg0) {
                // TODO Auto-generated method stub
                // Here you can set the wallpaper
                curruntPosition = arg0;
                if (curruntPosition == arg0) {
                    hh = 1;
                }
            }

            @Override
            public void onPageScrolled(int arg0, float arg1, int arg2) {
                // TODO Auto-generated method stub

            }

            @Override
            public void onPageScrollStateChanged(int arg0) {
                // TODO Auto-generated method stub

            }

        });
        //
        Button bx = (Button) findViewById(R.id.xoom);
        bx.setOnClickListener(new View.OnClickListener() {
            public void onClick(View vx) {
                // // TODO Auto-generated method stub

                if (hh == 1) {
                    // Sending image id to FullScreenActivity
                    Intent i2 = new Intent(getApplicationContext(),
                            Full_Zoom.class);
                    // passing array index
                    i2.putExtra("id", curruntPosition);
                    startActivity(i2);
                } else {
                    // get intent data
                    Intent i3 = getIntent();

                    // Selected image id
                    int position = i3.getExtras().getInt("id");
                    // Sending image id to FullScreenActivity
                    Intent i2 = new Intent(getApplicationContext(),
                            Full_Zoom.class);
                    // passing array index
                    i2.putExtra("id", position);
                    startActivity(i2);
                }

            }
        });
        //

        // Save ViewPager current image to sd card on button click
        Button b1 = (Button) findViewById(R.id.wll);
        b1.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v2) {
                // // TODO Auto-generated method stub

                // Save ViewPager current image to sd card

                //
                final Random generator = new Random();
                int n = 10000;
                n = generator.nextInt(n);
                final String fname = "temp_image" + n + ".png";

                myDir.mkdirs();

                File image = new File(myDir, fname);

                int currentItem = viewPager.getCurrentItem();
                Drawable drawable = mContext.getResources().getDrawable(
                        adapter.mImages[currentItem]);
                Bitmap bitmap = ((BitmapDrawable) drawable).getBitmap();

                // 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(),
                            "Image saved with success at /sdcard/temp_image",
                            Toast.LENGTH_LONG).show();
                } else {
                    Toast.makeText(getApplicationContext(),
                            "Error during image saving", Toast.LENGTH_LONG)
                            .show();
                }
                sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri
                        .parse("file://mnt/sdcard/"
                                + Environment.getExternalStorageDirectory())));

            }

            //

        });

    }

    public class ImagePagerAdapter extends PagerAdapter {
        protected int[] mImages = MainActivity.ICONS;
        int[] icons = MainActivity.ICONS;

        @Override
        public int getCount() {
            return icons.length;
        }

        @Override
        public boolean isViewFromObject(View view, Object object) {
            return view == ((ImageView) object);
        }

        @Override
        public Object instantiateItem(ViewGroup container, int position) {
            Context context = SwipeActivity.this;
            ImageView imageView = new ImageView(context);
            // int padding = context.getResources().getDimensionPixelSize(
            // R.dimen.padding_large);
            // imageView.setPadding(padding, padding, padding, padding);
            imageView.setScaleType(ImageView.ScaleType.FIT_CENTER);
            imageView.setImageResource(icons[position]);
            ((ViewPager) container).addView(imageView, 0);
            return imageView;
        }

        @Override
        public void destroyItem(ViewGroup container, int position, Object object) {
            ((ViewPager) container).removeView((ImageView) object);
        }
    }

}

这篇关于如何ViewPager当前图像保存到SD卡上按一下按钮的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆