package com.kaixin.android.activity;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.util.TypedValue;
import android.view.LayoutInflater;
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;
import android.widget.RelativeLayout.LayoutParams;
import android.widget.TextView;
import com.kaixin.android.KXActivity;
import com.kaixin.android.R;
import com.kaixin.android.common.Constants;
import com.kaixin.android.utils.ImageUtil;
import com.kaixin.android.utils.MessageUtil;
import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
/**
* 用户手机文件夹具体图片显示类,多选图片类
*
* @author gyz
*
*/
public class AlbumActivity extends KXActivity {
private Button mBack;
private Button mAll;
private GridView mDisplay;
private TextView mCount;
private Button mDetermine;
private AlbumAdapter mAdapter;
private Context mContext;
private List<Map<String, String>> mList = new ArrayList<Map<String, String>>();// 存放当前文件夹中的图片的地址信息
private List<String> mSelect = new ArrayList<String>();// 存放当前用户选择的图片的编号
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.album_activity);
findViewById();
setListener();
init();
}
private void findViewById() {
mBack = (Button) findViewById(R.id.album_back);
mAll = (Button) findViewById(R.id.album_all);
mDisplay = (GridView) findViewById(R.id.album_display);
mCount = (TextView) findViewById(R.id.album_count);
mDetermine = (Button) findViewById(R.id.album_determine);
}
private void setListener() {
mBack.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// 关闭当前界面
finish();
}
});
mAll.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
if (mSelect.size() == Constants.SELECT_PHOTO_COUNT) {
// 全部选中时,点击为反选,所以清空
mSelect.clear();
} else if (mSelect.size() > 0) {
// 当已选中时,点击为全选,添加没选择中的
for (int i = 0; i < mList.size(); i++) {
if (mSelect.contains(String.valueOf(i))) {
continue;
}
if(mSelect.size() >= Constants.SELECT_PHOTO_COUNT){
MessageUtil.showMsg(mContext, "最多选择9张图片");
break;
}
mSelect.add(String.valueOf(i));
}
} else {
// 没选中,点击为全选,添加所有
for (int i = 0; i < mList.size(); i++) {
if(mSelect.size() >= Constants.SELECT_PHOTO_COUNT){
MessageUtil.showMsg(mContext, "最多选择9张图片");
break;
}
mSelect.add(String.valueOf(i));
}
}
// 如果全部选中则显示反选,否则显示全选
if (mSelect.size() == Constants.SELECT_PHOTO_COUNT) {
mAll.setText("反选");
} else {
mAll.setText("全选");
}
// 更新界面显示数量内容
initCount(mSelect.size());
// 刷新界面
mAdapter.notifyDataSetChanged();
}
});
mDisplay.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
// 查看当前点击的条目是否已经选中,选中则移出,没选中则删除
if (mSelect.contains(String.valueOf(arg2))) {
mSelect.remove(String.valueOf(arg2));
} else {
if(mSelect.size() >= Constants.SELECT_PHOTO_COUNT){
MessageUtil.showMsg(mContext, "最多选择9张图片");
return;
}
mSelect.add(String.valueOf(arg2));
}
// 如果全部选中则显示反选,否则显示全选
if (mSelect.size() == Constants.SELECT_PHOTO_COUNT) {
mAll.setText("反选");
} else {
mAll.setText("全选");
}
// 更新界面显示数量内容
initCount(mSelect.size());
// 刷新界面
mAdapter.notifyDataSetChanged();
}
});
mDetermine.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Intent intent = new Intent();
// 判断选中的数量,如果大于1个,跳转到上传图片界面,否则调转到图片编辑界面
if (mSelect.size() > 1) {
// 添加选择的图片列表
for(int i=0; i < mSelect.size(); i++){
mKXApplication.mAlbumList.add(mList.get(Integer.parseInt(mSelect.get(i))));
}
// 跳转到上传图片界面
intent.setClass(AlbumActivity.this,
PhotoShareActivity.class);
} else {
// 跳转到图片编辑界面
intent.setClass(AlbumActivity.this,
ImageFilterActivity.class);
// 传递当前选中的图片的地址
intent.putExtra(
"path",mList.get(Integer.parseInt(mSelect.get(0))).get(
"image_path"));
// 关闭手机图片列表的显示界面
PhoneAlbumActivity.mInstance.finish();
}
// 开始跳转界面
startActivity(intent);
}
});
}
private void init() {
mContext = this;
// 获取当前文件夹的路径
String path = getIntent().getStringExtra("path");
// 根据文件夹的路径获取文件夹里的图片信息
mList = mKXApplication.mPhoneAlbum.get(path);
// 更新界面显示数量内容
initCount(mSelect.size());
// 初始化适配器
mAdapter = new AlbumAdapter();
// 添加适配器
mDisplay.setAdapter(mAdapter);
}
/**
* 更新界面显示数量内容
*
* @param count
* 选中的图片数量
*/
private void initCount(int count) {
// 更新选择的图片数量,如果数量大于0,设置确定按钮为可用,反之不可用并修改字体颜色
if (count > 0) {
mCount.setText("已选择" + count + "张");
mCount.setTextColor(0xFFFFFFFF);
mDetermine.setTextColor(0xFFFFFFFF);
mDetermine.setEnabled(true);
mDetermine.setClickable(true);
} else {
mCount.setText("已选择0张");
mCount.setTextColor(0xFF999999);
mDetermine.setTextColor(0xFF999999);
mDetermine.setEnabled(false);
mDetermine.setClickable(false);
}
}
private class AlbumAdapter extends BaseAdapter {
public int getCount() {
return mList.size();
}
public Object getItem(int position) {
return null;
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
if (convertView == null) {
convertView = LayoutInflater.from(AlbumActivity.this).inflate(
R.layout.album_activity_item, null);
holder = new ViewHolder();
holder.photo = (ImageView) convertView
.findViewById(R.id.album_item_photo);
holder.select = (ImageView) convertView
.findViewById(R.id.album_item_select);
// padding大小为40dip,计算px值
int padding = (int) TypedValue.applyDimension(
TypedValue.COMPLEX_UNIT_DIP, 40, AlbumActivity.this
.getResources().getDisplayMetrics());
// 设置显示的图片大小为屏幕宽度1/4大小
LayoutParams params = new LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
params.width = (mScreenWidth - padding) / 4;
params.height = (mScreenWidth - padding) / 4;
holder.photo.setLayoutParams(params);
holder.select.setLayoutParams(params);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
// 添加图片
ImageLoader.getInstance().displayImage("file:///" + mList.get(position).get("image_path"), holder.photo, ImageUtil.getDiskOption());
/*holder.photo.setImageBitmap(PhotoUtil.getImageThumbnail(
mList.get(position).get("image_path"), 70, 70));*/
// 查看是否选中,选中则显示选中效果
if (mSelect.contains(String.valueOf(position))) {
holder.select.setVisibility(View.VISIBLE);
} else {
holder.select.setVisibility(View.GONE);
}
return convertView;
}
class ViewHolder {
ImageView photo;
ImageView select;
}
}
}