免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1209 | 回复: 0
打印 上一主题 下一主题

[Android] 简单模仿手机图库(1) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-07-13 11:28 |只看该作者 |倒序浏览
LargeImageActivity.java
  1. package com.example.di;

  2. import java.util.ArrayList;
  3. import java.util.HashMap;
  4. import java.util.List;

  5. import com.example.lei.MyPic;
  6. import com.example.lei.Myperson;

  7. import android.app.Activity;
  8. import android.content.Intent;
  9. import android.database.Cursor;
  10. import android.graphics.Bitmap;
  11. import android.graphics.BitmapFactory;
  12. import android.graphics.Matrix;
  13. import android.graphics.Bitmap.Config;
  14. import android.os.Bundle;
  15. import android.util.DisplayMetrics;
  16. import android.view.KeyEvent;
  17. import android.view.LayoutInflater;
  18. import android.view.Menu;
  19. import android.view.MenuInflater;
  20. import android.view.View;
  21. import android.view.Window;
  22. import android.view.View.OnClickListener;
  23. import android.view.ViewGroup;
  24. import android.widget.BaseAdapter;
  25. import android.widget.GridView;
  26. import android.widget.ImageView;
  27. import android.widget.LinearLayout;
  28. import android.widget.Toast;

  29. public class LargeImageActivity extends Activity {
  30.      
  31.      
  32.     private int itemh = 150;
  33.     private int itemw = 150;
  34.      
  35.      
  36.      
  37.      
  38.     Myperson myperson;
  39.     /** 集合中图片所在的索引 */
  40.     private int id;
  41.     /** 图片对象集合 */
  42.     @SuppressWarnings("unchecked")
  43.     private ArrayList<HashMap<String, Object>> picList = new ArrayList();

  44.     GridView gridViews;
  45.     Make make;
  46.      
  47.     //将点击的第几个文件夹的名字传递过去
  48.     String string;
  49.     int Picture=0;
  50.     int index=0;
  51.     //byte类型转换图片
  52.     byte[] bsm;
  53.     int posis=0;
  54.      /** 将图片的文件夹进行保存*/
  55.         List<String> fei=new ArrayList<String>();
  56.         /** 将picList图片文件夹的每第一个数进行保存*/
  57.         List<String> nums=new ArrayList<String>();
  58.         /** 将每个文件夹的图片路径读取出放入sumtuji中*/
  59.         List<String> sumtuji=new ArrayList<String>();
  60.         /** 将每个标题读取出放入titless中*/
  61.         List<String> titless=new ArrayList<String>();
  62.         /** 将每张图片的大小读取出放入datass中*/
  63.         List<String> datass=new ArrayList<String>();
  64.         /**标题对象集合*/
  65.         private ArrayList<HashMap<String,Object>> TitleList = new ArrayList();  
  66.         /**日期对象集合*/
  67.         private ArrayList<HashMap<String,Object>> Datas = new ArrayList();  
  68.         
  69.         String path;
  70.         String title;
  71.         String data;
  72.         MyPic myPic;
  73.     @Override
  74.     protected void onCreate(Bundle savedInstanceState) {
  75.         super.onCreate(savedInstanceState);
  76.         requestWindowFeature(Window.FEATURE_NO_TITLE);
  77.         setContentView(R.layout.activity_large_image);
  78.         myperson = new Myperson();
  79.         gridViews = (GridView) findViewById(R.id.myGrid);
  80.          
  81.          
  82.         // 得到行号
  83.         id = getIntent().getIntExtra("id", id);
  84.         string=getIntent().getStringExtra("string");
  85.         //得到传递过来的集合的每个文件夹的图片数量
  86.         Picture=getIntent().getIntExtra("picnum",Picture);
  87.         posis=getIntent().getIntExtra("position",posis);
  88.         make=new Make();
  89.         myperson=(Myperson) getIntent().getSerializableExtra("person");
  90.         picList = myperson.getPicList();
  91.         fei=myperson.getFei();
  92.         nums=myperson.getNums();
  93.         TitleList=myperson.getTitleList();
  94.         Datas=myperson.getDatas();
  95.          
  96.          
  97.          
  98.          
  99. //      picList.get(0).get(string);
  100.         String cf=fei.get(posis);
  101.          
  102.             while (id+index<id+Picture) {
  103.             bsm = (byte[]) picList.get(id+index).get(cf);
  104.             title=(String) TitleList.get(id+index).get(cf);
  105.             data=(String) Datas.get(id+index).get(cf);
  106.             path=new String(bsm,0,bsm.length-1);
  107.             sumtuji.add(path);
  108.             titless.add(title);
  109.             datass.add(data);
  110.             index++;
  111.             
  112.         }
  113.             myPic=new MyPic();
  114.             myPic.setChuanPic(sumtuji);
  115.             myPic.setTitless(titless);
  116.             myPic.setDatass(datass);
  117. //      sumtuji.add(String.valueOf(bs));
  118. //      while (id-Picture<=id) {
  119. //         
  120. //         
  121. //      }
  122. //      Toast.makeText(LargeImageActivity.this,""+nums.size()+"---------"+Picture+"----"+sumtuji.size()+"----", 0).show();
  123. //      Toast.makeText(LargeImageActivity.this,""+picList.size()+"--------"+fei.size()+"----------"+nums.size(), 0).show();
  124. //        Toast.makeText(LargeImageActivity.this,""+sumtuji.size(),0).show();
  125.             
  126.             gridViews.setAdapter(make);
  127.     }
  128.     class Make extends BaseAdapter{
  129.      
  130.         int zoom=4;
  131.         @Override
  132.         public int getCount() {
  133.             // TODO Auto-generated method stub
  134.             return sumtuji.size();
  135.         }

  136.         @Override
  137.         public Object getItem(int position) {
  138.             // TODO Auto-generated method stub
  139.             return position;
  140.         }

  141.         @Override
  142.         public long getItemId(int position) {
  143.             // TODO Auto-generated method stub
  144.             return position;
  145.         }
  146.         @Override
  147.         public View getView(final int position, View convertView, ViewGroup parent) {
  148.             convertView=LayoutInflater.from(LargeImageActivity.this).inflate(R.layout.grid,null);
  149.             ImageView imageView=(ImageView) convertView.findViewById(R.id.content_iv_pic);
  150.             final String stri=sumtuji.get(position);
  151.             
  152.             //对图片进行内存溢出的处理
  153.             BitmapFactory.Options options = new BitmapFactory.Options();
  154.             options.inJustDecodeBounds = true;
  155.             BitmapFactory.decodeFile(stri, options);
  156.             int mWidth = options.outWidth;
  157.             int mHeight = options.outHeight;
  158.             int s = 1;
  159.             while ((mWidth / s > itemw * 2 * zoom) || (mHeight / s > itemh * 2 * zoom)) {
  160.                 s *= 2;
  161.             }
  162.             options = new BitmapFactory.Options();
  163.             options.inSampleSize = s;
  164.              options.inPreferredConfig = Bitmap.Config.RGB_565;  
  165. //          options.inPreferredConfig = Config.ARGB_8888;
  166.             Bitmap bm = BitmapFactory.decodeFile(stri, options);

  167.             
  168.             
  169.             if (bm != null) {
  170.                 int h = bm.getHeight();
  171.                 int w = bm.getWidth();

  172.                 float ft = (float) ((float) w / (float) h);
  173.                 float fs = (float) ((float) itemw / (float) itemh);

  174.                 int neww = ft >= fs ? itemw * zoom : (int) (itemh * zoom * ft);
  175.                 int newh = ft >= fs ? (int) (itemw * zoom / ft) : itemh * zoom;

  176.                 float scaleWidth = ((float) neww) / w;
  177.                 float scaleHeight = ((float) newh) / h;

  178.                 Matrix matrix = new Matrix();
  179.                 matrix.postScale(scaleWidth, scaleHeight);
  180.                 bm = Bitmap.createBitmap(bm, 0, 0, w, h, matrix, true);

  181.             }
  182.             
  183.             
  184.             
  185.             imageView.setImageBitmap(bm);
  186.             imageView.setOnClickListener(new OnClickListener() {
  187.                  
  188.                 @Override
  189.                 public void onClick(View v) {
  190.             Intent intent=new Intent(LargeImageActivity.this,Pictrueees.class);
  191.             intent.putExtra("stri", stri);
  192.             intent.putExtra("myPic",myPic);
  193.             intent.putExtra("position",position);
  194.             startActivity(intent);
  195.                 }
  196.             });
  197. //         
  198.             return convertView;
  199.         }
  200.          
  201.     }
  202.      
  203.      @Override
  204.         public boolean onKeyDown(int keyCode, KeyEvent event) {
  205.             switch (keyCode) {
  206.             case KeyEvent.KEYCODE_BACK:
  207.                 finish();
  208.                 break;

  209.             default:
  210.                 break;
  211.             }
  212.             return super.onKeyDown(keyCode, event);
  213.         }
  214.         
  215.       
  216. }
