2016-01-17 19 views
0

我想做的事:如何姿態探測器添加到ViewPager

圖片將是viewpager滑動式,而是人們可以zoomIn或縮小(ZoomOut)的姿態探測器。

問題:

我可以利用滑動圖片viewpager但不知道如何添加姿態探測器在我Viewpager。

代碼:

活動:

public class ImageSlider extends AppCompatActivity { 
    private ViewPager viewPager; 
    CustomSwipeAdpater customSwipeAdpater; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_image_slider); 
     viewPager = (ViewPager) findViewById(R.id.pager); 
     customSwipeAdpater = new CustomSwipeAdpater(this); 
     viewPager.setAdapter(customSwipeAdpater); 
    } 
} 

PagerAdpater:

public class CustomSwipeAdpater extends PagerAdapter { 
    private int[] image_resources = {R.drawable.wall,R.drawable.welcome}; 
    private Context context; 
    private LayoutInflater inflater; 
    private Animator mCurrentAnimator; 
    private ImageView imageView; 

    public CustomSwipeAdpater(Context context){ 
     this.context = context; 

    } 

    @Override 
    public int getCount() { 
     return image_resources.length; 
    } 

    @Override 
    public boolean isViewFromObject(View view, Object object) { 
     return (view == (RelativeLayout)object); 
    } 

    @Override 
    public Object instantiateItem(ViewGroup container, final int position) { 
     inflater = (LayoutInflater)context.getSystemService(context.LAYOUT_INFLATER_SERVICE); 

     View item_view = inflater.inflate(R.layout. swipe_layout,container,false); 
     imageView = (ImageView) item_view.findViewById(R.id.ivSliderImage); 
     TextView textView = (TextView) item_view.findViewById(R.id.tvSliderImageText); 
     imageView.setImageResource(image_resources[position]); 
     textView.setText("Image:" + position); 
     container.addView(item_view); 
     imageView.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
      } 
     }); 
     return item_view; 
    } 

    @Override 
    public void destroyItem(ViewGroup container, int position, Object object) { 
     container.removeView((RelativeLayout) object); 
    } 
} 

如何添加姿態探測器在這個代碼?

+1

你看到PhotoView中的源代碼?它也是這樣。它來自Google用戶Chirsbanes – Amir

回答

1

Photoview庫做你想要的東西確切的事情也支持旋轉。 創建touchAttacher並將圖像傳遞給它,它已完成。

這裏是PhotoViewAttacher代碼,不正是你想要的部分:

public PhotoViewAttacher(ImageView imageView, boolean zoomable) { 
    mImageView = new WeakReference<>(imageView); 

    imageView.setDrawingCacheEnabled(true); 
    imageView.setOnTouchListener(this); 

    ViewTreeObserver observer = imageView.getViewTreeObserver(); 
    if (null != observer) 
     observer.addOnGlobalLayoutListener(this); 

    // Make sure we using MATRIX Scale Type 
    setImageViewScaleTypeMatrix(imageView); 

    if (imageView.isInEditMode()) { 
     return; 
    } 
    // Create Gesture Detectors... 
    mScaleDragDetector = VersionedGestureDetector.newInstance(
      imageView.getContext(), this); 

    mGestureDetector = new GestureDetector(imageView.getContext(), 
      new GestureDetector.SimpleOnGestureListener() { 

       // forward long click listener 
       @Override 
       public void onLongPress(MotionEvent e) { 
        if (null != mLongClickListener) { 
         mLongClickListener.onLongClick(getImageView()); 
        } 
       } 
      }); 

    mGestureDetector.setOnDoubleTapListener(new DefaultOnDoubleTapListener(this)); 

    // Finally, update the UI so that we're zoomable 
    setZoomable(zoomable); 
} 
+0

非常感謝。我無法在我的代碼中實現庫示例代碼。你能幫我做到嗎? – Yeahia2508

+0

@ yeahia2508我做幾個月前想要的東西。如果您在存儲庫中看到示例,它具有活動** ViewPagerActivity **我認爲它解決了您的問題。 – Amir

+0

這是如此簡單和乾淨。如果你有問題,讓我知道我會很樂意幫助你:) – Amir