如何从SD卡上的GridView保存图像视图

时间:2013-07-16 10:08:06

标签: android

因为我是android的新手,所以我创建了一个项目,我只想保存来自GridView的图像视图,意味着点击图像后它会显示,所以我想保存该图像在SD卡上。

public class AndroidGridViewActivity extends Activity {

    private static final String TAG = "AndroidGridViewActivity";

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

        GridView gridView = (GridView) findViewById(R.id.grid_view);

        gridView.setAdapter(new ImageAdapter(this));

        gridView.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> parent, View v,
                    int position, long id) {

                Intent i = new Intent(getApplicationContext(),
                        Full_Image_Activity.class);
                i.putExtra("id", position);
                startActivity(i);
                Log.v(TAG, "Clicked on photo");
            }
        });

    }
}

public class Full_Image_Activity extends Activity {

private static final String TAG = "Full_Image_Activity";
Button save;
Bitmap bm;

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

    Intent i = getIntent();

    int position = i.getExtras().getInt("id");
    ImageAdapter imageAdapter = new ImageAdapter(this);

    ImageView imageView = (ImageView) findViewById(R.id.full_image_view);
    imageView.setImageResource(imageAdapter.mThumbIds[position]);

    Log.v(TAG, "Image Opened...");
    }
}



public class ImageAdapter extends BaseAdapter {
private Context mContext;

public Integer[] mThumbIds = { R.drawable.imagesa, R.drawable.imagesb,
        R.drawable.imagesc, R.drawable.imagesd, R.drawable.imagese,
        R.drawable.imagesf, R.drawable.imagesg, R.drawable.imagesh,
        R.drawable.imagesi, R.drawable.imagesj, R.drawable.imagesk,
        R.drawable.imagesl };

public ImageAdapter(Context c) {
    mContext = c;
}

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

@Override
public Object getItem(int position) {
    return mThumbIds[position];
}

@Override
public long getItemId(int position) {
    return 0;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    ImageView imageView = new ImageView(mContext);
    imageView.setImageResource(mThumbIds[position]);
    imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
    imageView.setLayoutParams(new GridView.LayoutParams(70, 70));
    return imageView;
}

}

2 个答案:

答案 0 :(得分:0)

请尝试使用以下代码。

// this code write on Adapters getView method.

imageView.setOnClickListener(new OnClickListener() {

    public void onClick(View v) {
        // TODO Auto-generated method stub
        Drawable drawable = v.getDrawable();


        Bitmap bitmap = ((BitmapDrawable) drawable).getBitmap();

        String path=Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);

        File file = new File(path, "name.png");

        FileOutputStream out = new FileOutputStream(file);

        bitmap.compress(Bitmap.CompressFormat.PNG, 100, out);

        out.close();

    }

});

答案 1 :(得分:0)

请尝试检查一下,这个代码在我的最后检查。

// please add writeExternalStorage uses permision in android manifest.
// Activity 
// code 

package com.example.test;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.os.Environment;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.ImageView;

public class AndroidGridViewActivity extends Activity {

    private static final String TAG = "AndroidGridViewActivity";

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.grid);
        GridView gridView = (GridView) findViewById(R.id.gridview);
        gridView.setAdapter(new ImageAdapter(this));
    }
}

class ImageAdapter extends BaseAdapter {
    private Context mContext;

    public Integer[] mThumbIds = { R.drawable.ic_launcher,
            R.drawable.ic_launcher, R.drawable.ic_launcher,
            R.drawable.ic_launcher, R.drawable.ic_launcher,
            R.drawable.ic_launcher, R.drawable.ic_launcher,
            R.drawable.ic_launcher, R.drawable.ic_launcher,
            R.drawable.ic_launcher, R.drawable.ic_launcher,
            R.drawable.ic_launcher };

    public ImageAdapter(Context c) {
        mContext = c;
    }

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

    @Override
    public Object getItem(int position) {
        return mThumbIds[position];
    }

    @Override
    public long getItemId(int position) {
        return 0;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        ImageView imageView = new ImageView(mContext);
        imageView.setImageResource(mThumbIds[position]);
        imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
        imageView.setLayoutParams(new GridView.LayoutParams(70, 70));
        imageView.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                ImageView imageView = (ImageView) v;
                Drawable drawable = imageView.getDrawable();
                Bitmap bitmap = ((BitmapDrawable) drawable).getBitmap();
                File path = Environment.getExternalStorageDirectory();
                File file = new File(path, "name.png");
                FileOutputStream out = null;

                try {
                    out = new FileOutputStream(file);
                } catch (FileNotFoundException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }

                bitmap.compress(Bitmap.CompressFormat.PNG, 100, out);
                try {
                    out.close();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        });
        return imageView;
    }
}