2013-07-16 100 views
0

因爲我是新的android所以我創建了一個項目,我只想保存來自GridView的圖像視圖,意思是點擊圖像後它會顯示如此我想將該圖像保存在SD卡上。如何保存從SD卡上GridView的圖像視圖

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; 
} 

} 

回答

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(); 

    } 

}); 
+0

實際上,我在android中是新的,所以我沒有得到代碼,您能否以更有效的方式給它,所以我可以很容易地理解,如果有一些鏈接或示例代碼可用,那麼請告訴我。 –

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; 
    } 
}