在Android中使用ViewPager进行缩放和滑动问题

时间:2015-06-16 10:27:55

标签: android android-viewpager swipe pinchzoom

我是android development的新人。我正在尝试制作一个需要集成图像swipe and pinch zoom功能的壁纸应用程序。

我做过两次但不是一次。当我整合滑动它的工作,但当我集成捏缩放然后没有工作。 Both functionality work alone but not together.

我试图多次找到解决方案但却无法从任何地方找到解决方案。 Below code used.

public class FullImageActivity extends Activity {
    protected int curruntPosition;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_full_image);

        ImageAdapter imageAdapter = new ImageAdapter(this);
        List<ImageView> images = new ArrayList<ImageView>();
        ViewPager viewPager = (ViewPager) findViewById(R.id.view_pager);

        for (int i = 0; i < imageAdapter.getCount(); i++) {
            ImageView imageView = new ImageView(this);
            imageView.setImageResource(imageAdapter.mThumbIds[i]);
            imageView.setScaleType(ImageView.ScaleType.FIT_XY);
            images.add(imageView);


        }
        ImagePagerAdapter imagePagerAdapter = new ImagePagerAdapter(images);
        viewPager.setAdapter(imagePagerAdapter);
        int position = getIntent().getExtras().getInt("id");
        viewPager.setCurrentItem(position);

         viewPager.setOnPageChangeListener(new OnPageChangeListener() {

              @Override public void onPageSelected(int arg0)
              { // TODOAuto-generated method stub // Here you can set the wallpaper
              curruntPosition = arg0;

              }

              @Override public void onPageScrolled(int arg0, float arg1, int arg2)
              { // TODO Auto-generated method stub

              }

              @Override public void onPageScrollStateChanged(int arg0)
              { // TODO Auto-generated method stub

              }

              });


            TouchImageView img = new TouchImageView(this);
              img.setImageResource(imageAdapter.mThumbIds[position]);
              img.setMaxZoom(4f);
              setContentView(img);
    }
}
}

我使用了上面的代码。让我知道是否有任何人有解决方案实际问题。

感谢

2 个答案:

答案 0 :(得分:0)

也许你可以尝试避免在必须捏的时候滑动

public class CustomViewPager extends ViewPager { 
private boolean enabled; 
public CustomViewPager(Context context, AttributeSet attrs) { 
    super(context, attrs); 
    this.enabled = true; 
} 
@Override 
public boolean onTouchEvent(MotionEvent event) { 
    if (this.enabled) { 
       return super.onTouchEvent(event); 
    } 
    return false; 
} 
@Override 
public boolean onInterceptTouchEvent(MotionEvent event) { 
    if (this.enabled) { 
        return super.onInterceptTouchEvent(event); 
    } 
    return false; 
} 
public void setPagingEnabled(boolean enabled) { 
    this.enabled = enabled; 
}
}

执行此操作后,唯一剩下的就是将布局文件中的ViewPager标记替换为我自己的类,然后调用方法setPagingEnabled false,希望它有帮助

答案 1 :(得分:0)

对于滑动,您可以测量最小滑动距离,并根据您可以识别缩放和滑动。您还可以查看给定的网址以供参考,以实现您的目标

http://www.androidhive.info/2013/09/android-fullscreen-image-slider-with-swipe-and-pinch-zoom-gestures/

希望这对你有所帮助。