2013-11-09 33 views
5

Tôi mới sử dụng tính năng vuốt Cử chỉ cho ứng dụng Android. Tôi đang cố gắng vuốt một ImageView từ Trái sang Phải của màn hình bằng cách sử dụng mã bên dưới:Android - Cách di chuyển ImageView trên Swipe

public class MainActivity extends Activity implements OnClickListener{ 
private static final int SWIPE_MIN_DISTANCE = 10; 
private static final int SWIPE_MAX_OFF_PATH = 250; 
private static final int SWIPE_THRESHOLD_VELOCITY = 200; 
private GestureDetector gestureDetector; 
View.OnTouchListener gestureListener; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    ImageView btnSwipe = (ImageView)findViewById(R.id.imgBtnSwipe); 
    btnSwipe.setOnClickListener(this); 
    gestureDetector = new GestureDetector(this, new MyGestureDetector()); 
    gestureListener = new View.OnTouchListener() { 
     public boolean onTouch(View v, MotionEvent event) { 
      return gestureDetector.onTouchEvent(event); 
     } 
    }; 
    btnSwipe.setOnTouchListener(gestureListener); 
} 
class MyGestureDetector extends SimpleOnGestureListener { 
    @Override 
    public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { 
     try { 
      if (Math.abs(e1.getY() - e2.getY()) > SWIPE_MAX_OFF_PATH) 
       return false; 
      if(e1.getX() - e2.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) { 
       Toast.makeText(MainActivity.this, "Left Swipe", Toast.LENGTH_SHORT).show(); 
      } else if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) { 
       Toast.makeText(MainActivity.this, "Right Swipe", Toast.LENGTH_SHORT).show(); 
      } 
     } catch (Exception e) { 
      // nothing 
     } 
     return false; 
    } 

} 
@Override 
public void onClick(View v) { 
} 
} 

Tôi nhận được thông báo Bánh mì nướng dưới dạng Swipe phải. Nhưng hình ảnh không chuyển động. Làm thế nào tôi có thể thực hiện điều đó? Xin hãy giúp tôi với mã/liên kết mẫu.

Trả lời

5

Tôi tìm thấy một giải pháp đơn giản như sau:

Đối Ngay Swipe (phía phải) :

btnSwipe.setTranslationX(e2.getX()); 

Đối với trái Swipe (phía trái)"

btnSwipe.setTranslation(e1.getX()); 

Bây giờ, ImageView đang trải qua từ phải sang trái và trái sang phải theo chiều ngang. Nhưng điều này hoạt động từ Android API Cấp 11 trở đi.

+0

vào lần thứ hai, "vuốt sang trái", tôi đoán nó phải được setTranslationX một lần nữa, phải không? – iversoncru

+0

khi tôi cố gắng sử dụng "setTranslation" với Chế độ xem (đây là btnSwipe ImageView), có lỗi: "phương thức setTranslationX là không xác định cho loại Xem" lỗi tương tự cho ImageView. bất kỳ ý tưởng? – iversoncru

+0

Cấp API của bạn là gì? Nếu nó nhỏ hơn 11, thì bạn sẽ không có chức năng này. – Brianide

3

Bạn cần sử dụng PagerAdapter để vuốt tính năng. Một cái gì đó như thế này:

public class FullScreenImageAdapter extends PagerAdapter { 

//Stores all the image paths 
private ArrayList<String> _imagePaths; 

......... 


@Override 
    public Object instantiateItem(ViewGroup container, int position) { 
//This method is called each time user swipes the screen 
//Write suitable code to display next image on the screen 
} 

...... 

} 

Đây là liên kết cho tài liệu chính thức.

http://developer.android.com/training/animation/screen-slide.html http://developer.android.com/reference/android/support/v4/view/PagerAdapter.html

Dưới đây là liên kết cho một hướng dẫn tuyệt vời về hình ảnh trượt

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

+0

Tôi không cần phải di chuyển trang. Tôi chỉ cần di chuyển các lần xem hình ảnh trên Vuốt (từ trái sang phải) ... Khi hình ảnh chuyển sang bên phải, chỉ cần chuyển hoạt động. Tôi không cần PageAdapter hoặc ViewFlipper khi họ transists toàn bộ trang ... –

+0

Oh..how về việc sử dụng ListView nằm ngang? Điền vào bộ điều hợp ListView nằm ngang của bạn với hình ảnh và bố cục cho mỗi Mục danh sách là một ImageView. –

+0

@AbhishekV Anh ấy nói anh ấy chỉ có một chế độ xem hình ảnh và anh ấy muốn vuốt nó bằng cách sử dụng TouchEvents. –

Các vấn đề liên quan