之前没有写过viewpager动态加载本地图片,现在写下来,做个记录。
viewpager的适配器。
public class ViewPagerAdapter extends PagerAdapter {
private List<View> viewList;
private Context context;
private DeleteView deleteView;
//删除图片的接口回调
public interface DeleteView{
void ChangeList(int position);
}
public ViewPagerAdapter(Context context, List<View> viewList) {
deleteView = (DeleteView) context;
this.context = context;
this.viewList = viewList;
}
@Override
public int getCount() {
return viewList.size();
}
@Override
public int getItemPosition(Object object) {
return POSITION_NONE;
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view == object;
}
@Override
public Object instantiateItem(ViewGroup container, final int position) {
if(viewList.size() > 0){
container.addView(viewList.get(position % viewList.size()));
View view = viewList.get(position % viewList.size());
view.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
L.e("长按了第" + (position + 1) + "张");
final Dialog dialog = new Dialog(context);
View view1 = LayoutInflater.from(context).inflate(R.layout.my_brand_dialog, null);
TextView tvTitle = (TextView) view1.findViewById(R.id.tv_Content);
TextView tvCancel = (TextView) view1.findViewById(R.id.tv_brand_cancel);
TextView tvDelete = (TextView) view1.findViewById(R.id.tv_brand_delete);
dialog.setContentView(view1);
dialog.getWindow().setBackgroundDrawableResource(R.drawable.brand_dialog);
dialog.setCanceledOnTouchOutside(false);
tvTitle.setText("是否删除当前图片");
tvCancel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dialog.dismiss();
}
});
tvDelete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
L.e("删除了第" + (position + 1) + "张");
viewList.remove(position);
deleteView.ChangeList(position);
notifyDataSetChanged();
dialog.dismiss();
}
});
dialog.show();
DisplayMetrics dm = context.getResources().getDisplayMetrics();
int displayWidth = dm.widthPixels;
android.view.WindowManager.LayoutParams p = dialog.getWindow().getAttributes();
//获取对话框当前的参数值
p.width = (int) (displayWidth * 0.8);
p.height = ViewGroup.LayoutParams.WRAP_CONTENT;
dialog.getWindow().setAttributes(p); //设置生效
return true;
}
});
}
return viewList.get(position % viewList.size());
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
if(viewList.size() != 0){
container.removeView(viewList.get(position % viewList.size()));
}
}
}
接下来是activity的部分代码
private void showChoosePicDialog() {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setCancelable(false);
builder.setTitle("设置商品图片");
String[] items = {"选择本地照片", "拍照"};
builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
builder.setItems(items, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
switch (which) {
case CHOOSE_PICTURE: // 选择本地照片
Intent IDFromGallery = new Intent();
IDFromGallery.setType(IMAGE_TYPE);
IDFromGallery.setAction(Intent.ACTION_PICK);
startActivityForResult(IDFromGallery, ID_CHOOSE_PICTURE);
break;
case TAKE_PICTURE: // 拍照
ID_File_Camera = new File(Environment.
getExternalStorageDirectory(), System.currentTimeMillis() + ".jpg");
id_uri = Uri.fromFile(ID_File_Camera);
L.e(TAG, String.valueOf(id_uri));
takePhoto.onPickFromCapture(id_uri);
break;
}
}
});
builder.create().show();
}
@Override
protected void onActivityResult(int requestCode, int resultCode, final Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK) {
switch (requestCode) {
case ID_CHOOSE_PICTURE:
Log.i("TAG", "相册 [ " + data + " ]");
if (data == null) {
return;
}
Uri ID_uri = data.getData();
if (Build.VERSION.SDK_INT < 19) {
String[] proj = {MediaStore.Images.Media.DATA};
Cursor cursor = managedQuery(ID_uri, proj, null, null, null);
int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
if (cursor.moveToFirst()) {
path = cursor.getString(column_index);
ID_File = new File(path);
Log.e("path", "图片地址" + path);
LLTakePhone.setVisibility(View.GONE);
relativeLayout.setVisibility(View.VISIBLE);
fileList.add(ID_File);
TotalImgNum.setText(String.valueOf(1) + "/" + String.valueOf(fileList.size()) + "张");
View view = LayoutInflater.from(this).inflate(R.layout.fragment_scroll_layout, rlShowPhone, false);
ImageView imageView = (ImageView) view.findViewById(R.id.id_index_gallery_item_image);
imageView.setLayoutParams(new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT));
Glide.with(imageView.getContext())
.load(ID_File)
.into(imageView);
views.add(view);
viewPagerAdapter = new ViewPagerAdapter(this, views);
viewpager.setAdapter(viewPagerAdapter);
viewpager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
L.e(TAG, position + "onPageScrolled");
}
@Override
public void onPageSelected(int position) {
L.e(TAG, position + "onPageSelected");
PagePosition = position;
TotalImgNum.setText(String.valueOf(PagePosition + 1) + "/" + String.valueOf(fileList.size()) + "张");
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
setImage(ID_File);
}
} else {
path = ReleaseGoodsActivity.GetPathFromUri4kitkat.getPath(this, ID_uri);
bitmapToString(path);
ID_File = new File(path);
LLTakePhone.setVisibility(View.GONE);
relativeLayout.setVisibility(View.VISIBLE);
fileList.add(ID_File);
TotalImgNum.setText(String.valueOf(1) + "/" + String.valueOf(fileList.size()) + "张");
View view = LayoutInflater.from(this).inflate(R.layout.fragment_scroll_layout, rlShowPhone, false);
ImageView imageView = (ImageView) view.findViewById(R.id.id_index_gallery_item_image);
imageView.setLayoutParams(new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT));
Glide.with(imageView.getContext())
.load(ID_File)
.into(imageView);
views.add(view);
viewPagerAdapter = new ViewPagerAdapter(this, views);
viewpager.setAdapter(viewPagerAdapter);
viewpager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
PagePosition = position;
TotalImgNum.setText(String.valueOf(PagePosition + 1) + "/" + String.valueOf(fileList.size()) + "张");
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
setImage(ID_File);
}
break;
}
大概就是这些了,如果有不对的地方欢迎指正。