- 论坛徽章:
- 0
|
LargeImageActivity.java
- package com.example.di;
-
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.List;
-
- import com.example.lei.MyPic;
- import com.example.lei.Myperson;
-
- import android.app.Activity;
- import android.content.Intent;
- import android.database.Cursor;
- import android.graphics.Bitmap;
- import android.graphics.BitmapFactory;
- import android.graphics.Matrix;
- import android.graphics.Bitmap.Config;
- import android.os.Bundle;
- import android.util.DisplayMetrics;
- import android.view.KeyEvent;
- import android.view.LayoutInflater;
- import android.view.Menu;
- import android.view.MenuInflater;
- import android.view.View;
- import android.view.Window;
- import android.view.View.OnClickListener;
- import android.view.ViewGroup;
- import android.widget.BaseAdapter;
- import android.widget.GridView;
- import android.widget.ImageView;
- import android.widget.LinearLayout;
- import android.widget.Toast;
-
- public class LargeImageActivity extends Activity {
-
-
- private int itemh = 150;
- private int itemw = 150;
-
-
-
-
- Myperson myperson;
- /** 集合中图片所在的索引 */
- private int id;
- /** 图片对象集合 */
- @SuppressWarnings("unchecked")
- private ArrayList<HashMap<String, Object>> picList = new ArrayList();
-
- GridView gridViews;
- Make make;
-
- //将点击的第几个文件夹的名字传递过去
- String string;
- int Picture=0;
- int index=0;
- //byte类型转换图片
- byte[] bsm;
- int posis=0;
- /** 将图片的文件夹进行保存*/
- List<String> fei=new ArrayList<String>();
- /** 将picList图片文件夹的每第一个数进行保存*/
- List<String> nums=new ArrayList<String>();
- /** 将每个文件夹的图片路径读取出放入sumtuji中*/
- List<String> sumtuji=new ArrayList<String>();
- /** 将每个标题读取出放入titless中*/
- List<String> titless=new ArrayList<String>();
- /** 将每张图片的大小读取出放入datass中*/
- List<String> datass=new ArrayList<String>();
- /**标题对象集合*/
- private ArrayList<HashMap<String,Object>> TitleList = new ArrayList();
- /**日期对象集合*/
- private ArrayList<HashMap<String,Object>> Datas = new ArrayList();
-
- String path;
- String title;
- String data;
- MyPic myPic;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- requestWindowFeature(Window.FEATURE_NO_TITLE);
- setContentView(R.layout.activity_large_image);
- myperson = new Myperson();
- gridViews = (GridView) findViewById(R.id.myGrid);
-
-
- // 得到行号
- id = getIntent().getIntExtra("id", id);
- string=getIntent().getStringExtra("string");
- //得到传递过来的集合的每个文件夹的图片数量
- Picture=getIntent().getIntExtra("picnum",Picture);
- posis=getIntent().getIntExtra("position",posis);
- make=new Make();
- myperson=(Myperson) getIntent().getSerializableExtra("person");
- picList = myperson.getPicList();
- fei=myperson.getFei();
- nums=myperson.getNums();
- TitleList=myperson.getTitleList();
- Datas=myperson.getDatas();
-
-
-
-
- // picList.get(0).get(string);
- String cf=fei.get(posis);
-
- while (id+index<id+Picture) {
- bsm = (byte[]) picList.get(id+index).get(cf);
- title=(String) TitleList.get(id+index).get(cf);
- data=(String) Datas.get(id+index).get(cf);
- path=new String(bsm,0,bsm.length-1);
- sumtuji.add(path);
- titless.add(title);
- datass.add(data);
- index++;
-
- }
- myPic=new MyPic();
- myPic.setChuanPic(sumtuji);
- myPic.setTitless(titless);
- myPic.setDatass(datass);
- // sumtuji.add(String.valueOf(bs));
- // while (id-Picture<=id) {
- //
- //
- // }
- // Toast.makeText(LargeImageActivity.this,""+nums.size()+"---------"+Picture+"----"+sumtuji.size()+"----", 0).show();
- // Toast.makeText(LargeImageActivity.this,""+picList.size()+"--------"+fei.size()+"----------"+nums.size(), 0).show();
- // Toast.makeText(LargeImageActivity.this,""+sumtuji.size(),0).show();
-
- gridViews.setAdapter(make);
- }
- class Make extends BaseAdapter{
-
- int zoom=4;
- @Override
- public int getCount() {
- // TODO Auto-generated method stub
- return sumtuji.size();
- }
-
- @Override
- public Object getItem(int position) {
- // TODO Auto-generated method stub
- return position;
- }
-
- @Override
- public long getItemId(int position) {
- // TODO Auto-generated method stub
- return position;
- }
- @Override
- public View getView(final int position, View convertView, ViewGroup parent) {
- convertView=LayoutInflater.from(LargeImageActivity.this).inflate(R.layout.grid,null);
- ImageView imageView=(ImageView) convertView.findViewById(R.id.content_iv_pic);
- final String stri=sumtuji.get(position);
-
- //对图片进行内存溢出的处理
- BitmapFactory.Options options = new BitmapFactory.Options();
- options.inJustDecodeBounds = true;
- BitmapFactory.decodeFile(stri, options);
- int mWidth = options.outWidth;
- int mHeight = options.outHeight;
- int s = 1;
- while ((mWidth / s > itemw * 2 * zoom) || (mHeight / s > itemh * 2 * zoom)) {
- s *= 2;
- }
- options = new BitmapFactory.Options();
- options.inSampleSize = s;
- options.inPreferredConfig = Bitmap.Config.RGB_565;
- // options.inPreferredConfig = Config.ARGB_8888;
- Bitmap bm = BitmapFactory.decodeFile(stri, options);
-
-
-
- if (bm != null) {
- int h = bm.getHeight();
- int w = bm.getWidth();
-
- float ft = (float) ((float) w / (float) h);
- float fs = (float) ((float) itemw / (float) itemh);
-
- int neww = ft >= fs ? itemw * zoom : (int) (itemh * zoom * ft);
- int newh = ft >= fs ? (int) (itemw * zoom / ft) : itemh * zoom;
-
- float scaleWidth = ((float) neww) / w;
- float scaleHeight = ((float) newh) / h;
-
- Matrix matrix = new Matrix();
- matrix.postScale(scaleWidth, scaleHeight);
- bm = Bitmap.createBitmap(bm, 0, 0, w, h, matrix, true);
-
- }
-
-
-
- imageView.setImageBitmap(bm);
- imageView.setOnClickListener(new OnClickListener() {
-
- @Override
- public void onClick(View v) {
- Intent intent=new Intent(LargeImageActivity.this,Pictrueees.class);
- intent.putExtra("stri", stri);
- intent.putExtra("myPic",myPic);
- intent.putExtra("position",position);
- startActivity(intent);
- }
- });
- //
- return convertView;
- }
-
- }
-
- @Override
- public boolean onKeyDown(int keyCode, KeyEvent event) {
- switch (keyCode) {
- case KeyEvent.KEYCODE_BACK:
- finish();
- break;
-
- default:
- break;
- }
- return super.onKeyDown(keyCode, event);
- }
-
-
- }
复制代码
MainActivity.java
- package com.example.di;
-
- import java.io.InputStream;
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.List;
-
- import com.example.lei.Myperson;
-
- import android.app.Activity;
- import android.app.AlertDialog;
- import android.content.DialogInterface;
- import android.content.Intent;
- import android.database.Cursor;
- import android.graphics.Bitmap;
- import android.graphics.BitmapFactory;
- import android.graphics.Matrix;
- import android.os.Bundle;
- import android.provider.MediaStore;
- import android.view.View;
- import android.view.View.OnClickListener;
- import android.view.KeyEvent;
- import android.view.Menu;
- import android.view.MenuInflater;
- import android.view.MenuItem;
- import android.view.ViewGroup;
- import android.view.Window;
- import android.widget.BaseAdapter;
- import android.widget.GridView;
- import android.widget.ImageView;
- import android.widget.TextView;
- import android.widget.Toast;
-
-
- public class MainActivity extends Activity {
- /**列表视图*/
- private GridView gridview;
- /**图片对象*/
- private ImageView image;
- /**图片名字*/
- private String name;
- /**图片名字集合*/
- private ArrayList<String> list = new ArrayList();
- /**图片对象集合*/
-
- private ArrayList<HashMap<String,Object>> picList = new ArrayList();
- /**标题对象集合*/
- private ArrayList<HashMap<String,Object>> TitleList = new ArrayList();
- /**图片大小对象集合*/
- private ArrayList<HashMap<String,Object>> Datas = new ArrayList();
- private Adapters adapter;
- //索引
- String indext;
- /** 将图片的文件夹进行保存*/
- List<String> fei=new ArrayList<String>();
- /** 将picList图片文件夹的每第一个数进行保存*/
- List<String> nums=new ArrayList<String>();
- List<String> numsssss=new ArrayList<String>();
- /** 用集合的方式记录每个图片文件夹的图片数量*/
- List<String> picturenum=new ArrayList<String>();
- List<String> picun=new ArrayList<String>();
- Myperson myperson;
- //开始索引
- int start=0;
- //下一项索引
- int next=0;
- //差值
- int Dvalue=0;
-
-
- private int itemh = 150;
- private int itemw = 150;
-
-
- /**
- * 初始化
- */
- @SuppressWarnings("unchecked")
- public void initData(){
- //查询SD卡所有图片,得到游标
- Cursor cursor = getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, null, null, null, null);
- while(cursor.moveToNext()){
- //文件夹的名字
- String name = cursor.getString(cursor.getColumnIndex(MediaStore.Images.Media.BUCKET_DISPLAY_NAME));
- String Title = cursor.getString(cursor.getColumnIndex(MediaStore.Images.Media.TITLE));
- String time = cursor.getString(cursor.getColumnIndex(MediaStore.Images.Media.SIZE));
- // String bao=cursor.getString(cursor.getColumnIndex(MediaStore.Images.Media.DISPLAY_NAME));
- //图片数据
- byte[] data = cursor.getBlob(cursor.getColumnIndex(MediaStore.Images.Media.DATA));
- //用来存路经
- System.err.println(data);
- @SuppressWarnings("rawtypes")
- HashMap map = new HashMap();
- //用来存标题
- @SuppressWarnings("rawtypes")
- HashMap nap=new HashMap();
- //用来存日期
- @SuppressWarnings("rawtypes")
- HashMap oap=new HashMap();
- if (name.equals(indext)) {
- map.put(name, data);
- nap.put(name,Title);
- oap.put(name,time);
- }
- else {
- map.put(name, data);
- nap.put(name,Title);
- oap.put(name,time);
- indext=name;
- fei.add(name);
- picList.size();
- //强制转换为String类型
-
- nums.add(String.valueOf(picList.size()));
- next=picList.size();
- Dvalue=next-start;
- picturenum.add(String.valueOf(Dvalue));
-
-
- }
-
-
- start=next;
-
- // }
- //将map放到集合中
- picList.add(map);
- TitleList.add(nap);
- Datas.add(oap);
- }
-
- cursor.close();
- }
-
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- requestWindowFeature(Window.FEATURE_NO_TITLE);
- setContentView(R.layout.activity_main);
- adapter=new Adapters();
- //调用初始化方法
- initData();
- picturenum.remove(0);
- picun=picturenum;
- int v=picturenum.size()-1;
- String ssss=picturenum.get(v);
- picun.add(ssss);
-
-
-
- myperson=new Myperson();
- myperson.setPicList(picList);
- myperson.setFei(fei);
- myperson.setNums(nums);
- myperson.setTitleList(TitleList);
- myperson.setDatas(Datas);
-
- Toast.makeText(MainActivity.this,""+TitleList.get(12).get("Photo")+""+picList.size(), 1).show();
- // Toast.makeText(MainActivity.this,""+picturenum.get(0)+"===="+nums.get(1)+"===="+picun.get(21),0).show();
- gridview =(GridView) findViewById(R.id.image_listView);
- gridview.setAdapter(adapter);
- // gridview.setNumColumns(adapter.getCount());
- }
- class Adapters extends BaseAdapter{
-
- int zoom=4;
-
-
- @Override
- public int getCount() {
- // TODO Auto-generated method stub
- return fei.size();
- }
- @Override
- public Object getItem(int position) {
- // TODO Auto-generated method stub
- return position;
- }
-
- @Override
- public long getItemId(int position) {
- // TODO Auto-generated method stub
- return position;
- }
-
- @Override
- public View getView(final int position, View convertView, ViewGroup parent) {
- if(convertView==null){
- convertView = getLayoutInflater().inflate(R.layout.look_image_listview_content, null);
- }
- //将每个文件夹的图片数量进行保存
-
-
-
- image = (ImageView) convertView.findViewById(R.id.picture_list_content_iv_pic);
- TextView nameText = (TextView) convertView.findViewById(R.id.picture_list_content_tv_name);
- TextView sum=(TextView) convertView.findViewById(R.id.sum);
-
- //查出picturenum集合中的每个文件夹的图片数量
- String Picture=picun.get(position);
- int c=Integer.parseInt(Picture);
- final int picnum=Integer.parseInt(Picture);
-
-
- String string2=nums.get(position);
- //查找出第几个索引
- int a= Integer.parseInt(string2);
- final String string= fei.get(position);
- name =string;
- byte[] bs = (byte[]) picList.get(a).get(string);
-
- //设置图片信息
- nameText.setText(name);
- sum.setText("num:"+c);
-
- // 通过宽高设置,但如果 options.inSampleSize 的值越大则图像越模糊
- // BitmapFactory.Options options = new BitmapFactory.Options();
- // options.inSampleSize =5;//图片宽高都为原来的二分之一,即图片为原来的四分之一
- // options.inPreferredConfig = Bitmap.Config.RGB_565;
- // options.inPurgeable = true;
- // options.inInputShareable = true;
- // Bitmap bitmap = BitmapFactory.decodeFile(new String(bs,0,bs.length-1), options);
-
-
- //对图片进行内存溢出的处理
- BitmapFactory.Options options = new BitmapFactory.Options();
- options.inJustDecodeBounds = true;
- BitmapFactory.decodeFile(new String(bs,0,bs.length-1), options);
- int mWidth = options.outWidth;
- int mHeight = options.outHeight;
- int s = 1;
- while ((mWidth / s > itemw * 2 * zoom) || (mHeight / s > itemh * 2 * zoom)) {
- s *= 2;
- }
- options = new BitmapFactory.Options();
- options.inSampleSize = s;
- // options.inPreferredConfig = Config.ARGB_8888;
- options.inPreferredConfig = Bitmap.Config.RGB_565;
- Bitmap bitmap = BitmapFactory.decodeFile(new String(bs,0,bs.length-1), options);
-
-
-
- if (bitmap != null) {
- int h = bitmap.getHeight();
- int w = bitmap.getWidth();
-
- float ft = (float) ((float) w / (float) h);
- float fs = (float) ((float) itemw / (float) itemh);
-
- int neww = ft >= fs ? itemw * zoom : (int) (itemh * zoom * ft);
- int newh = ft >= fs ? (int) (itemw * zoom / ft) : itemh * zoom;
-
- float scaleWidth = ((float) neww) / w;
- float scaleHeight = ((float) newh) / h;
-
- Matrix matrix = new Matrix();
- matrix.postScale(scaleWidth, scaleHeight);
- bitmap = Bitmap.createBitmap(bitmap, 0, 0, w, h, matrix, true);
-
- }
- //设置图片
- // Bitmap bitmap = BitmapFactory.decodeFile(new String(bs,0,bs.length-1));
-
- image.setImageBitmap(bitmap);
- //设置标识符
- image.setTag(a);
- list.add(name);
-
- //为图片添加监听
- image.setOnClickListener(new OnClickListener() {
-
- @Override
- public void onClick(View v) {
- Intent intent = new Intent(MainActivity.this,LargeImageActivity.class);
- int id =Integer.parseInt(v.getTag().toString());
- intent.putExtra("id",id);
- intent.putExtra("list", list);
- intent.putExtra("person",myperson);
- //将每个文件夹的数量传递
- intent.putExtra("picnum",picnum);
- //将点击的第几个文件夹的名字传递过去
- intent.putExtra("string",string);
- intent.putExtra("position",position);
-
- startActivity(intent);
- }
- });
- return convertView;
- }
- }
- @Override
- public boolean onCreateOptionsMenu(Menu menu) {
- MenuInflater inflater=getMenuInflater();
- inflater.inflate(R.menu.caozuo, menu);
- return super.onCreateOptionsMenu(menu);
- }
- @Override
- public boolean onOptionsItemSelected(MenuItem item) {
- if (item.getItemId()==R.id.eqit) {
- AlertDialog.Builder builder=new AlertDialog.Builder(MainActivity.this);
- builder.setTitle("提示:");
- builder.setMessage("你确定要退出吗?");
- builder.setNegativeButton("取消", listener);
- builder.setPositiveButton("确定", listener);
- builder.show();
- }
- return super.onOptionsItemSelected(item);
- }
-
-
-
- DialogInterface.OnClickListener listener=new DialogInterface.OnClickListener() {
-
- @Override
- public void onClick(DialogInterface dialog, int which) {
- switch (which) {
-
- //确定按钮
- case AlertDialog.BUTTON_POSITIVE:
- MainActivity.this.finish();
- break;
- //取消按钮
- case AlertDialog.BUTTON_NEGATIVE:
-
- break;
-
- }
- }
- };
-
- @Override
- public boolean onKeyDown(int keyCode, KeyEvent event) {
- switch (keyCode) {
- case KeyEvent.KEYCODE_BACK:
- AlertDialog.Builder builder=new AlertDialog.Builder(MainActivity.this);
- builder.setTitle("提示:");
- builder.setMessage("你确定要退出吗?");
- builder.setNegativeButton("取消", listener);
- builder.setPositiveButton("确定", listener);
- builder.show();
- break;
-
- default:
- break;
- }
- return super.onKeyDown(keyCode, event);
- }
- }
复制代码
Pictrueees.java
- package com.example.di;
-
- import java.util.ArrayList;
- import java.util.List;
-
- import android.app.Activity;
- import android.app.AlertDialog;
- import android.content.Intent;
- import android.graphics.Bitmap;
- import android.graphics.BitmapFactory;
- import android.os.Bundle;
- import android.support.v4.view.PagerAdapter;
- import android.support.v4.view.ViewPager;
- import android.support.v4.view.ViewPager.OnPageChangeListener;
- import android.view.KeyEvent;
- import android.view.LayoutInflater;
- import android.view.Menu;
- import android.view.MenuInflater;
- import android.view.MenuItem;
- import android.view.View;
- import android.view.ViewGroup;
- import android.view.Window;
- import android.widget.ImageView;
- import android.widget.TextView;
- import android.widget.Toast;
-
- import com.example.image.ZoomImageView;
- import com.example.lei.MyPic;
-
- public class Pictrueees extends Activity {
-
-
- ZoomImageView imageView;
- MyViewpager mViewpager;
- ViewPager viewPager;
- List<String> chuanPic;
- private ImageView [] mImageViews;
- MyPic myPic;
- String stri;
- int positionsss;
- int c=0;
-
- /** 将每个标题读取出放入titless中*/
- List<String> titless=new ArrayList<String>();
- /** 将每张图片的大小读取出放入datass中*/
- List<String> datass=new ArrayList<String>();
-
- int zoom=3;
- private int itemh = 150;
- private int itemw = 150;
- int popopo;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- requestWindowFeature(Window.FEATURE_NO_TITLE);
- setContentView(R.layout.activity_pictrue);
-
- viewPager=(ViewPager) findViewById(R.id.viewpager);
-
-
- positionsss=getIntent().getIntExtra("position", positionsss);
-
- chuanPic=new ArrayList<String>();
- stri=getIntent().getStringExtra("stri");
- myPic=new MyPic();
- myPic=(MyPic) getIntent().getSerializableExtra("myPic");
- chuanPic=myPic.getChuanPic();
- titless=myPic.getTitless();
- datass=myPic.getDatass();
-
-
-
- int i=Integer.valueOf(chuanPic.size());
- mImageViews=new ImageView[i];
- // Toast.makeText(Pictrueees.this,""+positionsss,0).show();
- // Toast.makeText(Pictrueees.this,""+mImageViews.length+"==="+chuanPic.get(0), 0).show();
- mViewpager=new MyViewpager();
- viewPager.setAdapter(mViewpager);
- //标记图片的第几张
- viewPager.setCurrentItem(positionsss);
- popopo=positionsss;
- viewPager.setOnPageChangeListener(new OnPageChangeListener() {
-
- @Override
- public void onPageSelected(int arg0) {
-
- popopo=arg0;
- }
-
- @Override
- public void onPageScrolled(int arg0, float arg1, int arg2) {
- // TODO Auto-generated method stub
-
- }
-
- @Override
- public void onPageScrollStateChanged(int arg0) {
- // TODO Auto-generated method stub
-
- }
- });
-
- }
-
- class MyViewpager extends PagerAdapter{
-
- @Override
- public void destroyItem(ViewGroup container, int position, Object object) {
-
- container.removeView(mImageViews[position]);
- }
-
- @Override
- public Object instantiateItem(ViewGroup container, int position) {
- imageView=new ZoomImageView(Pictrueees.this);
- // Bitmap bm1 = BitmapFactory.decodeFile(chuanPic.get(position));
-
-
- //对图片进行内存溢出的处理
- BitmapFactory.Options options = new BitmapFactory.Options();
- options.inJustDecodeBounds = true;
- BitmapFactory.decodeFile(chuanPic.get(position), options);
- int mWidth = options.outWidth;
- int mHeight = options.outHeight;
- int s = 1;
- while ((mWidth / s > itemw * 2 * zoom) || (mHeight / s > itemh * 2 * zoom)) {
- s *= 2;
- }
- options = new BitmapFactory.Options();
- options.inSampleSize = s;
- options.inPreferredConfig = Bitmap.Config.RGB_565;
- // options.inPreferredConfig = Config.ARGB_8888;
- Bitmap bm11 = BitmapFactory.decodeFile(chuanPic.get(position), options);
-
-
-
- imageView.setImageBitmap(bm11);
- container.addView(imageView);
- mImageViews[position]=imageView;
- return imageView;
- }
- @Override
- public int getCount() {
- // TODO Auto-generated method stub
- return mImageViews.length;
- }
-
- @Override
- public boolean isViewFromObject(View arg0, Object arg1) {
-
- return arg0==arg1;
- }
- }
- @Override
- public boolean onKeyDown(int keyCode, KeyEvent event) {
- switch (keyCode) {
- case KeyEvent.KEYCODE_BACK:
- finish();
- break;
-
- default:
- break;
- }
- return super.onKeyDown(keyCode, event);
- }
- @Override
- public boolean onCreateOptionsMenu(Menu menu) {
- MenuInflater inflater=getMenuInflater();
- inflater.inflate(R.menu.tuxi, menu);
- return super.onCreateOptionsMenu(menu);
- }
- @Override
- public boolean onOptionsItemSelected(MenuItem item) {
- if (item.getItemId()==R.id.tuxii) {
-
- View view =LayoutInflater.from(Pictrueees.this).inflate(R.layout.xinxi,null);
- //获取图片缩略图
- ImageView image=(ImageView) view.findViewById(R.id.suotu);
- Bitmap bitmapss=BitmapFactory.decodeFile(chuanPic.get(popopo));
- image.setImageBitmap(bitmapss);
- //获取路径
- TextView textView=(TextView) view.findViewById(R.id.tupian);
- textView.setText("路径:"+chuanPic.get(popopo));
- //获取标题
- TextView titleView=(TextView) view.findViewById(R.id.title);
- titleView.setText("标题:"+titless.get(popopo));
- //获取日期
- TextView sizeView=(TextView) view.findViewById(R.id.size);
- sizeView.setText("日期"+datass.get(popopo));
- AlertDialog.Builder builder=new AlertDialog.Builder(Pictrueees.this);
- builder.setTitle("第"+(popopo+1)+"项"+"(共"+chuanPic.size()+"项)").
- setView(view).setNegativeButton("关闭",null);
- builder.show();
- }
- return super.onOptionsItemSelected(item);
- }
- }
复制代码
|
|