Android用GridView排列相册,实现微信选择图片效果
来源:互联网 发布:mac如何下载魔兽世界 编辑:程序博客网 时间:2024/04/30 06:30
转自http://blog.csdn.net/xiaoyuan511/article/details/39317313
许多项目都必须用到上传图片的功能,有了图片会更加精彩,最近我的项目也需要选择图片的功能,所以把我写的代码共享出来,也算是笔记吧!好,废话少说,下面看看效果图:
效果还可以,代码主要就是两个Activity剩下的都是一些辅助类,适配器什么的,首先先给大家看一下这个界面的代码
- package com.example.choosephotos;
- import java.io.Serializable;
- import java.util.List;
- import android.app.Activity;
- import android.content.Intent;
- import android.graphics.Bitmap;
- import android.graphics.BitmapFactory;
- import android.os.Bundle;
- import android.view.View;
- import android.widget.AdapterView;
- import android.widget.AdapterView.OnItemClickListener;
- import android.widget.GridView;
- public class ChoosePhotosActivity extends Activity {
- List<ImageBucket> dataList;
- GridView gridView;
- ImageBucketAdapter adapter;// 自定义的适配器
- AlbumHelper helper;
- public static final String EXTRA_IMAGE_LIST = "imagelist";
- public static Bitmap bimap;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- // TODO Auto-generated method stub
- super.onCreate(savedInstanceState);
- setContentView(R.layout.act_image_bucket);
- helper = AlbumHelper.getHelper();
- helper.init(getApplicationContext());
- initData();
- initView();
- }
- /**
- * 初始化数据
- */
- private void initData() {
- dataList = helper.getImagesBucketList(false);
- bimap=BitmapFactory.decodeResource(
- getResources(),
- R.drawable.icon_addpic_unfocused);
- }
- /**
- * 初始化view视图
- */
- private void initView() {
- gridView = (GridView) findViewById(R.id.gridview);
- adapter = new ImageBucketAdapter(ChoosePhotosActivity.this, dataList);
- gridView.setAdapter(adapter);
- gridView.setOnItemClickListener(new OnItemClickListener() {
- @Override
- public void onItemClick(AdapterView<?> parent, View view,
- int position, long id) {
- Intent intent = new Intent(ChoosePhotosActivity.this,
- ImageGridActivity.class);
- intent.putExtra(ChoosePhotosActivity.EXTRA_IMAGE_LIST,
- (Serializable) dataList.get(position).imageList);
- startActivityForResult(intent, 100);
- finish();
- }
- });
- }
- @Override
- protected void onActivityResult(int requestCode, int resultCode, Intent data) {
- super.onActivityResult(requestCode, resultCode, data);
- if(resultCode!=Activity.RESULT_OK){
- return;
- }
- switch (requestCode) {
- case 100:
- setResult(Activity.RESULT_OK);
- finish();
- break;
- default:
- break;
- }
- }
- }
在大家看看这个页面的代码:
- package com.example.choosephotos;
- import java.io.IOException;
- import java.util.ArrayList;
- import java.util.Collection;
- import java.util.Iterator;
- import java.util.List;
- import com.example.choosephotos.ImageGridAdapter.TextCallback;
- import android.app.Activity;
- import android.content.Intent;
- import android.graphics.Bitmap;
- import android.graphics.BitmapFactory;
- import android.graphics.Color;
- import android.graphics.drawable.ColorDrawable;
- import android.os.Bundle;
- import android.os.Handler;
- import android.os.Message;
- import android.view.View;
- import android.view.View.OnClickListener;
- import android.widget.AdapterView;
- import android.widget.Button;
- import android.widget.ImageView;
- import android.widget.TextView;
- import android.widget.Toast;
- import android.widget.AdapterView.OnItemClickListener;
- import android.widget.GridView;
- public class ImageGridActivity extends Activity {
- public static final String EXTRA_IMAGE_LIST = "imagelist";
- List<ImageItem> dataList;
- GridView gridView;
- ImageGridAdapter adapter;
- AlbumHelper helper;
- Button bt;
- Handler mHandler = new Handler() {
- @Override
- public void handleMessage(Message msg) {
- switch (msg.what) {
- case 0:
- Toast.makeText(ImageGridActivity.this, "最多选择9张图片", 400).show();
- break;
- default:
- break;
- }
- }
- };
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.act_image_grid);
- helper = AlbumHelper.getHelper();
- helper.init(getApplicationContext());
- dataList = (List<ImageItem>) getIntent().getSerializableExtra(
- EXTRA_IMAGE_LIST);
- initView();
- bt = (Button) findViewById(R.id.bt);
- bt.setOnClickListener(new OnClickListener() {
- public void onClick(View v) {
- ArrayList<String> list = new ArrayList<String>();
- Collection<String> c = adapter.map.values();
- Iterator<String> it = c.iterator();
- for (; it.hasNext();) {
- list.add(it.next());
- }
- if (Bimp.act_bool) {
- setResult(Activity.RESULT_OK);
- Bimp.act_bool = false;
- }
- for (int i = 0; i < list.size(); i++) {
- if (Bimp.bmp.size() < 9) {
- try {
- Bitmap bm=Bimp.revitionImageSize(list.get(i));
- Bimp.bmp.add(bm);
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- }
- finish();
- }
- });
- }
- private void initView() {
- gridView = (GridView) findViewById(R.id.gridview);
- gridView.setSelector(new ColorDrawable(Color.TRANSPARENT));
- adapter = new ImageGridAdapter(ImageGridActivity.this, dataList,
- mHandler);
- gridView.setAdapter(adapter);
- adapter.setTextCallback(new TextCallback() {
- public void onListen(int count) {
- bt.setText("完成" + "(" + count + ")");
- }
- });
- gridView.setOnItemClickListener(new OnItemClickListener() {
- @Override
- public void onItemClick(AdapterView<?> parent, View view,
- int position, long id) {
- adapter.notifyDataSetChanged();
- }
- });
- }
- }
这里我们判读Bimp.bmp的大小,只能让他选择9张
好了,效果实现完了,下面是源码的下载地址:
对了别忘记加权限:
- <uses-feature android:name="android.hardware.camera" />
- <uses-feature android:name="android.hardware.camera.autofocus" />
- <uses-permission android:name="android.permission.CAMERA" />
- <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
源码下载
0 0
- Android用GridView排列相册,实现微信选择图片效果
- Android用GridView排列相册,实现微信选择图片效果
- Android用GridView排列相册,实现微信选择图片效果
- Android百日程序:GridView实现相册效果
- Android 实现从相册选择图片,拍照选择图片
- android 选择相册拍照图片 仿gridview九宫格 recycleview九宫格图片(可拖拽)
- ANDROID GRIDVIEW仿微信图片多选功能_显示本地相册图片多选效果
- Android 手机相册图片选择
- Android 从相册选择图片
- android 选择图片 相册选择 马上拍照
- Android 选择图片 相册选择 马上拍照
- android 相册选择图片 图片的压缩
- 相册图片浏览器(模仿path),效果类似微信朋友圈,效果有优化。
- Android 模仿微信,从相册选取多张图片
- iOS-截屏,从相册选择图片,制作磨砂效果图片
- Android MaskImage 微信发送图片效果
- Android开发-优雅的实现动态图片排版(类似微信图片展示效果)
- 图片播放(相册效果) - CSS实现
- 黑马训练营--IOS学习---OC语言学习总结2
- 黑马训练营--IOS学习---OC语言学习总结3
- Cloudsuite WebServing deployement
- 一个应届生的2014年总结
- xUtils简介
- Android用GridView排列相册,实现微信选择图片效果
- Android EditText监听小数点让用户只能输入小数点后两位
- 看看我们的世界,有意思
- Eclipse 注释模板
- Factorization Machines 学习笔记(一)预测任务
- open-iscsi源码分析-iscsid(一)
- TortoiseSVN文件夹及文件图标不显示解决方法
- 面向对象--构造器
- java统计字符串中的字符重复的次数和和出现次数 实例(输入字符串)