Android(安卓)添加多张图片。
16lz
2022-07-23
先看效果图。
直接上代码。主要是Adapter这边。
public class GvAdapter extends BaseAdapter{ private Context context; private int mMaxPosition;//根据这个list.size+1 来进行判断 private List list; public GvAdapter(Context context, List list) { this.context = context; this.list = list; } @Override public int getCount() { mMaxPosition=list.size()+1; return mMaxPosition; } //根据情况可以设置是否需要。。 public int getMaxPosition(){ return mMaxPosition; } @Override public Object getItem(int position) { return list.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(final int position, View v, ViewGroup parent) { ViewHolder vh=null; if (v==null){ vh=new ViewHolder(); v= LayoutInflater.from(context).inflate(R.layout.item_gd,parent,false); vh.img= (ImageView) v.findViewById(R.id.img); vh.demimg= (ImageView) v.findViewById(R.id.delimg); v.setTag(vh); }else{ vh= (ViewHolder) v.getTag(); } if (position==mMaxPosition-1){ //说明要显示 Glide.with(context).load(R.drawable.id_photo).dontAnimate() .centerCrop().into(vh.img); vh.img.setVisibility(View.VISIBLE); vh.demimg.setVisibility(View.GONE); if (position==6&&mMaxPosition==7){//设置最大6个。那么达到最大,就隐藏。// vh.img.setImageResource(R.drawable.id_photo); vh.img.setVisibility(View.GONE); } }else{//设置图片。 vh.demimg.setVisibility(View.VISIBLE); Glide.with(context).load(list.get(position)).into(vh.img);//设置 } //删除 vh.demimg.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { list.remove(position); notifyDataSetChanged(); } }); return v; } public class ViewHolder{ public ImageView img,demimg; }
//这里引用了一个很好用的相册框架
//相册 compile 'com.linchaolong.android:imagepicker:1.2'//加载 compile 'com.github.bumptech.glide:glide:3.8.0'
public class MainActivity extends AppCompatActivity { private GridView gridView; private GvAdapter adapter; private List list; ImagePicker imagePicker ; String path; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); gridView = (GridView) findViewById(R.id.grid_view); initView(); } private void initView() { imagePicker = new ImagePicker(); // 设置标题 imagePicker.setTitle("设置头像"); // 设置是否裁剪图片 imagePicker.setCropImage(true); list = new ArrayList<>(); adapter = new GvAdapter(this, list); gridView.setAdapter(adapter); gridView.setOnItemClickListener(new AdapterView .OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { //判断是否是最后一个。 if (position==parent.getChildCount()-1){ if (position==6){//不能点击了 }else{ opnePhoto(); } }else{//可以加点预览功能。 } } }); } public void opnePhoto() { // 启动图片选择器 imagePicker.startChooser(this, new ImagePicker.Callback() { // 选择图片回调 @Override public void onPickImage(Uri imageUri) { } // 裁剪图片回调 @Override public void onCropImage(Uri imageUri) { if (list.size()>=6){ Toast.makeText(MainActivity.this,"最多选择六张图片",Toast.LENGTH_LONG).show(); }else{ list.add(String.valueOf(imageUri)); } adapter.notifyDataSetChanged();// path= String.valueOf(imageUri); } // 自定义裁剪配置 @Override public void cropConfig(CropImage.ActivityBuilder builder) { builder // 是否启动多点触摸 .setMultiTouchEnabled(false) // 设置网格显示模式 .setGuidelines(CropImageView.Guidelines.OFF) // 圆形/矩形 .setCropShape(CropImageView.CropShape .RECTANGLE) // 调整裁剪后的图片最终大小 .setRequestedSize(960, 540) // 宽高比 .setAspectRatio(16, 9); } // 用户拒绝授权回调 @Override public void onPermissionDenied(int requestCode, String[] permissions, int[] grantResults) { } }); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); imagePicker.onActivityResult(MainActivity.this,requestCode, resultCode, data); }}
这是xml界面
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:orientation="vertical" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="theagent.com.photo.MainActivity"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Hello World!"/> <GridView android:id="@+id/grid_view" android:numColumns="4" android:layout_width="match_parent" android:layout_height="wrap_content"> GridView>LinearLayout>
这里是demo下载
更多相关文章
- android EditText设置不可写
- Android(安卓)matrix 控制图片的旋转、缩放、移动
- android“设置”里的版本号
- 在Fragment中设置控件点击方法,执行失败。
- android拍照与读取相册
- Android(安卓)闹钟管理类的使用
- Android(安卓)报错:Caused by: android.os.FileUriExposedExcepti
- Android设置通知栏/状态栏透明改变通知栏颜色和app最上部分颜色
- android 设置中划线 下划线等