首页>代码>Android客户端高仿开心网ui实例源码>/KaiXin/src/com/kaixin/android/activity/AlbumActivity.java
package com.kaixin.android.activity;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

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.utils.PhotoUtil;

/**
 * 用户手机文件夹具体图片显示类
 * 
 * @author rendongwei
 * 
 */
public class AlbumActivity extends KXActivity {
	private Button mBack;
	private Button mAll;
	private GridView mDisplay;
	private TextView mCount;
	private Button mDetermine;
	private AlbumAdapter mAdapter;

	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() == mList.size()) {
					// 全部选中时,点击为反选,所以清空
					mSelect.clear();
				} else if (mSelect.size() > 0) {
					// 当已选中时,点击为全选,添加没选择中的
					for (int i = 0; i < mList.size(); i++) {
						if (mSelect.contains(String.valueOf(i))) {
							continue;
						}
						mSelect.add(String.valueOf(i));
					}
				} else {
					// 没选中,点击为全选,添加所有
					for (int i = 0; i < mList.size(); i++) {
						mSelect.add(String.valueOf(i));
					}
				}
				// 如果全部选中则显示反选,否则显示全选
				if (mSelect.size() == mList.size()) {
					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 {
					mSelect.add(String.valueOf(arg2));
				}
				// 如果全部选中则显示反选,否则显示全选
				if (mSelect.size() == mList.size()) {
					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) {
					// 添加选择的图片列表
					mKXApplication.mAlbumList.addAll(mList);
					// 跳转到上传图片界面
					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);
				// 关闭当前界面
				finish();

			}
		});
	}

	private void init() {
		// 获取当前文件夹的路径
		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();
			}
			// 添加图片
			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;
		}
	}
}
最近下载更多
skipple3  LV39 2022年9月8日
xkyssb  LV12 2021年1月12日
1294862613  LV11 2020年12月29日
歌颂者  LV5 2020年12月17日
ddman9009  LV25 2020年9月7日
cpemy_abc  LV10 2020年6月9日
sianhxyeiangu  LV14 2020年6月3日
axuhongbo1  LV4 2020年5月27日
rain112  LV31 2020年4月1日
戎马书生  LV15 2019年12月26日
最近浏览更多
anjuw521  LV1 7月10日
2636804923  LV6 6月19日
AIWU1234  LV2 6月7日
求学的熊猫  LV11 5月20日
pangzhihui  LV14 4月25日
wxb666  LV3 3月13日
学习112  LV2 2023年12月21日
陈小小222 2023年7月15日
暂无贡献等级
yyyyyyzh  LV8 2023年6月11日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友