package com.bingo.activity; import java.io.File; import java.io.Serializable; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import android.app.Activity; import android.app.ProgressDialog; import android.content.Context; import android.content.Intent; import android.graphics.Bitmap; import android.graphics.Bitmap.Config; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.view.Gravity; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.view.Window; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.BaseAdapter; import android.widget.Button; import android.widget.GridView; import android.widget.ImageButton; import android.widget.ImageView; import android.widget.Toast; import com.bingo.activity.BingoMore_Comm.Adapter; import com.bingo.util.ImageDispose; import com.bingo.util.ImageMemory; import com.bingo.util.JudgePath; public class BingoPhotoAlbumActivity extends Activity { private GridView photoalbum; private ImageButton back; boolean falg = true; private ImageList adapter; private Button ok; private ProgressDialog dialog = null; JudgePath path = new JudgePath(); List<String> list; List<Bitmap> listB = new ArrayList<Bitmap>(); List<Map<String,String>> listtemp = new ArrayList(); private Context context; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 窗口去掉标题 requestWindowFeature(Window.FEATURE_NO_TITLE); // // 窗口设置为全屏 // getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, // WindowManager.LayoutParams.FLAG_FULLSCREEN); setContentView(R.layout.photoalbum); context =this; back= (ImageButton) findViewById(R.id.xiangce_back); back.setOnClickListener(new xcback()); ok = (Button) findViewById(R.id.xiangceok); ok.setOnClickListener(new xcOk()); list = getSD(); imageBitmap(); photoalbum = (GridView) findViewById(R.id.GridView_photoalbum); photoalbum.setNumColumns(4); photoalbum.setGravity(Gravity.CENTER); photoalbum.setVerticalSpacing(3); photoalbum.setHorizontalSpacing(1); photoalbum.setOnItemClickListener( new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { if (listtemp.size()>0) { falg= true; for (int i = 0; i < listtemp.size(); i++) { if (Integer.valueOf((listtemp.get(i).get("id")))==position) { listtemp.remove(i); Bitmap src = listB.get(position); ((ImageView)view).setImageBitmap(src); falg = false; break; } } if(falg){ Map<String, String> map = new HashMap<String, String>(); map.put("id", String.valueOf(position)); listtemp.add(map); Bitmap newb =BitmapFactory.decodeResource(getResources(),R.drawable.selected ); Bitmap src = adapter.getcheckedImageIDPostion(position); Bitmap bi = Bitmap.createBitmap( view.getWidth(), view.getHeight(), Config.ARGB_8888 ); Canvas cv = new Canvas( bi ); cv.drawBitmap( src, 2, 0, null ); cv.drawBitmap( newb, view.getWidth() - newb.getWidth() -5, view.getHeight() - newb.getHeight() -5, null );//在src的右下角画入水印 cv.save( Canvas.ALL_SAVE_FLAG );//保存 cv.restore();//存储 ((ImageView)view).setImageBitmap(bi); falg = true; } }else { Map<String, String> map = new HashMap<String, String>(); map.put("id", String.valueOf(position)); listtemp.add(map); Bitmap newb =BitmapFactory.decodeResource(getResources(),R.drawable.selected ); Bitmap src = adapter.getcheckedImageIDPostion(position); Bitmap bi = Bitmap.createBitmap( view.getWidth(), view.getHeight(), Config.ARGB_8888 ); Canvas cv = new Canvas( bi ); cv.drawBitmap( src, 2, 0, null ); cv.drawBitmap( newb, view.getWidth() - newb.getWidth() -5, view.getHeight() - newb.getHeight() -5, null );//在src的右下角画入水印 cv.save( Canvas.ALL_SAVE_FLAG );//保存 cv.restore();//存储 ((ImageView)view).setImageBitmap(bi); } } }); } class xcback implements OnClickListener{ @Override public void onClick(View v) { finish(); } } class xcOk implements OnClickListener{ @Override public void onClick(View v) { List<String> list01 = new ArrayList<String>(); if(listtemp.size()>0){ for (int i = 0; i < listtemp.size(); i++) { //list01.add(adapter.getcheckedImageIDPostion(Integer.valueOf(listtemp.get(i).get("id")))); list01.add(list.get(Integer.valueOf(listtemp.get(i).get("id")))); } } Intent intent = new Intent(BingoPhotoAlbumActivity.this,PhotoShake.class); if(list01.size()>0){ intent.putExtra("listBitmap", (Serializable)list01); startActivity(intent); }else{ Toast.makeText(BingoPhotoAlbumActivity.this, "请选择图片", Toast.LENGTH_SHORT).show(); } } } public class ImageList extends BaseAdapter { private Context context; public ImageList(Context a) { this.context = a; } @Override public int getCount() { return listB.size(); } @Override public Object getItem(int position) { return listB.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { ImageView iv = new ImageView(context); iv.setImageBitmap( listB.get(position)); if(listtemp.size()>0){ for (int i = 0; i < listtemp.size(); i++) { if(Integer.valueOf((listtemp.get(i).get("id")))==position){ Bitmap newb =BitmapFactory.decodeResource(getResources(),R.drawable.selected ); Bitmap src = adapter.getcheckedImageIDPostion(position); Bitmap bi = Bitmap.createBitmap( listB.get(position).getWidth(), listB.get(position).getHeight(), Config.ARGB_8888 ); Canvas cv = new Canvas( bi ); cv.drawBitmap( src, 2, 0, null ); cv.drawBitmap( newb, listB.get(position).getWidth() - newb.getWidth() -5, listB.get(position).getHeight() - newb.getHeight() -5, null );//在src的右下角画入水印 cv.save( Canvas.ALL_SAVE_FLAG );//保存 cv.restore();//存储 ((ImageView)iv).setImageBitmap(bi); } } } iv.setAdjustViewBounds(true); return iv; } /* 自定义获取对应位置的图片ID */ public Bitmap getcheckedImageIDPostion(int i) { return listB.get(i); } } private void imageBitmap(){ dialog = ProgressDialog.show(BingoPhotoAlbumActivity.this, "","加载中,请稍等···"); new Thread() { @Override public void run() { //List list01 = new ArrayList(); Bitmap bitmap; for (int i = 0; i < list.size(); i++) { BitmapFactory.Options opts = new BitmapFactory.Options(); opts.inJustDecodeBounds = true; BitmapFactory.decodeFile(list.get(i), opts); opts.inSampleSize = new ImageMemory().computeSampleSize(opts, -1, 110 * 110); opts.inJustDecodeBounds = false; Bitmap bmp = BitmapFactory.decodeFile(list.get(i), opts); ImageDispose iDispose= new ImageDispose(); bitmap = iDispose.zoomBitmap(bmp, 110, 110); listB.add(bitmap); } Message message = new Message(); message.what = 1; handler0.sendMessage(message); } }.start(); } private Handler handler0 = new Handler() { public void handleMessage(android.os.Message msg) { switch (msg.what) { case 1: adapter = new ImageList(context); photoalbum.setAdapter(adapter); dialog.dismiss(); break; case -1: break; } }; }; /** * * @return */ private List<String> getSD() { /* 设定目前所在路径 */ List<String> it = new ArrayList<String>(); File f = new File(new JudgePath().getPath()+"/dcim/Camera"); //File f = new File(path.getPath() ); if (f.listFiles() != null) { File[] files = f.listFiles(); /* 将所有文件存入ArrayList中 */ for (int i = 0; i < files.length; i++) { File file = files[i]; if (getImageFile(file.getPath())) it.add(file.getPath()); } } return it; } private boolean getImageFile(String fName) { boolean re; /* 取得扩展名 */ String end = fName .substring(fName.lastIndexOf(".") + 1, fName.length()) .toLowerCase(); /* 按扩展名的类型决定MimeType */ if (end.equals("jpg") || end.equals("gif") || end.equals("png") || end.equals("jpeg") || end.equals("bmp")) { re = true; } else { re = false; } return re; } }