ListView überlagert ein anderes Layout beim Scrollen

8

Eigentlich weiß ich nicht, wie es richtig heißt - Overlay, Parallax oder slideUP, was auch immer, ich habe eine Aktivität namens "cafe details", die einen Container (LinearLayout) mit Kopfinformationen (Name, Mindestpreis, Lieferzeit min usw.) und einen anderen Container (ViewPager), der eine ExpandableListView mit etwas Information (Menüs & Amp; Schüsseln) enthält und alles, was ich tun möchte, ist, meinen Viewpager nach oben zu scrollen, um die Kopfzeile zu überdecken (oder zu überlagern) >

Ein ähnlicher Effekt (aber mit Parallax, den ich nicht verwenden muss) sieht so aus

Ich kann erkennen, wenn Benutzer die Listenansicht nach unten oder oben scrollen, aber wie kann ich Container mit ViewPager verschieben, um andere Container zu überlagern? Bitte gib mir Ideen, Grüße.

UPD Ich habe eine Vielzahl von Möglichkeiten ausprobiert, um es zu implementieren und alle von ihnen sind leider nicht geeignet. So, jetzt bin ich zur nächsten Variante gekommen - Scroll-Listener zu ListView hinzufügen, ScrollY-Position der Ansicht berechnen und dann basierend darauf den Viewpager auf Y-Achse verschieben, indem ich setTranslationY (); Hier ist ein Code

1) ViewPager-Fragment

%Vor%

2) MainActivity

%Vor%

Diese einfache Lösung hat leider ein Problem - es blinkt und zuckt (ich weiß nicht, wie ich es richtig nennen soll), wenn man langsam scrollt. Also setTranslationY () habe ich einen objectAnimator verwendet:

%Vor%

Ich mag diese Lösung nicht, weil 1) sowieso die Größe von viewpager mit Verzögerung ändert, nicht sofort. 2) Ich denke nicht, dass es eine gute Idee ist, jedes Mal Objekte von ObjectAnimator zu erstellen, wenn ich meine ListView scrolle. Brauche deine Hilfe und neue Ideen. Grüße.

    
whizzzkey 22.05.2015, 12:42
quelle

2 Antworten

1

Haben Sie CoordinatorLayout aus der Design-Support-Bibliothek dieses neuen Androids probiert? Es sieht so aus, als ob es das ist, was du brauchst. Schau dir dieses Video von 3:40 an oder dieser Blogbeitrag .

    
Gintas_ 30.05.2015, 15:02
quelle
2

Ich gehe davon aus, dass Sie die obere Kopfzeile (die ImageView ist ein Kind der Kopfzeile) basierend auf dem scrollY der ListView / ScrollView scrollen, wie unten gezeigt:

%Vor%

Wenn Sie die Kopfzeile / das Bild auf eine bestimmte Dimension kleben und das Scrollen fortsetzen möchten, ohne es zu verschieben, können Sie den Wert von mMinHeaderTranslation ändern, um diesen Effekt zu erzielen.

%Vor%

Die obigen Codefragmente beziehen sich auf meine Demo, aber ich denke, dass sie immer noch allgemein genug ist.

Wenn Sie interessiert sind, können Sie meine Demo ausprobieren Ссылка

    
boxme 24.05.2015 08:21
quelle
yii\base\ErrorException
Copied! Copy Stacktrace Search Stackoverflow Search Google Error

PHP Core Warningyii\base\ErrorException

PHP Startup: Unable to load dynamic library 'mongodb.so' (tried: /usr/lib64/php/modules/mongodb.so (/usr/lib64/php/modules/mongodb.so: cannot open shared object file: No such file or directory), /usr/lib64/php/modules/mongodb.so.so (/usr/lib64/php/modules/mongodb.so.so: cannot open shared object file: No such file or directory))

$_GET = [
    'id' => '395364',
    'url' => 'listview-overlay-another-layout-when-scroll',
];

$_COOKIE = [
    'advanced-frontend' => '346f15628946d9caff100428529ecedf',
    '_csrf-frontend' => 'b5dc687b3872118fa2e0e1b249e081f90c4ac4072343ff772fcca7385e6e7952a:2:{i:0;s:14:"_csrf-frontend";i:1;s:32:"jZtozTs3rWlYeVJ-2etxu2vth7pGvhwi";}',
];

$_SESSION = [
    '__flash' => [],
];