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. IOS 2D游戏开发框架 SpriteKit--&gt;续(完善角色功能)
  2. List拆分成多个集合
  3. iOS-----用LLDB调试,让移动开发更简单(二)
  4. Android 短信验证码平台
  5. 【WP8】扩展CM的WindowManager
  6. flash recovery area配置
  7. [MySQL-1] mysql error 1101 blob/text column can&#39;t have a default value
  8. Mysql show Status参数详解
  9. 8_Times_Tables
  10. android EditText与TextView几个常用的属性
  11. java基础之继承(二)
  12. 【NOIP2016】蚯蚓(队列,单调性)
  13. Java中ArrayList学习笔记
  14. Assets.car 解压工具 cartool 使用报错 segmentation fault cartool 解决方案
  15. [转]C#通过委托更新UI(异步加载)
  16. mongoDB 文档操作_改
  17. 海思编译链编译出现__aeabi_unwind_cpp_pr1重定义怎么回事
  18. Mybatis面试题整理(超详细)
  19. 使用requests库提交multipart/form-data 格式的请求
  20. [转载]使用 NuGet 管理项目库

热门文章

  1. 三元运算+lambda表达式
  2. JS编码,解码. asp.net(C#)对应解码,编码
  3. xcode6中如何添加pch文件
  4. 测试V模型
  5. 使用generator自动生成mybatis model、mapper.xml、mapper等(转)
  6. 关于Xcode调试的帖子,感觉不错,转来看看
  7. poj3667 线段树 区间合并
  8. (转)Ratchet教程:Buttons组件
  9. Cobub Razor
  10. hdoj-2021