Пользовательский эффект прокрутки для scrollview? - PullRequest
4 голосов
/ 16 марта 2011

Кто-нибудь знает, как сделать мою собственную функцию прокрутки, например, fling () или smoothScrollTo ()? У меня есть расширенный класс ScrollView, но я не могу узнать, как это сделать ...

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

эффект, на который я нацеливаюсь, похож на экран блокировки WP7, вы сбрасываете его с экрана вверх, если ваше прокручиваемое изображение не прокручивалось до самого конца, я хочу, чтобы оно «упало», и там я хочу, чтобы оно началось с и увеличивайте скорость до тех пор, пока она снова не достигнет начальной позиции.

Кто-нибудь может мне помочь или просто направить меня в правильном направлении?

Ответы [ 2 ]

3 голосов
/ 16 марта 2011

Вы можете получить желаемый эффект, установив другой интерполятор на скроллере.

Например, вы можете попробовать использовать AccelerateInterpolator.

е

Scroller myScroller = new Scroller(context, new AccelerateInterpolator());

EDIT: Тем не менее, обязательно прочитайте ответ из больших камней, поскольку мое предложение не поможет, если только вы не захотите создать свой собственный ScrollView (что не так сложно, так как у вас есть источник).

1 голос
/ 16 марта 2011

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

Вот пример об использовании Scroller и здесь Scroller источникcode .

К сожалению, я не знаю более простого способа ScrollView использовать ваш Scroller, кроме получения источника ScrollView и замены стандартного Scroller вашим.,Альтернативой является создание более простого пользовательского представления с прокруткой.

EDIT

Похоже, что эффект панели уведомлений Android.Если вам не нужно, чтобы он следовал за пальцем, а отвечал только на броски, это не должно быть слишком сложно, используя анимацию и GestureDetector.Что-то вроде:

касание или медленное движение -> анимация отскока назад;

достаточно быстрая анимация -> анимация скольжения;

Если вы хотите, чтобы оно следовалоfinger (как панель уведомлений Android), вам придется поиграть с рамкой прокрутки View, и я думаю, что она будет более сложной (хотя вы можете посмотреть, как они это сделали).

...