2016-04-11 3 views
0

Я хотел бы использовать функцию салфетки (onFling) жестов Android. У меня есть смежные снимки до chancge в другую картинку, в случае прокрутки. (Как и на картинке) Он должен работать независимо от того, в каком направлении игрок протирает пальцем. Не могли бы вы дать мне ссылку? Или любая идея, какие компоненты я должен использовать? enter image description hereКак использовать салфетки на разных объектах

ответ

0

Поскольку ваш жест кажется применить предпосылку, что он должен:

  • Жест должен включать все смежные виды.
  • Жест имеет прямой линейный begginning и конец
  • Жест является одним движением
  • Жест не конфликтует с другими подобными жестами
  • Вы можете прочитать на «MotionEvent», и слушателем onTouch для представлений.

    Единственный флаг private static View beganOn; в родительском классе (я предполагаю действие). Затем:

    public void onTouch(View v, MotionEvent m){ 
        if(beganOn!=null){ 
         begaOn = v; 
         return; 
        } else { 
         // Where the view Tag, is an Integer to state what number it is in the sequence. 
         doSelectionOfViews(beganOn.getTag(),v.getTag()); 
         begaOn = null; 
        } 
    } 
    
    0

    переопределить метод onfling() для распознавателя жестов. Под этим вы сможете получить направление движения. Теперь возьмите два счетчика для обоих направлений и увеличьте его (например, счет ++) в правом/левом пробеле и наоборот. Ниже я отправляю код, с помощью которого вы сможете создать этот круговой индикатор. Независимо от того, что вы хотите сделать выделенным, вам нужно передать только индекс.

    public void updateIndicator(int currentPage) { 
        image_indicator.removeAllViews(); 
        DotsScrollBar.createDotScrollBar(this, image_indicator, currentPage, 5); 
    } 
    

    Здесь image_indicator - это линейный макет, определенный в xml.

    public static class DotsScrollBar 
    { 
        LinearLayout main_image_holder; 
        public static void createDotScrollBar(Context context, 
          LinearLayout main_holder, int selectedPage, int count) 
        { 
         for (int i = 0; i < count; i++) { 
          ImageView dot = null; 
          dot = new ImageView(context); 
          LinearLayout.LayoutParams vp = new LinearLayout.LayoutParams(
            LinearLayout.LayoutParams.WRAP_CONTENT, 
            LinearLayout.LayoutParams.WRAP_CONTENT); 
          vp.setMargins(8, 8, 8, 8); 
          dot.setLayoutParams(vp); 
          if (i == selectedPage) { 
           try 
           { 
            dot.setImageResource(R.drawable.page_hint_pre); 
           } 
           catch (Exception e) 
           { 
    
           } 
          } else 
          { 
            dot.setImageResource(R.drawable.page_hint_def); 
          } 
          main_holder.addView(dot); 
         } 
         main_holder.invalidate(); 
        } 
    } 
    

    Передайте индекс в методе upDateIndicator(), чтобы выделить этот конкретный инсактор.

    Смежные вопросы