Android实现图片选择上传功能实例

Android实现图片选择上传功能实例

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 selImageList; //当前选择的所有图⽚

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 names) {

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 names = new ArrayList<>();

("拍照");

("相册");

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) ges()); ra(_SELECTED_IMAGE_POSITION, position);

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 images = (ArrayList) ializableExtra(_RESULT_ITEMS);

if (images != null){

(images);

ges(selImageList);

}

}

} else if (resultCode == _CODE_BACK) {

//预览图⽚返回

if (data != null && requestCode == REQUEST_CODE_PREVIEW) {

ArrayList images = (ArrayList) ializableExtra(_IMAGE_ITEMS);

if (images != null){

();

(images);

ges(selImageList);

}

}

}

}

private String url="";

private void uploadImage(ArrayList pathList) {

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条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信