coverflow기능이 있는 앱을 개발중입니다.

자동 fling이 되도록 하려하고 있는데 어떤방식으로 넘겨야할지 모르겠습니다...


아래는 터치이벤트 부분인데 이부분에서 끄집어내어 handler를 통해 해당시간마다 돌리고 싶습니다....

(이게 가능한지도 사실 잘 모르겠습니다........)


@Override

public boolean onTouchEvent(MotionEvent event) {

switch (event.getAction()) {

case MotionEvent.ACTION_DOWN:

mIsSingleTap = event.getPointerCount() == 1;

if (mIsSingleTap)

mStartX = event.getX(0);

mBeginningCover = mSelectedCoverView.getNumber();

mStartScrollX = event.getX(0) + mScrollView.getScrollX();

break;


case MotionEvent.ACTION_MOVE:

int scrollOffset = (int) (mStartScrollX - event.getX(0));

int xOffset = (int) Math.abs(event.getX(0) - mStartX);


// If finger moves too much, not a single tap anymore:

mIsSingleTap = mIsSingleTap && (xOffset < 20);


if (!mIsSingleTap) {

mScrollView.scrollTo(scrollOffset, mScrollView.getScrollY());


int newCover = scrollOffset / mConfig.COVER_SPACING;


if (newCover < 0)

newCover = 0;

else if (newCover >= mNumberOfImages)

newCover = mNumberOfImages - 1;


if (newCover != mSelectedCoverView.getNumber()) {

setSelectedCover(newCover);

// Notify listener

if (null != mListener && null != mListener.get())

mListener.get().onSelectionChanging(this,

mSelectedCoverView.getNumber());

}

}


break;


case MotionEvent.ACTION_UP:

if (mIsSingleTap && 0 < mTouchedCovers.size()) {

int lowest = mTouchedCovers.first();

int highest = mTouchedCovers.last();

if (mSelectedCoverView.getNumber() < lowest)

setSelectedCover(lowest);

else if (mSelectedCoverView.getNumber() > highest)

setSelectedCover(highest);

else if (lowest <= mSelectedCoverView.getNumber()

&& highest >= mSelectedCoverView.getNumber()

&& null != mListener && null != mListener.get())

mListener.get().onSelectionClicked(this,

mSelectedCoverView.getNumber());


}

mScrollView.smoothScrollTo(mSelectedCoverView.getNumber()

* mConfig.COVER_SPACING, mScrollView.getScrollY());


if (mBeginningCover != mSelectedCoverView.getNumber()) {

// Notify listener

if (null != mListener && null != mListener.get())

mListener.get().onSelectionChanged(this,

mSelectedCoverView.getNumber());

}

// Clear touched covers

mTouchedCovers.clear();

break;

}

return true;

}


간단한 조언이나 답변이라도 감사히 받겠습니다.