复制代码

MainActivity.java
  1. package com.example.di;

  2. import java.io.InputStream;
  3. import java.util.ArrayList;
  4. import java.util.HashMap;
  5. import java.util.List;

  6. import com.example.lei.Myperson;

  7. import android.app.Activity;
  8. import android.app.AlertDialog;
  9. import android.content.DialogInterface;
  10. import android.content.Intent;
  11. import android.database.Cursor;
  12. import android.graphics.Bitmap;
  13. import android.graphics.BitmapFactory;
  14. import android.graphics.Matrix;
  15. import android.os.Bundle;
  16. import android.provider.MediaStore;
  17. import android.view.View;
  18. import android.view.View.OnClickListener;
  19. import android.view.KeyEvent;
  20. import android.view.Menu;
  21. import android.view.MenuInflater;
  22. import android.view.MenuItem;
  23. import android.view.ViewGroup;
  24. import android.view.Window;
  25. import android.widget.BaseAdapter;
  26. import android.widget.GridView;
  27. import android.widget.ImageView;
  28. import android.widget.TextView;
  29. import android.widget.Toast;


  30. public class MainActivity extends Activity {
  31.      /**列表视图*/
  32.     private GridView gridview;  
  33.     /**图片对象*/
  34.     private ImageView image;  
  35.     /**图片名字*/
  36.     private String name;  
  37.     /**图片名字集合*/
  38.     private ArrayList<String> list = new ArrayList();  
  39.     /**图片对象集合*/
  40.   
  41.     private ArrayList<HashMap<String,Object>> picList = new ArrayList();  
  42.     /**标题对象集合*/
  43.     private ArrayList<HashMap<String,Object>> TitleList = new ArrayList();  
  44.     /**图片大小对象集合*/
  45.     private ArrayList<HashMap<String,Object>> Datas = new ArrayList();  
  46.     private Adapters adapter;
  47.     //索引
  48.     String indext;
  49.     /** 将图片的文件夹进行保存*/
  50.     List<String> fei=new ArrayList<String>();
  51.     /** 将picList图片文件夹的每第一个数进行保存*/
  52.     List<String> nums=new ArrayList<String>();
  53.     List<String> numsssss=new ArrayList<String>();
  54.     /** 用集合的方式记录每个图片文件夹的图片数量*/
  55.     List<String> picturenum=new ArrayList<String>();
  56.     List<String> picun=new ArrayList<String>();
  57.     Myperson myperson;
  58.     //开始索引
  59.     int start=0;
  60.     //下一项索引
  61.     int next=0;
  62.     //差值
  63.     int Dvalue=0;
  64.      
  65.      
  66.     private int itemh = 150;
  67.     private int itemw = 150;
  68.      
  69.      
  70.     /**  
  71.      * 初始化  
  72.      */
  73.     @SuppressWarnings("unchecked")
  74.     public void initData(){  
  75.         //查询SD卡所有图片,得到游标  
  76.         Cursor cursor = getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, null, null, null, null);  
  77.         while(cursor.moveToNext()){  
  78.             //文件夹的名字  
  79.             String name = cursor.getString(cursor.getColumnIndex(MediaStore.Images.Media.BUCKET_DISPLAY_NAME));  
  80.             String Title = cursor.getString(cursor.getColumnIndex(MediaStore.Images.Media.TITLE));  
  81.             String time = cursor.getString(cursor.getColumnIndex(MediaStore.Images.Media.SIZE));
  82. //  String bao=cursor.getString(cursor.getColumnIndex(MediaStore.Images.Media.DISPLAY_NAME));
  83.             //图片数据
  84.             byte[] data = cursor.getBlob(cursor.getColumnIndex(MediaStore.Images.Media.DATA));  
  85.             //用来存路经
  86.             System.err.println(data);
  87.             @SuppressWarnings("rawtypes")
  88.             HashMap map = new HashMap();  
  89.             //用来存标题
  90.             @SuppressWarnings("rawtypes")
  91.             HashMap nap=new HashMap();
  92.             //用来存日期
  93.             @SuppressWarnings("rawtypes")
  94.             HashMap oap=new HashMap();
  95.          if (name.equals(indext)) {
  96.              map.put(name, data);
  97.              nap.put(name,Title);
  98.              oap.put(name,time);
  99.         }
  100.          else {
  101.              map.put(name, data);
  102.              nap.put(name,Title);
  103.              oap.put(name,time);
  104.              indext=name;
  105.              fei.add(name);
  106.              picList.size();
  107.              //强制转换为String类型
  108.             
  109.              nums.add(String.valueOf(picList.size()));
  110.              next=picList.size();
  111.              Dvalue=next-start;
  112.              picturenum.add(String.valueOf(Dvalue));
  113.               
  114.               
  115.         }
  116.          
  117.          
  118.            start=next;
  119.          
  120. //            }
  121.         //将map放到集合中
  122.             picList.add(map);
  123.             TitleList.add(nap);
  124.             Datas.add(oap);
  125.         }  
  126.          
  127.     cursor.close();  
  128.     }  
  129.      
  130.       
  131.     @Override
  132.     protected void onCreate(Bundle savedInstanceState) {
  133.         super.onCreate(savedInstanceState);
  134.         requestWindowFeature(Window.FEATURE_NO_TITLE);
  135.         setContentView(R.layout.activity_main);
  136.         adapter=new Adapters();
  137.          //调用初始化方法  
  138.         initData();  
  139.        picturenum.remove(0);
  140.        picun=picturenum;
  141.        int v=picturenum.size()-1;
  142.        String ssss=picturenum.get(v);
  143.        picun.add(ssss);
  144.    
  145.         
  146.         
  147.        myperson=new Myperson();
  148.        myperson.setPicList(picList);
  149.        myperson.setFei(fei);
  150.        myperson.setNums(nums);
  151.        myperson.setTitleList(TitleList);
  152.        myperson.setDatas(Datas);
  153.         
  154.        Toast.makeText(MainActivity.this,""+TitleList.get(12).get("Photo")+""+picList.size(), 1).show();
  155. //        Toast.makeText(MainActivity.this,""+picturenum.get(0)+"===="+nums.get(1)+"===="+picun.get(21),0).show();
  156.         gridview =(GridView) findViewById(R.id.image_listView);
  157.         gridview.setAdapter(adapter);
  158. //        gridview.setNumColumns(adapter.getCount());
  159.     }   
  160.     class Adapters extends BaseAdapter{
  161.          
  162.     int zoom=4;
  163.          
  164.          
  165.         @Override
  166.         public int getCount() {
  167.             // TODO Auto-generated method stub
  168.             return fei.size();
  169.         }
  170.         @Override
  171.         public Object getItem(int position) {
  172.             // TODO Auto-generated method stub
  173.             return position;
  174.         }

  175.         @Override
  176.         public long getItemId(int position) {
  177.             // TODO Auto-generated method stub
  178.             return position;
  179.         }

  180.         @Override
  181.         public View getView(final int position, View convertView, ViewGroup parent) {
  182.             if(convertView==null){  
  183.                 convertView = getLayoutInflater().inflate(R.layout.look_image_listview_content, null);  
  184.             }  
  185.             //将每个文件夹的图片数量进行保存
  186.             
  187.             
  188.             
  189.             image = (ImageView) convertView.findViewById(R.id.picture_list_content_iv_pic);  
  190.             TextView nameText = (TextView) convertView.findViewById(R.id.picture_list_content_tv_name);
  191.             TextView sum=(TextView) convertView.findViewById(R.id.sum);
  192.             
  193.             //查出picturenum集合中的每个文件夹的图片数量
  194.              String Picture=picun.get(position);
  195.             int c=Integer.parseInt(Picture);
  196.             final int picnum=Integer.parseInt(Picture);
  197.             
  198.             
  199.             String string2=nums.get(position);
  200.             //查找出第几个索引
  201.             int a= Integer.parseInt(string2);
  202.             final String string= fei.get(position);
  203.             name =string;
  204.             byte[] bs = (byte[]) picList.get(a).get(string);
  205.         
  206.             //设置图片信息  
  207.             nameText.setText(name);  
  208.             sum.setText("num:"+c);
  209.       
  210. //   通过宽高设置,但如果 options.inSampleSize 的值越大则图像越模糊
  211. //            BitmapFactory.Options options = new BitmapFactory.Options();
  212. //            options.inSampleSize =5;//图片宽高都为原来的二分之一,即图片为原来的四分之一
  213. //            options.inPreferredConfig = Bitmap.Config.RGB_565;  
  214. //            options.inPurgeable = true;  
  215. //            options.inInputShareable = true;  
  216. //            Bitmap bitmap = BitmapFactory.decodeFile(new String(bs,0,bs.length-1), options);
  217.                      
  218.             
  219.           //对图片进行内存溢出的处理
  220.             BitmapFactory.Options options = new BitmapFactory.Options();
  221.             options.inJustDecodeBounds = true;
  222.             BitmapFactory.decodeFile(new String(bs,0,bs.length-1), options);
  223.             int mWidth = options.outWidth;
  224.             int mHeight = options.outHeight;
  225.             int s = 1;
  226.             while ((mWidth / s > itemw * 2 * zoom) || (mHeight / s > itemh * 2 * zoom)) {
  227.                 s *= 2;
  228.             }
  229.             options = new BitmapFactory.Options();
  230.             options.inSampleSize = s;
  231. //          options.inPreferredConfig = Config.ARGB_8888;
  232.              options.inPreferredConfig = Bitmap.Config.RGB_565;  
  233.             Bitmap bitmap = BitmapFactory.decodeFile(new String(bs,0,bs.length-1), options);

  234.             
  235.             
  236.             if (bitmap != null) {
  237.                 int h = bitmap.getHeight();
  238.                 int w = bitmap.getWidth();

  239.                 float ft = (float) ((float) w / (float) h);
  240.                 float fs = (float) ((float) itemw / (float) itemh);

  241.                 int neww = ft >= fs ? itemw * zoom : (int) (itemh * zoom * ft);
  242.                 int newh = ft >= fs ? (int) (itemw * zoom / ft) : itemh * zoom;

  243.                 float scaleWidth = ((float) neww) / w;
  244.                 float scaleHeight = ((float) newh) / h;

  245.                 Matrix matrix = new Matrix();
  246.                 matrix.postScale(scaleWidth, scaleHeight);
  247.                 bitmap = Bitmap.createBitmap(bitmap, 0, 0, w, h, matrix, true);
  248.             
  249.             }
  250.             //设置图片  
  251. //            Bitmap bitmap = BitmapFactory.decodeFile(new String(bs,0,bs.length-1));
  252.             
  253.             image.setImageBitmap(bitmap);  
  254.             //设置标识符  
  255.             image.setTag(a);  
  256.             list.add(name);  
  257.             
  258.             //为图片添加监听  
  259.             image.setOnClickListener(new OnClickListener() {  
  260.                   
  261.                 @Override
  262.                 public void onClick(View v) {   
  263.                     Intent intent = new Intent(MainActivity.this,LargeImageActivity.class);  
  264.                     int id =Integer.parseInt(v.getTag().toString());  
  265.                     intent.putExtra("id",id);  
  266.                     intent.putExtra("list", list);
  267.                     intent.putExtra("person",myperson);
  268.                     //将每个文件夹的数量传递
  269.                    intent.putExtra("picnum",picnum);
  270.                     //将点击的第几个文件夹的名字传递过去
  271.                     intent.putExtra("string",string);
  272.                     intent.putExtra("position",position);
  273.                     
  274.                     startActivity(intent);  
  275.                 }  
  276.             });
  277.             return convertView;  
  278.         }  
  279.         }   
  280.     @Override
  281.     public boolean onCreateOptionsMenu(Menu menu) {
  282.         MenuInflater inflater=getMenuInflater();
  283.         inflater.inflate(R.menu.caozuo, menu);
  284.         return super.onCreateOptionsMenu(menu);
  285.     }
  286.     @Override
  287.     public boolean onOptionsItemSelected(MenuItem item) {
  288.         if (item.getItemId()==R.id.eqit) {
  289.             AlertDialog.Builder builder=new AlertDialog.Builder(MainActivity.this);
  290.             builder.setTitle("提示:");
  291.             builder.setMessage("你确定要退出吗?");
  292.             builder.setNegativeButton("取消", listener);
  293.             builder.setPositiveButton("确定", listener);
  294.             builder.show();
  295.         }
  296.         return super.onOptionsItemSelected(item);
  297.     }
  298.      
  299.      
  300.      
  301. DialogInterface.OnClickListener listener=new DialogInterface.OnClickListener() {
  302.          
  303.         @Override
  304.         public void onClick(DialogInterface dialog, int which) {
  305.             switch (which) {
  306.             
  307.             //确定按钮
  308.             case AlertDialog.BUTTON_POSITIVE:
  309.                 MainActivity.this.finish();
  310.                 break;
  311.                 //取消按钮
  312.             case AlertDialog.BUTTON_NEGATIVE:
  313.                  
  314.                 break;
  315.             
  316.             }
  317.         }
  318.     };
  319.      
  320.     @Override
  321.     public boolean onKeyDown(int keyCode, KeyEvent event) {
  322.         switch (keyCode) {
  323.         case KeyEvent.KEYCODE_BACK:
  324.             AlertDialog.Builder builder=new AlertDialog.Builder(MainActivity.this);
  325.             builder.setTitle("提示:");
  326.             builder.setMessage("你确定要退出吗?");
  327.             builder.setNegativeButton("取消", listener);
  328.             builder.setPositiveButton("确定", listener);
  329.             builder.show();
  330.             break;

  331.         default:
  332.             break;
  333.         }
  334.         return super.onKeyDown(keyCode, event);
  335.     }
  336.     }
