1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > 自定义相册 九宫格显示图片

自定义相册 九宫格显示图片

时间:2023-01-11 00:29:44

相关推荐

自定义相册 九宫格显示图片

一 自定义相册

结合Glide图片库,加载显示本地图片,并可以实现单选,多选,预览功能。特点

加载最近新增图片,GridView显示分文件夹选择图片支持单选,多选(最大9张)支持大图预览

以库的形式保存,实际项目中导入PhotoSelector库使用。

二 九宫格显示图片

九宫格形式显示图片点击预览大图

GirdView 设置

1<com.zc.baselib.view.NoScrollGridView 2 android:id="@+id/gv_photo" 3 android:layout_width="match_parent" 4 android:layout_height="wrap_content" 5 android:layout_gravity="center" 6 android:layout_marginTop="@dimen/margin_min" 7 android:background="@null" 8 android:clickable="false" 9 android:listSelector="@android:color/transparent"10 android:verticalSpacing="@dimen/margin_min_a"11 android:numColumns="3"/>

自定义PhotoGridAdapter数据源

1 public class PhotoGridAdapter extends CommonListAdapter<ImageModel> { 2 3private int itemWidth; 4private int gridViewWidth; 5private int horizentalNum = 3; 6private AbsListView.LayoutParams itemLayoutParams; 7 8public PhotoGridAdapter(Context context, List<ImageModel> mDatas) { 9 super(context, mDatas);10}11 12public PhotoGridAdapter(Context context, List<ImageModel> mDatas, int width) {13 super(context, mDatas);14 this.gridViewWidth = width;15 setItemWidth();16}17 18/**19* 设置每一个Item的宽高 = (GirdView宽度 - 行间距) / 每行显示个数20*/21public void setItemWidth() {22 int horizentalSpace = mContext.getResources().getDimensionPixelSize(com.zc.photoselector.R.dimen.gridview_item_horizontalSpacing_4);23 this.itemWidth = (gridViewWidth - (horizentalSpace * (horizentalNum - 1))) / horizentalNum;24 // this.itemWidth = viewWidth / horizentalNum;25 this.itemLayoutParams = new AbsListView.LayoutParams(itemWidth, itemWidth);26}27 28 29@Override30public View getView(final int position, View view, ViewGroup viewGroup) {31 if (view == null) {32 view = View.inflate(mContext, R.layout.item_photo_grid, null);33 view.setLayoutParams(itemLayoutParams);34 }35 36 ImageView img_photo = ViewHolder.get(view, R.id.img_photo);37 ImageModel imageModel = mDatas.get(position);38 Glide.with(mContext).load(imageModel.getOriginalPath())39 .dontAnimate()40 .centerCrop()41 .override(300, 300)42 .placeholder(com.zc.photoselector.R.drawable.ic_loading_white)43 .error(com.zc.photoselector.R.drawable.mis_default_error)44 .into(img_photo);45 46 //查看大图47 img_photo.setOnClickListener(new View.OnClickListener() {48 @Override49 public void onClick(View view) {50 Intent intent = new Intent(mContext, PhotoPreviewActivity.class);51 intent.putExtra("index", position);52 intent.putExtra("images", (ArrayList) mDatas);53 mContext.startActivity(intent);54 }55 });56 return view;57}58 59 }

item_photo_grid 布局文件

1 <RelativeLayout xmlns:android="/apk/res/android" 2android:layout_width="match_parent" 3android:layout_height="match_parent"> 4 5<ImageView 6 android:id="@+id/img_photo" 7 android:layout_width="fill_parent" 8 android:layout_height="fill_parent" 9 android:layout_gravity="center"10 android:scaleType="centerCrop" />11 12 </RelativeLayout>

activity引用

1 gv_photo = (NoScrollGridView) findViewById(R.id.gv_photo);2 list = new ArrayList<>();3 gv_photo.post(new Runnable() {4 @Override5 public void run() {6 adapter = new PhotoGridAdapter(ServiceActivity.this, list, gv_photo.getWidth());7 gv_photo.setAdapter(adapter);8 }9 });

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。