/ / Scrollen Sie langsam in einem ScrollView - Android, Scrollen, Scrollen

Blättern Sie langsam einen ScrollView nach oben - Android, Bildlauf, Bildlauf

Die Frage ist: "Wie scrolle ich in einem ScrollView nach oben, um es ganz langsam und langsam zu übersteigen"

In meinem speziellen Fall muss ich in 1-2 Sekunden nach oben scrollen. Ich habe versucht, die Interpolation manuell mit einem Handler (Aufruf von scrollTo (0, y)) durchzuführen, aber das hat überhaupt nicht funktioniert.

Ich habe diesen Effekt bei einigen Bookreader-Apps noch nicht gesehen, also muss es einen Weg geben, im sicher: D. (Text wird sehr langsam nach oben verschoben, um weiterlesen zu können, ohne den Bildschirm zu berühren und Eingaben vorzunehmen).

Antworten:

10 für die Antwort № 1

Bewegen Sie in 2 Sekunden die Bildlaufansicht in den Besitz von 2000

new CountDownTimer(2000, 20) {

public void onTick(long millisUntilFinished) {
scrollView.scrollTo(0, (int) (2000 - millisUntilFinished)); // from zero to 2000
}

public void onFinish() {
}

}.start();

26 für die Antwort № 2

Ich habe es mit dem Objektanimator gemacht (Verfügbar in API> = 3) und es sieht sehr gut aus:

Definieren Sie einen ObjectAnimator: final ObjectAnimator animScrollToTop = ObjectAnimator.ofInt(this, "scrollY", 0);

(this bezieht sich auf die Klasse, die Android 's erweitert ScrollView)

Sie können die Dauer nach Ihren Wünschen einstellen:

animScrollToTop.setDuration(2000); (2 Sekunden)

P.s. Vergiss nicht, die Animation zu starten.


10 für die Antwort № 3

Probieren Sie den folgenden Code aus:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB)
{
ValueAnimator realSmoothScrollAnimation =
ValueAnimator.ofInt(parentScrollView.getScrollY(), targetScrollY);
realSmoothScrollAnimation.setDuration(500);
realSmoothScrollAnimation.addUpdateListener(new AnimatorUpdateListener()
{
@Override
public void onAnimationUpdate(ValueAnimator animation)
{
int scrollTo = (Integer) animation.getAnimatedValue();
parentScrollView.scrollTo(0, scrollTo);
}
});

realSmoothScrollAnimation.start();
}
else
{
parentScrollView.smoothScrollTo(0, targetScrollY);
}

5 für die Antwort № 4

Hast du es versucht smoothScrollTo(int x, int y)? Sie können den Geschwindigkeitsparameter nicht einstellen, aber diese Funktion ist für Sie möglicherweise in Ordnung


0 für die Antwort № 5

Sie können die Timer- und TimerTask-Klasse verwenden. Sie könnten so etwas tun

scrollTimer = new Timer();
scrollerSchedule = new TimerTask(){
@Override
public void run(){
runOnUiThread(SCROLL TO CODE GOES HERE);
}
};
scrollTimer.schedule(scrollerSchedule, 30, 30);