2023年7月7日发(作者:)
Android实现图⽚选择上传功能实例效果图:添加依赖:选择图⽚:compile ':imagepicker:0.5.4'上传⽂件:compile ':okhttputils:2.6.2'ckage image;
import ;
import patActivity;
import ;
import youtManager;
import erView;
import ;
import rView;
import icker;
import tem;
import ridActivity;
import reviewDelActivity;
import ageView;
import ist;
import ;
import ;
public class MainActivity extends AppCompatActivity implements clerViewItemClickListener{
public static final int IMAGE_ITEM_ADD = -1;
public static final int REQUEST_CODE_SELECT = 100;
public static final int REQUEST_CODE_PREVIEW = 101;
private ImagePickerAdapter adapter;
private ArrayList
private int maxImgCount = 8; //允许选择图⽚最⼤数
private HttpUtil httpUtil;
@Override
protected void onCreate(Bundle savedInstanceState) {
te(savedInstanceState);
setContentView(ty_main);
httpUtil = new HttpUtil(); findViewById().setOnClickListener(new kListener() {
@Override
public void onClick(View v) {
uploadImage(selImageList);
}
});
//最好放到 Application oncreate执⾏
initImagePicker();
initWidget();
}
private void initImagePicker() {
ImagePicker imagePicker = tance();
geLoader(new GlideImageLoader()); //设置图⽚加载器
wCamera(true); //显⽰拍照按钮
p(true); //允许裁剪(单选才有效)
eRectangle(true); //是否按矩形区域保存
ectLimit(maxImgCount); //选中数量限制
tiMode(false); //多选
le(GLE); //裁剪框的形状
usWidth(800); //裁剪框的宽度。单位像素(圆形⾃动取宽⾼最⼩值)
usHeight(800); //裁剪框的⾼度。单位像素(圆形⾃动取宽⾼最⼩值)
PutX(1000); //保存⽂件的宽度。单位像素
PutY(1000); //保存⽂件的⾼度。单位像素
}
private void initWidget() {
RecyclerView recyclerView = (RecyclerView) findViewById(erView);
selImageList = new ArrayList<>();
adapter = new ImagePickerAdapter(this, selImageList, maxImgCount);
temClickListener(this);
outManager(new GridLayoutManager(this, 4));
FixedSize(true);
pter(adapter);
}
private SelectDialog showDialog(DialogListener listener, List
SelectDialog dialog = new SelectDialog(this, arentFrameWindowStyle, listener, names);
if (!shing()) {
();
}
return dialog;
} @Override
public void onItemClick(View view, int position) {
switch (position) {
case IMAGE_ITEM_ADD:
List
("拍照");
("相册");
showDialog(new DialogListener() {
@Override
public void onItemClick(AdapterView> parent, View view, int position, long id) {
switch (position) {
case 0: // 直接调起相机
//打开选择,本次允许选择的数量
tance().setSelectLimit(maxImgCount - ());
Intent intent = new Intent(, );
ra(_TAKE_PICKERS,true); // 是否是直接打开相机
startActivityForResult(intent, REQUEST_CODE_SELECT);
break;
case 1:
//打开选择,本次允许选择的数量
tance().setSelectLimit(maxImgCount - ());
Intent intent1 = new Intent(, );
startActivityForResult(intent1, REQUEST_CODE_SELECT);
break;
default:
break;
}
}
}, names);
break;
default:
//打开预览
Intent intentPreview = new Intent(this, );
ra(_IMAGE_ITEMS, (ArrayList
ra(_FROM_ITEMS,true);
startActivityForResult(intentPreview, REQUEST_CODE_PREVIEW);
break;
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
vityResult(requestCode, resultCode, data);
if (resultCode == _CODE_ITEMS) {
//添加图⽚返回
if (data != null && requestCode == REQUEST_CODE_SELECT) {
ArrayList
if (images != null){
(images);
ges(selImageList);
}
}
} else if (resultCode == _CODE_BACK) {
//预览图⽚返回
if (data != null && requestCode == REQUEST_CODE_PREVIEW) {
ArrayList
if (images != null){
();
(images);
ges(selImageList);
}
}
}
}
private String url="";
private void uploadImage(ArrayList
leRequest(url, null, pathList, new MyStringCallBack() {
@Override
public void onError(Call call, Exception e, int id) {
r(call, e, id);
} @Override
public void onResponse(String response, int id) {
onse(response, id);
//返回图⽚的地址
}
});
}}以上就是全部内容,包含了代码,⼤家还有任何其他疑问可以在下⽅的留⾔讨论,感谢你对的⽀持。
发布者:admin,转转请注明出处:http://www.yc00.com/xiaochengxu/1688678208a161804.html
评论列表(0条)