MainActivity.class

package com.example.imagedemotext;import java.io.ByteArrayOutputStream;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.InputStream;import java.util.ArrayList;import java.util.List;import android.app.Activity;import android.content.ContentResolver;import android.content.Intent;import android.database.Cursor;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.net.Uri;import android.os.Bundle;import android.provider.MediaStore.Images.Thumbnails;import android.view.View;import android.view.View.OnClickListener;import android.view.ViewGroup;import android.widget.AdapterView;import android.widget.AdapterView.OnItemClickListener;import android.widget.BaseAdapter;import android.widget.Button;import android.widget.GridView;import android.widget.ImageView;public class MainActivity extends Activity {    Button btn_start;    GridView gridview;        @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        btn_start = (Button) findViewById(R.id.btn_start);        gridview = (GridView) findViewById(R.id.gridview);        adapter = new Myadapter();        iniLisner();        inidata();    }    private void refreshAdapter(){        if(list == null){            list = new ArrayList<String>();        }        if(adapter == null){            adapter = new Myadapter();        }        if(list.size() == ON){            list.remove(list.size() - 1);        }        adapter.notifyDataSetChanged();    }    private final int ON = 5;  //允许的图片数量 + 1    private void inidata() {        if(list == null){            list = new ArrayList<String>();            list.add("a");  //添加默认图片          }        gridview.setAdapter(adapter);        gridview.setOnItemClickListener(new OnItemClickListener() {            @Override            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {                if(list.get(position).equals("a")){                    setClick();                }            }        });                refreshAdapter();    }        Myadapter adapter;    class Myadapter extends BaseAdapter{        @Override        public int getCount() {return list.size();}        @Override        public Object getItem(int position) {return null;}        @Override        public long getItemId(int position) {return 0;}        @Override        public View getView(int position, View convertView, ViewGroup parent) {            ViewHolder vh = null;            if(convertView == null){                convertView = View.inflate(getApplicationContext(), R.layout.item, null);                vh = new ViewHolder();                vh.iamge = (ImageView) convertView.findViewById(R.id.image);                convertView.setTag(vh);            }else {                vh = (ViewHolder) convertView.getTag();            }            if(list.get(position).equals("a")){  //添加默认图片                  vh.iamge.setImageResource(R.drawable.ic_launcher);            }else {                Bitmap loacalBitmap = getLoacalBitmap(list.get(position));                if(loacalBitmap != null){                    vh.iamge.setImageBitmap(loacalBitmap);                }            }            return convertView;        }            }    class ViewHolder {        ImageView iamge;    }        private void iniLisner() {        if(btn_start != null){            btn_start.setOnClickListener(new OnClickListener() {                                @Override                public void onClick(View v) {                    setClick();                }            });                    }            }        private void setClick(){        Intent getImage = new Intent(Intent.ACTION_GET_CONTENT);        getImage.addCategory(Intent.CATEGORY_OPENABLE);        getImage.setType("image/jpeg");        startActivityForResult(getImage, 0);            }    private byte[] mContent;    private List<String> list;    @Override    protected void onActivityResult(int requestCode, int resultCode, Intent data) {        super.onActivityResult(requestCode, resultCode, data);        ContentResolver resolver = getContentResolver();        if(data == null){            return;        }        if (requestCode == 0) {            try {                Uri originalUri = data.getData();                mContent = readStream(resolver.openInputStream(Uri.parse(originalUri.toString())));                String path = originalUri.toString();                ContentResolver testcr = getContentResolver();                Cursor cur = testcr.query(originalUri, null, null, null, null);                if(list.size() == ON){                    removeItem();                    refreshAdapter();                    return;                }                removeItem();                for (cur.moveToFirst(); !cur.isAfterLast(); cur.moveToNext()) {                    int dataColumn = cur.getColumnIndex(Thumbnails.DATA);                    String image_path = cur.getString(dataColumn);                    list.add(image_path);                }                list.add("a");                refreshAdapter();                            } catch (Exception e) {                System.out.println(e.getMessage());            }        }                     }    private void removeItem() {        if(list.size() -1 != ON){            if(list.size() != 0){  //删除默认图片                list.remove(list.size() - 1);            }        }            }    public static byte[] readStream(InputStream inStream) throws Exception {        byte[] buffer = new byte[1024];        int len = -1;        ByteArrayOutputStream outStream = new ByteArrayOutputStream();        while ((len = inStream.read(buffer)) != -1) {            outStream.write(buffer, 0, len);        }        byte[] data = outStream.toByteArray();        outStream.close();        inStream.close();        return data;    }    public static Bitmap getLoacalBitmap(String url) {         try {              FileInputStream fis = new FileInputStream(url);              return BitmapFactory.decodeStream(fis);         } catch (FileNotFoundException e) {              e.printStackTrace();              return null;         }    }}

activity_main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical"    android:paddingBottom="@dimen/activity_vertical_margin"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"    tools:context=".MainActivity" >    <TextView        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:text="点击按钮选择一个图片后会显示在下面的GridView" />    <Button        android:id="@+id/btn_start"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:text="获取图片" />    <View        android:layout_width="match_parent"        android:layout_height="9dp"        android:background="#a0000000" />    <GridView        android:id="@+id/gridview"        android:layout_width="match_parent"        android:layout_height="match_parent" >    </GridView></LinearLayout>

item.xml

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:orientation="vertical" >    <ImageView        android:id="@+id/image"        android:layout_width="40dp"        android:layout_height="40dp" /></LinearLayout>

更多相关文章

  1. 自定义HttpURLConnection工具类
  2. CirleDrawImage圆角图片
  3. android图片异步加载到本地
  4. Android(安卓)获取本地图片
  5. android BitmapUtils
  6. Layer_list(层叠图片)
  7. 添加轮播图圆点
  8. 三级缓存图片类
  9. 84 Android(安卓)Hnadler 封装下载图片工具类

随机推荐

  1. 个人知我见-如何成为一名android开发者?
  2. iOS开发-Objective-C与JavaScript交互
  3. Android(安卓)Service 通知Activity更新
  4. Router—一个高效,使用方便,基于动态代理实
  5. [Unity2d系列教程] 003.Unity如何调用and
  6. Android中application取值为空
  7. android音频裁剪(2)——Wav裁剪
  8. Android中View的绘制过程 onMeasure方法
  9. 使用ant优化android项目编译速度,提高工作
  10. view绘制流程些许心得