Load images from sdcard to Gallery in android

Gần đây tôi có làm một apps, và cảm ơn khi tôi phát hiện ra lỗ hổng kiến thức này sớm, đó là gì, thật ra đó là vấn dề với service trong android, khi tôi gửi một ArrayList từ một intent tới một service để xử lý thì trong phương thức Oncreate của Service tôi đã cố đủ mọi cách để nhận được dữ liệu từ Intent kia gửi sang nhưng nó đều vô nghĩa … sau khi tìm lại kiến thức tôi nhớ ra là nó sẽ nhận trong phương thức onStart của Service. Nếu các bạn cũng như tôi thì update nhé, trong project đó tôi sử dụng basic cách show các images bằng gallery trong android và các ảnh sẽ được load lên từ sdcard, và đây là mã tôi sử dụng.

package hoasen.edu.vn;

import java.io.File;

import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.res.TypedArray;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.Gallery;
import android.widget.Toast;

public class ViewPhoto extends Activity {
	
	private Gallery gallery;
    private ImageView imgView;

    private  String imageInSD = "";
    private String[] Imgid;

    
    @Override
    public void onCreate(Bundle savedInstanceState) {
           super.onCreate(savedInstanceState);
           setContentView(R.layout.slidephoto);
          
           imgView = (ImageView) findViewById(R.id.ImageView01);
           gallery = (Gallery)   findViewById(R.id.examplegallery);
           
           SharedPreferences sharepre = PreferenceManager.getDefaultSharedPreferences(hoasen.edu.vn.ViewPhoto.this);
   		   String forder = sharepre.getString("forder", "Vnexpress");
   		   imageInSD = "/sdcard/" + forder + "/";
   		   
   		   File file = new File(imageInSD);
   		   File[] listoffile = file.listFiles();
   		   Imgid = new String[listoffile.length];
   		   
   		   for(int i=0; i<listoffile.length; i++){
   			   if(listoffile[i].isFile()){
   				  // if(listoffile[i].)
   				   Imgid[i] = listoffile[i].getName();
   				   Log.d("IMAGES", Imgid[i]);
   			   }
   		   }
   		   
   		   
          
           Bitmap bitmap = BitmapFactory.decodeFile(imageInSD+Imgid[0]);
           Log.d("Imgid[0]", imageInSD+Imgid[0]);
           imgView.setImageBitmap(bitmap);
           
          
           imgView.setOnLongClickListener(new View.OnLongClickListener() {
			
        	   @Override
        	   public boolean onLongClick(View view) {
        		 // Toast.makeText(getApplicationContext(), "Click", Toast.LENGTH_LONG).show();
        		   	int pos = view.getId();
        		  //Imgid[pos] = null;
        		   	String filename =  Imgid[pos];
        		   	Log.d("IMAGEVIEW CLICK : ", filename);
        		  	File testfile = new File(imageInSD);
  					File[] listoffile = testfile.listFiles();
  	  		  
  	  		   		for(int j=0; j<listoffile.length; j++){
  	  		   			if(listoffile[j].isFile()){
  	  		   				Log.d("IMAGEVIEW CLICK ---->  : ", listoffile[j].getName());
  	  		   				if(listoffile[j].getName().equals(filename)){
  	  		   					listoffile[j].delete();
  	  		   					//Toast.makeText(getApplicationContext(), "Co chay vao day khong", Toast.LENGTH_LONG).show();
  	  		   					Imgid[pos] = null;
  	  		   				}
  	  		   			}
  	  		   		}
  	  		   		
  	  		   		//gallery.removeViewAt(pos);
  	  		   		gallery.refreshDrawableState();
        		  Toast.makeText(getApplicationContext(), "Đã Xóa File Ảnh Này Trong Sdcard Của Bạn", Toast.LENGTH_LONG).show();
        		  return true;
        	   }
           });
           gallery.setAdapter(new AddImgAdp(this));
           
           gallery.setOnItemClickListener(new OnItemClickListener() {
                  public void onItemClick(AdapterView parent, View v, int position,  long id) {
                	  Bitmap bitmap = BitmapFactory.decodeFile(imageInSD+Imgid[position]);   
                	  if(bitmap == null){
                		  Toast.makeText(getApplicationContext(), "Ảnh Đã Được Xóa", Toast.LENGTH_LONG).show();
                	  }
                	  else{
                      imgView.setImageBitmap(bitmap);
                      imgView.setId(position);}
                  }
            });
      }


       public class AddImgAdp extends BaseAdapter {
              int GalItemBg;
              private Context cont;


              public AddImgAdp(Context c) {
                     cont = c;
                     TypedArray typArray = obtainStyledAttributes(R.styleable.GalleryTheme);
                     GalItemBg = typArray.getResourceId(R.styleable.GalleryTheme_android_galleryItemBackground, 0);
                     typArray.recycle();
             }


             public int getCount() {
                   return Imgid.length;
             }


             public Object getItem(int position) {
                   return position;
             }


             public long getItemId(int position) {
                   return position;
             }


             public View getView(int position, View convertView, ViewGroup parent) {
                    ImageView imgView = new ImageView(cont);
                    
                    Bitmap bitmap = BitmapFactory.decodeFile(imageInSD+Imgid[position]);                
                    imgView.setImageBitmap(bitmap);
                    
                   // imgView.setLayoutParams(new Gallery.)
                    imgView.setLayoutParams(new Gallery.LayoutParams(80, 70));
                    imgView.setScaleType(ImageView.ScaleType.FIT_XY);
                    imgView.setBackgroundResource(GalItemBg);

                    return imgView;
             }
      }
}

Chỉ Mang Tính Chất Tham Khảo

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s