复制代码

Pictrueees.java
  1. package com.example.di;

  2. import java.util.ArrayList;
  3. import java.util.List;

  4. import android.app.Activity;
  5. import android.app.AlertDialog;
  6. import android.content.Intent;
  7. import android.graphics.Bitmap;
  8. import android.graphics.BitmapFactory;
  9. import android.os.Bundle;
  10. import android.support.v4.view.PagerAdapter;
  11. import android.support.v4.view.ViewPager;
  12. import android.support.v4.view.ViewPager.OnPageChangeListener;
  13. import android.view.KeyEvent;
  14. import android.view.LayoutInflater;
  15. import android.view.Menu;
  16. import android.view.MenuInflater;
  17. import android.view.MenuItem;
  18. import android.view.View;
  19. import android.view.ViewGroup;
  20. import android.view.Window;
  21. import android.widget.ImageView;
  22. import android.widget.TextView;
  23. import android.widget.Toast;

  24. import com.example.image.ZoomImageView;
  25. import com.example.lei.MyPic;

  26. public class Pictrueees extends Activity {
  27.      

  28.     ZoomImageView imageView;
  29.     MyViewpager mViewpager;
  30.     ViewPager viewPager;
  31.     List<String> chuanPic;
  32.     private ImageView [] mImageViews;
  33.     MyPic myPic;
  34.     String stri;
  35.     int positionsss;
  36.     int c=0;
  37.      
  38.      /** 将每个标题读取出放入titless中*/
  39.     List<String> titless=new ArrayList<String>();
  40.     /** 将每张图片的大小读取出放入datass中*/
  41.     List<String> datass=new ArrayList<String>();
  42.      
  43.     int zoom=3;
  44.     private int itemh = 150;
  45.     private int itemw = 150;
  46.     int popopo;
  47.     @Override
  48.     protected void onCreate(Bundle savedInstanceState) {
  49.         super.onCreate(savedInstanceState);
  50.         requestWindowFeature(Window.FEATURE_NO_TITLE);
  51.         setContentView(R.layout.activity_pictrue);

  52.         viewPager=(ViewPager) findViewById(R.id.viewpager);
  53.          
  54.          
  55.         positionsss=getIntent().getIntExtra("position", positionsss);
  56.          
  57.         chuanPic=new ArrayList<String>();
  58.         stri=getIntent().getStringExtra("stri");
  59.         myPic=new MyPic();
  60.         myPic=(MyPic) getIntent().getSerializableExtra("myPic");
  61.         chuanPic=myPic.getChuanPic();
  62.         titless=myPic.getTitless();
  63.         datass=myPic.getDatass();
  64.          
  65.          
  66.          
  67.         int i=Integer.valueOf(chuanPic.size());
  68.         mImageViews=new ImageView[i];
  69. //      Toast.makeText(Pictrueees.this,""+positionsss,0).show();
  70. //      Toast.makeText(Pictrueees.this,""+mImageViews.length+"==="+chuanPic.get(0), 0).show();
  71.         mViewpager=new MyViewpager();
  72.         viewPager.setAdapter(mViewpager);
  73.         //标记图片的第几张
  74.         viewPager.setCurrentItem(positionsss);
  75.         popopo=positionsss;
  76.         viewPager.setOnPageChangeListener(new OnPageChangeListener() {
  77.             
  78.             @Override
  79.             public void onPageSelected(int arg0) {
  80.                  
  81.                 popopo=arg0;
  82.             }
  83.             
  84.             @Override
  85.             public void onPageScrolled(int arg0, float arg1, int arg2) {
  86.                 // TODO Auto-generated method stub
  87.                  
  88.             }
  89.             
  90.             @Override
  91.             public void onPageScrollStateChanged(int arg0) {
  92.                 // TODO Auto-generated method stub
  93.                  
  94.             }
  95.         });
  96.          
  97.     }
  98.      
  99.        class MyViewpager extends PagerAdapter{

  100.            @Override
  101.         public void destroyItem(ViewGroup container, int position, Object object) {
  102.             
  103.                container.removeView(mImageViews[position]);
  104.         }

  105.         @Override
  106.         public Object instantiateItem(ViewGroup container, int position) {
  107.             imageView=new ZoomImageView(Pictrueees.this);
  108. //          Bitmap bm1 = BitmapFactory.decodeFile(chuanPic.get(position));
  109.             
  110.             
  111.             //对图片进行内存溢出的处理
  112.             BitmapFactory.Options options = new BitmapFactory.Options();
  113.             options.inJustDecodeBounds = true;
  114.             BitmapFactory.decodeFile(chuanPic.get(position), options);
  115.             int mWidth = options.outWidth;
  116.             int mHeight = options.outHeight;
  117.             int s = 1;
  118.             while ((mWidth / s > itemw * 2 * zoom) || (mHeight / s > itemh * 2 * zoom)) {
  119.                 s *= 2;
  120.             }
  121.             options = new BitmapFactory.Options();
  122.             options.inSampleSize = s;
  123.              options.inPreferredConfig = Bitmap.Config.RGB_565;  
  124. //          options.inPreferredConfig = Config.ARGB_8888;
  125.             Bitmap bm11 = BitmapFactory.decodeFile(chuanPic.get(position), options);
  126.             
  127.             
  128.             
  129.             imageView.setImageBitmap(bm11);
  130.             container.addView(imageView);
  131.             mImageViews[position]=imageView;
  132.             return imageView;
  133.         }
  134.         @Override
  135.         public int getCount() {
  136.             // TODO Auto-generated method stub
  137.             return mImageViews.length;
  138.         }

  139.         @Override
  140.         public boolean isViewFromObject(View arg0, Object arg1) {
  141.             
  142.             return arg0==arg1;
  143.         }   
  144.      }
  145.     @Override
  146.     public boolean onKeyDown(int keyCode, KeyEvent event) {
  147.         switch (keyCode) {
  148.         case KeyEvent.KEYCODE_BACK:
  149.             finish();
  150.             break;

  151.         default:
  152.             break;
  153.         }
  154.         return super.onKeyDown(keyCode, event);
  155.     }
  156.     @Override
  157.     public boolean onCreateOptionsMenu(Menu menu) {
  158.         MenuInflater inflater=getMenuInflater();
  159.         inflater.inflate(R.menu.tuxi, menu);
  160.         return super.onCreateOptionsMenu(menu);
  161.     }
  162.     @Override
  163.     public boolean onOptionsItemSelected(MenuItem item) {
  164.         if (item.getItemId()==R.id.tuxii) {
  165.             
  166.             View view =LayoutInflater.from(Pictrueees.this).inflate(R.layout.xinxi,null);
  167.            //获取图片缩略图
  168.             ImageView image=(ImageView) view.findViewById(R.id.suotu);
  169.             Bitmap bitmapss=BitmapFactory.decodeFile(chuanPic.get(popopo));
  170.             image.setImageBitmap(bitmapss);
  171.             //获取路径
  172.             TextView textView=(TextView) view.findViewById(R.id.tupian);
  173.             textView.setText("路径:"+chuanPic.get(popopo));
  174.             //获取标题
  175.             TextView titleView=(TextView) view.findViewById(R.id.title);
  176.             titleView.setText("标题:"+titless.get(popopo));
  177.             //获取日期
  178.             TextView sizeView=(TextView) view.findViewById(R.id.size);
  179.             sizeView.setText("日期"+datass.get(popopo));
  180.             AlertDialog.Builder builder=new AlertDialog.Builder(Pictrueees.this);
  181.             builder.setTitle("第"+(popopo+1)+"项"+"(共"+chuanPic.size()+"项)").
  182.             setView(view).setNegativeButton("关闭",null);
  183.             builder.show();
  184.         }
  185.         return super.onOptionsItemSelected(item);
  186.     }
  187. }
复制代码


您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP