2013-07-05 184 views
3

在以下代碼中,我使用ViewPager和ImageView在滑動操作和Tap按鈕上顯示圖像。但它不允許我縮放/平移圖像。 爲此,我嘗試使用TouchImageView,bt沒有成功。我原來的活動如下:無法將TouchImageView與ViewPager一起使用

package com.pankajvatsa.testfeet; 

import java.util.ArrayList; 
import java.util.List; 

import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.support.v4.view.ViewPager; 
import android.view.MotionEvent; 
import android.view.View; 
import android.widget.Button; 
import android.widget.ImageView; 
import android.widget.RelativeLayout; 

public class ImageViewPager extends Activity { 
// Declare Variable 
int position; 
Button bWallpaperButton; 
Button bDownloadButton; 
RelativeLayout mainLay; 
int flagForButton = 0; 
boolean gone = false; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    // Set title for the ViewPager 
    setTitle("ViewPager"); 
    // Get the view from view_pager.xml 
    setContentView(R.layout.activity_image_view_pager); 

    bWallpaperButton = (Button) findViewById(R.id.bSetWallpaper); 
    bDownloadButton = (Button) findViewById(R.id.bSaveToGallery); 

    mainLay = (RelativeLayout) findViewById(R.id.rl_view_pager); 

    // Retrieve data from MainActivity on item click event 
    Intent p = getIntent(); 
    position = p.getExtras().getInt("id"); 

    ImageAdapter imageAdapter = new ImageAdapter(this); 
    List<ImageView> images = new ArrayList<ImageView>(); 

    // Retrieve all the images 
    for (int i = 0; i < imageAdapter.getCount(); i++) { 
     ImageView imageView = new ImageView(this); 
     imageView.setImageResource(imageAdapter.mThumbIds[i]); 
     imageView.setScaleType(ImageView.ScaleType.CENTER); 
     images.add(imageView); 
    } 

    // Set the images into ViewPager 
    ImagePagerAdapter pageradapter = new ImagePagerAdapter(images); 
    ViewPager viewpager = (ViewPager) findViewById(R.id.image_pager); 
    viewpager.setAdapter(pageradapter); 
    // Show images following the position 
    viewpager.setCurrentItem(position); 

    viewpager.setOnTouchListener(new View.OnTouchListener() { 


     private float pointX; 
     private float pointY; 
     private int tolerance = 50; 

     @Override 
     public boolean onTouch(View v, MotionEvent event) { 
      // TODO Auto-generated method stub 
      switch (event.getAction()) { 
      case MotionEvent.ACTION_MOVE: 
       return false; 
      case MotionEvent.ACTION_DOWN: 
       pointX = event.getX(); 
       pointY = event.getY(); 
       break; 
      case MotionEvent.ACTION_UP: 
       boolean sameX = pointX + tolerance > event.getX() && pointX - tolerance < event.getX(); 
       boolean sameY = pointY + tolerance > event.getY() && pointY - tolerance < event.getY(); 
       if(sameX && sameY){ 
         //The user "clicked" certain point in the screen or just returned to the same position an raised the finger 

        if(gone == false){ 
         bWallpaperButton.setVisibility(View.GONE); 
         bDownloadButton.setVisibility(View.GONE); 
         gone = true; 
        }else{ 
         bWallpaperButton.setVisibility(View.VISIBLE); 
         bDownloadButton.setVisibility(View.VISIBLE); 
         gone = false; 
        } 
       } 
      } 
      return false; 

     } 
    }); 


} 

} 

這之後,我創造了我的包名爲「TouchImageView.java」的新類和粘貼TouchImageView的代碼吧。然後我用TouchImageView替換上面代碼中的類型ImageView。 當我啓動應用程序時,我仍然無法縮放圖像,而且,以前在按鍵上出現的按鈕也不會出現。

請幫忙!!!

+0

嘗試使用它'ViewPager'之外,或嘗試做垂直捏而不是水平捏。如果問題依然存在,那麼問題是'ViewPager'消耗觸摸事件,並且您需要繼承'ViewPager'並覆蓋'canScroll()'來解決這個問題。 – CommonsWare

回答

1

我會建議你使用Android Touch Gallery。看看圖書館。有ViewPager作爲畫廊和Touch Image View裏面,使捏縮放和平底鍋。

2

我知道這個問題是舊的,但在這個答案的時候邁克已經更新TouchImageView與ViewPager支持(可能需要切換到Dev分支)

+0

可以請你幫我如何使用傳呼機與TouchImageView – Erum

相關問題