我已經使用ViewPager
進行圖像滑動,我需要使用縮放選項查看圖像,圖像被放大,但分頁中斷時放大圖像。已嘗試onTouchEvent()
和OnInterceptTouchEvent()
。並啓用ViewPager
導致Force關閉。當ImageView被放大時,在ViewPager中禁用分頁
回答
子類ViewPager
和覆蓋canScroll()
。您將經過檢測到有觸摸事件的小部件,你可以返回true
如果你想滾動事件傳遞給小部件或false
如果你想ViewPager
使用該滾動量。在你的情況下,當你縮放時,你會使用自己的自定義邏輯,當你沒有縮放時,只需鏈接到超類。
由於我看到很多問題都出現在重新編寫這個ViewPager-zoom組合中,我很驚訝沒有一個可以處理它的實體庫,或者是在那裏? 我看到這個帖子: https://groups.google.com/forum/#!topic/android-developers/mygxOpYwcKo 但是,只有底部的兩個項目都使用Viewpager並且都在這裏或穩定性問題描述的任何問題。 無論如何,你是Mark還是你們中的任何一個人知道將ViewPager和縮放成功結合起來的實現?謝謝 – Rob
@Rob:考慮到'ViewPager'子類是十幾行代碼,一個庫看起來會過度。更糟的是,圖書館不會先知道需要放大的東西,所以我甚至不知道如何實現這樣一個圖書館。 – CommonsWare
我也面臨同樣的問題一次,我做了以下解決this.I使用自定義ViewPager類。
CustomViewPager的.java
public class CustomViewPager extends ViewPager {
private boolean isPagingEnabled;
public CustomViewPager(Context context, AttributeSet attrs) {
super(context, attrs);
this.isPagingEnabled = true;
}
@Override
public boolean onTouchEvent(MotionEvent event) {
if (this.isPagingEnabled) {
return super.onTouchEvent(event);
}
return false;
}
@Override
public boolean onInterceptTouchEvent(MotionEvent event) {
if (this.isPagingEnabled) {
return super.onInterceptTouchEvent(event);
}
return false;
}
public void setPagingEnabled(boolean b) {
this.isPagingEnabled = b;
}
}
和禁用滾動使用下面的代碼片段,
CustomViewPager pager = (CustomViewPager) findViewById(R.id.pager);
pager.setPagingEnabled(false);
如果您需要更多的信息,那麼你可以問。希望能幫助到你。
我這樣做有以下方式,它會在用戶縮放禁用分頁,但是當他打縮放的ImageView的邊緣它將正常頁面到下一個/上一個影像。
@Override
public boolean onTouchEvent(MotionEvent ev) {
if(handleTouch(ev)) {
return super.onTouchEvent(ev);
}
else {
return false;
}
}
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
if(handleTouch(ev) && !areCommentsOpen()) {
return super.onInterceptTouchEvent(ev);
}
else {
return false;
}
}
private boolean handleTouch(MotionEvent ev) {
if (prevX != -666 && ev.getAction() == MotionEvent.ACTION_MOVE) {
if(ev.getX() <= prevX) {
isGoingLeft=false;
}
else {
isGoingLeft=true;
}
}
else if (ev.getAction() == MotionEvent.ACTION_UP || ev.getAction() == MotionEvent.ACTION_CANCEL) {
return true;
}
ZoomableImageView imageView = getImageView();
if(imageView == null) {
return true;
}
prevX=ev.getX();
if(imageView.getZoomLevel() <= 1f) {
return true;
}
else if(imageView.isBoundedLeft()) {
if(isTransitioning) {
return true;
}
else if (isGoingLeft) {
isTransitioning = true;
return true;
}
else {
return false;
}
}
else if (imageView.isBoundedRight()) {
if(isTransitioning) {
return true;
}
else if (!isGoingLeft) {
isTransitioning = true;
return true;
}
else {
return false;
}
}
else {
isTransitioning = false;
return false;
}
}
private ZoomableImageView getImageView() {
for (int i = 0; i < getChildCount(); i++) {
ZoomableImageView imageView = (ZoomableImageView) (getChildAt(i).findViewById(R.id.single_image_view));
if(imageView.getPosition() == getCurrentItem()) {
return imageView;
}
}
return null;
}
public void setTransitioning(boolean trans) {
this.isTransitioning = trans;
}
public void setGoingLeft(boolean left) {
this.isGoingLeft = left;
}
謝謝!!!在哪裏使用此handleTouch()以及在哪裏調用此方法 – Pavithra
這是自定義viewpager類中的代碼。所以你必須 類MyPager擴展ViewPager {// 以上代碼 } 並在XML你必須
我知道這個問題是舊的,但爲別人尋找一個答案Mike Ortiz TouchImageView開箱的,(你可能需要切換到Dev分支)
- 1. 放大ViewPager ImageView?
- 2. 放大的ImageView在viewpager
- 3. 如何在android中放大imageview時禁用抗鋸齒?
- 4. ViewPager滑動到下一頁當imageView onclick
- 5. 禁用ViewPager分頁的最佳方法
- 6. ViewPager&ImageView縮放問題
- 7. 在Android中的ViewPager中禁用和啓用分頁
- 8. 當索引被禁用時
- 9. 當OrientationEventListener被禁用時,onOrientationChanged()被調用
- 10. ImageView大於屏幕分辨率被重新縮放錯誤
- 11. 當玩家調整大小時禁用縮放/縮放
- 12. viewpager與拖放禁止
- 13. Android:如何放大ViewPager中的單個頁面(如果用戶放大)?
- 14. 在MPAndroidChart庫中禁用縮放放大
- 15. 在ViewPager中禁用動畫
- 16. 的Android ViewPager具有可縮放的ImageView
- 17. 縮放頁面時禁用div背景大小頁面
- 18. 試圖放大ImageView
- 19. 無法放大ImageView
- 20. 雙擊放大ImageView
- 21. 在ViewPager中加載片段只有當它被選中時
- 22. Android如何在ImageView中放大3倍當量
- 23. 當某些元素被佔用時禁用頁面滾動
- 24. scrollViewDidEndZooming在放大UIScrollView時未被調用
- 25. 捏縮放ViewPager中的ImageView? onTouch事件不起作用?
- 26. 在imageView和viewPager中實現縮放效果
- 27. 如何在viewpager中縮放和平移imageview圖像
- 28. 在ScrollView裏面放大ImageView的使用
- 29. Android:在GridView中放大ImageView的寬度
- 30. 如何在Android中放大ImageView
要禁用滾動,你必須使用定製ViewPager類。 –