SORU
18 Ocak 2010, PAZARTESİ


Bir kaydırma bittiğinde algılamak için Nasıl Android:

GestureDetector onScroll bu yöntemi kullanıyorum.SimpleOnGestureListener bir tuval üzerinde büyük bir bit eşlem ilerleyin. Zaman kaydırma sona erdi istediğim için yeniden düzenleme bitmap durumda kullanıcı istediği gidin daha ... kapalı kenar bit eşlem, ama göremiyorum nasıl tespit edileceği zaman kaydırma sona erdi (kullanıcının kaldırdı parmağını ekran).

e2.() getAction her zaman gibi görünüyor ama kimse yardım etmiyor yani 2 değerini döndürür. e2.getPressure basınç 0.13 düşecek gibi görünüyor zaman oldukça sabit değerler (0.25) dönüş için son çağrı onScroll kadar görünüyor. Basınçtaki bu azalma tespit edebilirim sanırım, ama bu kusursuz olmaktan uzak olacaktır.

Orada olmalı daha iyi bir yol: herkes yardımcı olabilir, lütfen?

CEVAP
29 EYLÜL 2010, ÇARŞAMBA


Sorunu çözdüm. Bu yardımcı olur umarım.

// declare class member variables
private GestureDetector mGestureDetector;
private OnTouchListener mGestureListener;
private boolean mIsScrolling = false;


public void initGestureDetection() {
        // Gesture detection
    mGestureDetector = new GestureDetector(new SimpleOnGestureListener() {
        @Override
        public boolean onDoubleTap(MotionEvent e) {
            handleDoubleTap(e);
            return true;
        }

        @Override
        public boolean onSingleTapConfirmed(MotionEvent e) {
            handleSingleTap(e);
            return true;
        }

        @Override
        public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
            // i'm only scrolling along the X axis
            mIsScrolling = true;                
            handleScroll(Math.round((e2.getX() - e1.getX())));
            return true;
        }

        @Override
        /**
         * Don't know why but we need to intercept this guy and return true so that the other gestures are handled.
         * https://code.google.com/p/android/issues/detail?id=8233
         */
        public boolean onDown(MotionEvent e) {
            Log.d("GestureDetector --> onDown");
            return true;
        }
    });

    mGestureListener = new View.OnTouchListener() {
        public boolean onTouch(View v, MotionEvent event) {

            if (mGestureDetector.onTouchEvent(event)) {
                return true;
            }

            if(event.getAction() == MotionEvent.ACTION_UP) {
                if(mIsScrolling ) {
                    Log.d("OnTouchListener --> onTouch ACTION_UP");
                    mIsScrolling  = false;
                    handleScrollFinished();
                };
            }

            return false;
        }
    };

    // attach the OnTouchListener to the image view
    mImageView.setOnTouchListener(mGestureListener);
}

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Baby Big Mouth

    Baby Big Mou

    5 Mart 2013
  • LG Mobile Global

    LG Mobile Gl

    2 EYLÜL 2010
  • xXGAMERrs_Xx

    xXGAMERrs_Xx

    31 Temmuz 2014