前段时间整理项目,把图片选择器分出来整理成了moudle,现分享出来供大家参考。
首先上图
首先要将图片宽高一致
- public class SquareLayout extends RelativeLayout {
- public SquareLayout(Context context, AttributeSet attrs, int defStyle) {
- super(context, attrs, defStyle);
- }
-
- public SquareLayout(Context context, AttributeSet attrs) {
- super(context, attrs);
- }
-
- public SquareLayout(Context context) {
- super(context);
- }
-
- @SuppressWarnings("unused")
- @Override
- protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
- setMeasuredDimension(getDefaultSize(0, widthMeasureSpec), getDefaultSize(0, heightMeasureSpec));
-
- // Children are just made to fill our space.
- int childWidthSize = getMeasuredWidth();
- int childHeightSize = getMeasuredHeight();
- //高度和宽度一样
- heightMeasureSpec = widthMeasureSpec = MeasureSpec.makeMeasureSpec(childWidthSize, MeasureSpec.EXACTLY);
- super.onMeasure(widthMeasureSpec, heightMeasureSpec);
- }
- }
在以上自定义布局中定义图片大小
导入base.jar,实现TrustyGridSimpleAdapter中getheaderView方法来添加时间戳
- public class ImageAdapter extends BaseAdapter implements TrustyGridSimpleAdapter {
- private Context mContext;
-
- private ArrayList<ImageItem> fileInfo;
- private ArrayList<ImageItem> selectedDataList;
- private DisplayMetrics dm;
-
- public ImageAdapter(Context mContext, ArrayList<ImageItem> fileInfo, ArrayList<ImageItem> selectedDataList) {
- this.mContext = mContext;
- this.fileInfo = fileInfo;
-
- this.selectedDataList = selectedDataList;
- dm = new DisplayMetrics();
- ((Activity) mContext).getWindowManager().getDefaultDisplay()
- .getMetrics(dm);
- }
-
- public void setData(ArrayList<ImageItem> fileInfo) {
- this.fileInfo = fileInfo;
- }
-
- @Override
- public int getCount() {
- int count = 0;
- if (fileInfo != null && fileInfo.size() > 0) {
- count = fileInfo.size();
- }
- return count;
- }
-
- @Override
- public Object getItem(int position) {
- return position;
- }
-
- @Override
- public long getItemId(int position) {
- return position;
- }
-
- class ViewHolder {
- ImageView ivImage;
- public CheckBox isSelect;
- }
-
- @Override
- public View getView(final int position, View convertView, ViewGroup parent) {
- ViewHolder viewHolder = null;
- if (convertView == null) {
- viewHolder = new ViewHolder();
- convertView = View.inflate(mContext, R.layout.item_image, null);
-
- viewHolder.ivImage = (ImageView) convertView.findViewById(R.id.iv_image);
- viewHolder.isSelect = (CheckBox) convertView
- .findViewById(R.id.isSelect);
- convertView.setTag(viewHolder);
- } else {
- viewHolder = (ViewHolder) convertView.getTag();
- }
-
- final ImageItem item = fileInfo.get(position);
- if (item.isCamera) {
- viewHolder.isSelect.setVisibility(View.GONE);
- // ImageLoader.getInstance().displayImage("drawable://"+R.drawable.ic_camera,
- // holder.img);
- viewHolder.ivImage.setImageResource(R.drawable.ic_camera);
- convertView.setOnClickListener(new View.OnClickListener() {
-
- @Override
- public void onClick(View v) {
- // TODO Auto-generated method stub
-
- mOnItemClickListener.onCameraClick();
- }
- });
- return convertView;
- } else {
-
- viewHolder.isSelect.setVisibility(View.VISIBLE);
- }
-
- if (fileInfo != null && fileInfo.size() > 0) {
-
- File file = new File(fileInfo.get(position).imagePath);
- Glide.with(mContext).load(file)
- .into(viewHolder.ivImage);
- }
-
-
- /*for (int i = 0; i < selectedDataList.size(); i++) {
- if (selectedDataList.get(i).getImagePath().equals(fileInfo.get(position).getImagePath())) {
- viewHolder.isSelect.setChecked(true);
- } else {
-
- }
- }*/
-
- final CheckBox isSelectBox = viewHolder.isSelect;
-
- viewHolder.isSelect.setOnClickListener(new View.OnClickListener() {
-
- @Override
- public void onClick(View v) {
- // TODO Auto-generated method stub
- if (fileInfo != null && mOnItemClickListener != null
- && position < fileInfo.size()) {
- mOnItemClickListener.onSelectClick(position,
- isSelectBox.isChecked(), isSelectBox);
- }
- }
- });
-
- convertView.setOnClickListener(new View.OnClickListener() {
-
- @Override
- public void onClick(View v) {
- // TODO Auto-generated method stub
- if (fileInfo != null && mOnItemClickListener != null
- && position < fileInfo.size()) {
- mOnItemClickListener.onItemClick(position,
- isSelectBox.isChecked(), isSelectBox, fileInfo.get(position));
- }
- }
- });
-
-
- return convertView;
- }
-
- class HeaderViewHolder {
- public TextView tvTimeHeader;
- }
-
- @Override
- public View getHeaderView(final int position, View convertView, ViewGroup viewGroup) {
-
- HeaderViewHolder mHeadViewHolder = null;
- if (convertView == null) {
- mHeadViewHolder = new HeaderViewHolder();
- convertView = View.inflate(mContext, R.layout.item_time_header, null);
-
- mHeadViewHolder.tvTimeHeader = (TextView) convertView.findViewById(R.id.tv_time_header);
-
- convertView.setTag(mHeadViewHolder);
- } else {
- mHeadViewHolder = (HeaderViewHolder) convertView.getTag();
- }
-
- if (position == 0) {
- mHeadViewHolder.tvTimeHeader.setText("拍照");
- } else {
- mHeadViewHolder.tvTimeHeader.setText(fileInfo.get(position).getDate());
- }
-
- return convertView;
- }
-
- @Override
- public long getHeaderId(int i) {
- // File file = new File(fileInfo.get(i).getFilePath());
- return getTimeId(fileInfo.get(i).getDate());
- // return getTimeId(strToDateLong(file.lastModified()));
- }
-
- public long getTimeId(String date) {
- SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日");
- Date mDate = null;
-
- try {
- mDate = sdf.parse(date);
- } catch (ParseException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- return mDate.getTime();
- }
-
- public String strToDateLong(long time) {
- Date date = new Date(time);
- SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日");
- return sdf.format(date);
- }
-
- private OnItemClickListener mOnItemClickListener;
-
- public void setOnItemClickListener(OnItemClickListener l) {
- mOnItemClickListener = l;
- }
-
- public interface OnItemClickListener {
- public void onSelectClick(int position, boolean isChecked,
- CheckBox checkBox);
-
- public void onItemClick(int position, boolean isChecked,
- CheckBox checkBox, ImageItem imageItem);
-
- public void onCameraClick();
- }
-
- }