2017-05-27 5 views
0

In meiner Tätigkeit habe ich eine Listview mit einem benutzerdefinierten Adapter, der einen ArrayAdapter erweitert. Jetzt ist meine Listenansicht wie die Startseite von Instagram oder Facebook. Es gibt viele Bilder, die von Benutzern gepostet wurden. Jede Listenansicht-Elementhöhe entspricht ungefähr der Höhe des Bildschirms. Was ich tun möchte, ist zu zählen, für wie viele Millisekunden ein Benutzer ein Bild anschaut. Dies bedeutet, wie stark das Bild auf dem Bildschirm angezeigt wird.Zeit Bild ist auf dem Display Android

Kann jemand helfen? Vielen Dank.

+0

Verwenden Sie eine Timertask und wenn Benutzer scrollt starten Sie es neu. –

+0

Aber was ist, wenn er nur ein wenig scrollt und das Bild noch voll sichtbar ist? – Muni

+0

check for getItem –

Antwort

0

Sie können die Zeit mit der Timer-Klasse zählen.

  • Starten Sie den Timer von Anfang an.
  • Überprüfen Sie das derzeit sichtbare Element mit getFirstVisiblePosition() in jeder Rolle mit OnScrollListener.
  • Wenn die Position geändert wird, erhöhen Sie die Anzeigezeit des entsprechenden Elements und setzen Sie den Timer zurück.
  • Wenn Elemente teilweise sichtbar sind, können Sie die sichtbaren Teile beider Elemente mit listItem.getTop() und listItem.getBottom() und davon ausgehen, dass der Benutzer Artikel jetzt mit höheren sichtbaren Teil betrachtet. (Sie sagte: „Jede Listenansicht Artikel Höhe ist approximal die Höhe des Bildschirms“ So muss es zu einer Zeit von zwei Elementen maximal sein.)

Hinweis: Wenn die Anzeigezeit eines Artikel überprüft, don‘ Vergessen Sie nicht, den Wert aus dem Timer hinzuzufügen, wenn es sich um das aktuelle Element handelt.

+0

Aber wenn ich nach unten scrolle, kann es passieren, dass das erste sichtbare Bild fast nicht sichtbar ist, und das zweite Bild ist fast vollständig sichtbar, also sehen Sie technisch gesehen das zweite nicht. – Muni

+0

Ich verstehe. Ich habe die Antwort aktualisiert. –