2025年3月21日 星期五 甲辰(龙)年 月廿 设为首页 加入收藏
rss
您当前的位置:首页 > 计算机 > 编程开发 > 安卓(android)开发

带时间轴的图片选择器

时间:04-02来源:作者:点击数:48

前段时间整理项目,把图片选择器分出来整理成了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();
  • }
  • }
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门