HorizontalScrollView oder Karussell?

8

Ich möchte ein HorizontalScrollView erstellen, aber mit einigen "Effekten", wie diesem Beispiel oder dieses andere Beispiel . Die Sache ist, dass ich nicht weiß, wie viele Gegenstände ich benutzen muss; Ich bekomme das ImageView von einer API, also sollte es dynamisch sein. Wie kann ich diesen Effekt erzielen, wenn er ausgewählt wird, wird er größer mit dem TextView darunter? Das nächste Beispiel, das ich auf SO gefunden habe, ist hier . Das ist genau das, was ich brauche, aber ich habe die Antwort getestet und es funktioniert nicht für mich ... aber das Bild von der Frage ist genau das, was ich will. Kann mich jemand dazu führen?

Nehmen wir an, ich teste es mit 5 ImageView NUR FÜR TESTEN , also wäre ein Beispiel, wie diese ImageView dynamisch hinzugefügt werden, auch für mich gut.

Ein anderes Beispiel wäre Snapchat APP , aber der Unterschied ist, dass ich einen Effekt hinzufügen möchte wie make es ist größer oder so.

BEARBEITEN

Ich möchte ein Beispiel dafür bekommen, wie man ein benutzerdefiniertes HorizontalScrollView mit einem Layout (Adapter) macht und das Wichtigste, wenn es möglich ist, dem angeklickten einen Effekt hinzuzufügen, und ich möchte den Adapter, weil ich es brauchen werde bekomme den Gegenstand natürlich geklickt. Die Sache, von der ich denke, dass ich RecycleView als @UncaughtException verwenden sollte, sagte mir, weil ich nicht weiß, wie viele Bilder ich bekommen werde und ich muss meine APP aufsetzen, also denke ich, das ist die Lösung.

>

Es wäre eine Mischung zwischen Snapchat HoritzontalScrollView und Dieses Bild aus einer SO-Frage

    
Skizo-ozᴉʞS 19.10.2015, 16:58
quelle

2 Antworten

3

Schritt 1:

Zeigen Sie die Bilder horizontal in einem ViewPager an.

>

Schritt 2:

Wenden Sie die ScaleAnimation Klasse auf das angeklickte Objekt an, um es zu vergrößern . Dies kann in der Methode instantiateItem() der ViewPager s PagerAdapter erfolgen.

Außerdem gibt es einige gebrauchsfertige Open-Source-Widgets wie CoverFlow und FancyCoverFlow . Sie können den Quellcode überprüfen, um zu sehen, wie sie funktionieren.

BEARBEITEN:

Zunächst sollten Sie sich bei der Frage, wie Sie mit einer unbekannten Anzahl von Bildern umgehen, bewusst machen, dass in allen Widgets ( ListView , GridView , ViewPager usw.) die Anzahl der Objekte von der API abhängt ist zunächst immer unbekannt, dh es wird bekannt, wann die API-Antwort eingeht. Wenn Sie also zum ersten Mal ViewPager auf normale Weise implementieren, werden Sie sehen, wie dies gehandhabt wird. Grundsätzlich müssen Sie ein Adapter und ein Modellobjekt verwenden, um die ViewPager oder ListView zu füllen. Die API-Antwort wird entweder JSON oder XML sein, und nach der Analyse wissen Sie die genaue Anzahl der Elemente.

Ich denke, Sie sollten damit beginnen, zunächst ViewPager auf normale Weise zu implementieren. Hierfür stehen zahlreiche Beispiele zur Verfügung. Zwei interessante sind dieser und dieser . Sie sind interessant für Ihren Fall, weil sie auch Beispielcode enthalten, wie man das Bild vergrößert.

Kommen wir nun zum zweiten Problem: Wie vergrößern wir das Bild? Eine Möglichkeit besteht darin, die Klasse ScaleAnimation zu verwenden. Angenommen, Sie möchten ein Bild um 100% um sein Zentrum herum vergrößern:

%Vor%

Ich würde diesen Code für das Bild in der Methode instantiateItem() von ViewPager 's PagerAdapter verwenden. Das sollte funktionieren. Oder Sie können die Zoom-Animation in einem der beiden vorherigen Beispiele ausprobieren.

Ich fürchte, Sie müssen versuchen, anhand dieser Beispiele ein funktionierendes Projekt zu erstellen. Dann können wir weitere Probleme besprechen, denen Sie gegenüberstehen. Ich bin mir sicher, dass dies ganz einfach gemacht werden kann, und ich weiß, dass Sie es schaffen können. Am besten ...

EDIT 2:

Wie Sie anhand der beiden Beispiele, die Sie angegeben haben, dieses und dies ? Ist das wonach Sie suchen? Und bringt es Sie näher zur Lösung des Problems?

    
Y.S. 19.10.2015, 18:01
quelle
6

In deinem Fall kannst du definitiv ViewPager verwenden, aber wenn ich du wäre, würde ich für RecyclerView mit einem LinearLayoutManager gehen und seine Ausrichtung auf Horizontal setzen, also brauchst du kein HorizontalScrollView , und mit RecyclerView bekommst du auch das adapter was du suchst ..

Nun, um scale oder andere Effekte auf click zu zeigen, um sie von anderen zu unterscheiden, können Sie Animate auf diese bestimmte Ansicht,

Ich habe einen Demo-Code dafür geschrieben, hier die erforderlichen Dateien posten, lassen Sie mich wissen, ob Sie das wollen,

Aktivität

%Vor%

Aktivitätslayout

%Vor%

Adapter

%Vor%

Adapterzeilenlayout

%Vor%

Anders als Sie können auch TwoWayView verwenden, das die Funktionalität zur Implementierung von HorizontalListView ,

bietet

Oben ist nur ein Demo-Code, der einige Verbesserungen erfordern kann, lassen Sie mich wissen, ob das hilft oder weiter fragt ...

Auch die Screenshots der Ausgabe hinzufügen ..

    
Satyen Udeshi 27.10.2015 12:07
quelle