2011-07-02 35 views

Trả lời

6

Sử dụng GestureDetector trong mỗi hàng và tự quấn nội dung hàng trong một ViewFlipper. Trên một swipe, chuyển đổi trẻ em của ViewFlipper.

Tôi có một ViewSwiper kết hợp một GestureDetectorViewFlipper, nhưng nó được thiết kế để làm việc trong hai hướng (thí dụ, từ hàng thường xuyên, một swipe trái hoặc đúng sẽ chuyển sang hành động), mà có thể hoặc có thể không được mong muốn. Tuy nhiên, nó sẽ cung cấp cho bạn một ý tưởng về cách thức này có thể làm việc.

+0

Cảm ơn phản hồi của bạn. Tôi đã tìm thấy một giải pháp tương tự cho bạn. http://goo.gl/WpFEi Các bài kiểm tra đầu tiên phản hồi một kết quả rất tốt nhưng laggy. Tôi nghĩ rằng giải pháp này cần một chút tùy biến - nhưng tôi nghĩ nó sẽ hoạt động! Cảm ơn – Superroot

+0

Tính năng này có hoạt động với Android 2.1+ GestureDetector không? –

+0

@CodeDroid: Does * what * "hoạt động cho Android 2.1+ GestureDetector"? – CommonsWare

1

Tôi đã làm điều gì đó tương tự với những gì bạn cần - bạn có thể tìm thấy một số thông tin về there. Tôi đang làm một số công cụ thủ công ở đó nhưng nó hoạt động tốt đẹp. Để thuận tiện cho bạn ở đây là mã tôi đã sử dụng:

OnTouchListener gestureListener = new View.OnTouchListener() { 

    private int padding = 0; 
    private int initialx = 0; 
    private int currentx = 0; 
    private ViewHolder viewHolder; 

    public boolean onTouch(View v, MotionEvent event) { 

     if (event.getAction() == MotionEvent.ACTION_DOWN) { 
      padding = 0; 
      initialx = (int) event.getX(); 
      currentx = (int) event.getX(); 
      viewHolder = ((ViewHolder) v.getTag()); 
     } 

     if (event.getAction() == MotionEvent.ACTION_MOVE) { 
      currentx = (int) event.getX(); 
      padding = currentx - initialx; 
     } 

     if (event.getAction() == MotionEvent.ACTION_UP || 
      event.getAction() == MotionEvent.ACTION_CANCEL) { 
      padding = 0; 
      initialx = 0; 
      currentx = 0; 
     } 

     if (viewHolder != null) { 
      if (padding == 0) { 
       v.setBackgroundColor(0xFF000000); 
       if (viewHolder.running) 
        v.setBackgroundColor(0xFF058805); 
      } 
      if (padding > 75) { 
       viewHolder.running = true; 
       v.setBackgroundColor(0xFF00FF00); 
       viewHolder.icon.setImageResource(R.drawable.clock_running); 
      } 
      if (padding < -75) { 
       viewHolder.running = false; 
       v.setBackgroundColor(0xFFFF0000); 
      } 
      v.setPadding(padding, 0, 0, 0); 
     } 
     return false; 
    } 
}; 
Các vấn đề liên quan