1
我想創建一個圖像查看器,可以從給定的URL加載圖像。下面的代碼實現用戶界面。如何使用ImageViews和PageAdapter輕掃縮放圖像
我的意圖是讓用戶縮放圖像並使用滑動事件移動到下一張圖像。但問題是,當我縮放然後滑動時,而不是顯示剩餘部分時,它會移至下一張圖像。
我試着用requestDisallowInterceptTouchEvent在TouchImageView的(https://github.com/MikeOrtiz/TouchImageView)onTouchListener。經過這剩餘部分可以顯示,但現在我不能進入下一個頁面。我想知道如何可以做到這一點的情況下只能去任何的TouchView或PageAdapter
public class PageActivity extends Activity {
private int numPages = 33;
private TouchImageView[] imageViews = new TouchImageView[numPages];
private String URL = "http://www.smbc-comics.com/comics/200905";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ViewPager viewPager = new ViewPager(this);
for (int i = 0; i < numPages; i++) {
imageViews[i] = new TouchImageView(this);
imageViews[i].setBackgroundResource(R.drawable.banke);
imageViews[i].setMaxZoom(4f);
}
setContentView(viewPager);
ImagePagerAdapter adapter = new ImagePagerAdapter();
viewPager.setAdapter(adapter);
viewPager.setOffscreenPageLimit(2);
}
@SuppressWarnings("unused")
private class ImagePagerAdapter extends PagerAdapter {
@Override
public int getCount() {
return numPages;
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view == ((TouchImageView) object);
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
Context context = PageActivity.this;
String pageURL = URL;
if (imageViews[position].getDrawable() == null) {
ImageFetcher imagefetcher = new ImageFetcher();
imagefetcher.execute(
pageURL + String.format("%02d", position+1) + ".gif",
String.valueOf(position));
}
((ViewPager) container).addView(imageViews[position], 0);
return imageViews[position];
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
((ViewPager) container).removeView((TouchImageView) object);
imageViews[position].setImageDrawable(null);
}
}
public class ImageFetcher extends AsyncTask<String, Integer, Drawable> {
int fillthisPos;
public Drawable doInBackground(String... urls) {
try {
InputStream is = (InputStream) new URL(urls[0]).getContent();
fillthisPos = Integer.parseInt(urls[1]);
Drawable d = Drawable.createFromStream(is, "src name");
return d;
} catch (Exception e) {
return null;
}
}
@Override
protected void onPostExecute(Drawable result) {
super.onPostExecute(result);
imageViews[fillthisPos].setImageDrawable(result);
result = null;
}
}
}
如果你不是自己動手構建它,請查看這個庫:https://github.com/chrisbanes/PhotoView它提供了一個你正在尋找的實現,據我所知。 – FoamyGuy 2013-04-10 18:49:52