android viewpager 缩放,android – 使用ViewPager实现捏缩放

我正在使用ViewPager从远程服务器检索图像.一切都运作良好,但问题是我不知道如何实现pinch放大/缩小功能.我的代码如下

public class ImagePagerActivity extends BaseActivity {

private ViewPager pager;

private DisplayImageOptions options;

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.ac_image_pager);

Bundle bundle = getIntent().getExtras();

String[] imageUrls = bundle.getStringArray(Extra.IMAGES);

int pagerPosition = bundle.getInt(Extra.IMAGE_POSITION, 0);

options = new DisplayImageOptions.Builder()

.showImageForEmptyUri(R.drawable.image_for_empty_url)

.cacheOnDisc()

.imageScaleType(ImageScaleType.IN_SAMPLE_INT)

.build();

pager = (ViewPager) findViewById(R.id.pager);

pager.setAdapter(new ImagePagerAdapter(imageUrls));

pager.setCurrentItem(pagerPosition);

}

protected void onStop() {

imageLoader.stop();

super.onStop();

}

private class ImagePagerAdapter extends PagerAdapter {

private String[] images;

private LayoutInflater inflater;

ImagePagerAdapter(String[] images) {

this.images = images;

inflater = getLayoutInflater();

}

public void destroyItem(View container, int position, Object object) {

((ViewPager) container).removeView((View) object);

}

public void finishUpdate(View container) {

}

public int getCount() {

return images.length;

}

public Object instantiateItem(View view, int position) {

final View imageLayout = inflater.inflate(R.layout.item_pager_image, null);

final ImageView imageView = (ImageView) imageLayout.findViewById(R.id.image);

final ProgressBar spinner = (ProgressBar) imageLayout.findViewById(R.id.loading);

imageLoader.displayImage(images[position], imageView, options, new ImageLoadingListener() {

public void onLoadingStarted() {

spinner.setVisibility(View.VISIBLE);

}

public void onLoadingFailed(FailReason failReason) {

String message = null;

switch (failReason) {

case IO_ERROR:

message = "Input/Output error";

break;

case OUT_OF_MEMORY:

message = "Out Of Memory error";

break;

case UNKNOWN:

message = "Unknown error";

break;

}

Toast.makeText(ImagePagerActivity.this, message, Toast.LENGTH_SHORT).show();

spinner.setVisibility(View.GONE);

imageView.setImageResource(android.R.drawable.ic_delete);

}

public void onLoadingComplete(Bitmap loadedImage) {

spinner.setVisibility(View.GONE);

Animation anim = AnimationUtils.loadAnimation(ImagePagerActivity.this, R.anim.fade_in);

imageView.setAnimation(anim);

anim.start();

}

public void onLoadingCancelled() {

// Do nothing

}

});

((ViewPager) view).addView(imageLayout, 0);

return imageLayout;

}

public boolean isViewFromObject(View view, Object object) {

return view.equals(object);

}

public void restoreState(Parcelable state, ClassLoader loader) {

}

public Parcelable saveState() {

return null;

}

public void startUpdate(View container) {

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值