0

Я заканчиваю свои живые обои, и он отлично работает, помимо проблем с производительностью, и теперь я применил сценарий, который помогает использовать салфетки и сенсорное обнаружение.Живые обои swiper gestures

public void onTouchEvent(MotionEvent touchevent) 

       { 
     SharedPreferences prefs = PreferenceManager 
       .getDefaultSharedPreferences(getBaseContext()); 
        if (prefs.getBoolean("Touch_lock_key",true)) 
        { 
          switch (touchevent.getAction()) 
          { 
            // when user first touches the screen we get x and y coordinate 
            case MotionEvent.ACTION_DOWN: 
            { 
             x1 = touchevent.getX(); 
             y1 = touchevent.getY(); 
             break; 
            } 
            case MotionEvent.ACTION_MOVE: 
            { 
             x2 = touchevent.getX(); 
             y2 = touchevent.getY(); 

             //right swipe 

             if (x1-x2< 0) 
             { 

              try { 

               mImagesArrayIndex++; 
               Thread.sleep(SeekBarPreference1.mCurrentValue1); 
              } catch (InterruptedException e) { 
               // TODO Auto-generated catch block 
               e.printStackTrace(); 
              } 
              } 

             // left swipe 
             if (x1-x2>0) 
             { 
              try { 

                mImagesArrayIndex--; 
                Thread.sleep(SeekBarPreference1.mCurrentValue1); 
               } catch (InterruptedException e) { 
                // TODO Auto-generated catch block 
                e.printStackTrace(); 
               } 
             } 


             break; 
            } 
          } 
          return; 
       } 

       } 

Как вы можете видеть, я использую функцию -getaction для управления касаниями и салфетками. Он работает, но не так, как я ожидал. Проблемы:

  1. ультрачувствительный на ощупь и становится раздражающим при использовании этих живых обоев.

  2. не следует вправо-вправо.

  3. Слева направо влево-вправо не останавливается, когда пальцем проведите пальцем по экрану.

Что я хочу:

  1. любой другой салфетки жест менеджер сценарий, который мог бы помочь моему делу (живые обои - никакой активности не участвует здесь)

  2. гладкий пролистните эффект, как мы посмотрите на любые живые обои, возьмите titanfall LW в качестве образца.

Вот видео, которое может помочь вам разобраться в ситуации:

https://drive.google.com/file/d/0B44QwXQHh5irOGlXNDNpOThYb3c/view?usp=sharing

ответ

0

Я нашел решение, этот код работает так же, как и предыдущий, я просто добавил некоторые изменения, касающиеся точности и осязание слежение ..

@Override 

    public void onTouchEvent(MotionEvent event) { 

      //when user touches the screen 
      if(event.getAction() == MotionEvent.ACTION_DOWN) 
      { 
       //reset deltaX and deltaY 
       deltaX=0; 

       //get initial positions 
       initialX = event.getRawX(); 
       initialY = event.getRawY(); 
      } 

      //swipe gestures tracking 
      if(event.getAction() == MotionEvent.ACTION_MOVE)  
      {  
       deltaX = event.getRawX() - initialX;  
       deltaY = event.getRawY() - initialY;  

       if(deltaY < 0) 
       {  
        //Actions UP 
       } 
       else 
       {  
        //Actions DOWN 
       } 

       if(deltaX < 0) 
       { 
        initialX = event.getRawX(); 
        // actions RIGHT 
        } 

       } 

       else 
       { 
        initialX = event.getRawX(); 
        // actions LEFT 
         } 
       } 


       return; 


    } 
    } 

вот результат:

https://drive.google.com/file/d/0B44QwXQHh5irZUtEM3ZZQmRHcFk/view?usp=sharing


Я надеюсь, что это окажется полезным & ... СЧАСТЛИВЫЙ КОДИРОВАНИЕ!

1

onTouch() вызываются несколько раз для любого жеста, так что вы приращение гораздо больше, чем вы хотите , Начало было бы использовать GestureDetector и GestureDetector.SimpleGestureListener.

Sic:

private GestureDetector mDetector 
... 
@Override 
protected void onCreate(...) { 
    ... 
    mDetector = new GestureDetector(this, mGestureListener); 
    setOnTouchListener(new CustomTouchListener()); 
    ... 
} 
... 
private class CustomTouchListener implements View.OnTouchListener { 
    @Override 
    public boolean onTouch(View v, MotionEvent e) { 
     return mDetector.onTouchEvent(e); 
    } 
} 
... 
private GestureDetector.SimpleOnGestureListener mGestureListener 
     = new GestureDetector.SimpleOnGestureListener { 
    @Override 
    public boolean onDown(MotionEvent e) { 
     ... 
    } 
    // the IDE will create all these methods for you 
    //EDIT: I forgot SimpleOnGestureListener isn't abstract, so it won't do this. OnGestureListener is, so the IDE will. 
}; 

Основная последовательность взмахом выглядит следующим образом

onDown() 
onScroll() 
onScroll() 
.... 
onScroll() 
onFling() 

Так что, если вы действительно хотите, чтобы справиться с Жест себя, события вы ищете являются onDown и на Fling (вы можете сделать это с помощью onTouch ACTION_DOWN и ACTION_UP, но SimpleOnGestureListener дает вам больше функций).

Но я действительно предлагаю смотреть на представление, которое уже обрабатывает все это для вас, как ViewPager

+0

спасибо !! Я попробую это прямо сейчас :) –

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