Verschiebe die Spalte von Gridview bei Berühren dieser Spalte nach oben und unten

7

Ich habe eine 3x3 Rasteransicht. Stellen Sie sich vor wie unten.

%Vor%

JETZT WAS ICH MÖCHTEN

Ich möchte, dass sich die Spalte der Rasteransicht bei Berührung nach oben und unten verschiebt.

Betrachten Sie die erste Spalte einer Rasteransicht. Das ist

%Vor%

Nun, wenn ich irgendwo in dieser Spalte berühre, entweder auf 1 oder auf 4 oder auf 7 und wische in irgendeine Richtung wie oben oder unten. Dann möchte ich die Spalte um 1 oder 2 Stellen verschieben.

Lassen Sie mich das klarstellen

Wenn ich nach oben wische, durch Berührung auf 7. Es sollte so aussehen

%Vor%

Oder: Wenn ich die zweite Spalte berühre und sie in die untere Richtung verschiebe, sieht sie wie folgt aus:

%Vor%

Und wenn ich die Spalte für 2 Rasterzellen verschiebe, sieht es wie

aus %Vor%

Für jede Spalte sollte ich in der Lage sein, die Spalte um eine oder zwei Zellen zu verschieben, je nachdem, wie oft ich die Spalte scrolle.

Noch eine Sache Wenn ich die Spalte wenig scrolle und wenn es nicht genau zu irgendeiner Gitterzelle an der gewünschten Position passt, sollte es automatisch an die Gitterzelle passen, die nahe an die Position passt.

Ich habe zu viele Fragen hier auf Stapelüberlauf und frage ein Google-Los. Aber ich bekomme nicht, was ich genau will.

Wenn ich es nicht gut erklärt habe, dann sag es mir. Ich werde versuchen, mehr zu erklären. Jede Idee, jeder Hinweis oder jeder Trick wäre nennenswert.

BEARBEITEN

Wenn ich die Spalte um mehr als drei Raster verschiebe, verschiebt sich die Spalte beim Loslassen der Berührung auf nur zwei Elemente . Genau so

%Vor%

Jede Idee zum Anpfiff wird spürbar

sein

Danke

    
Bhargav Thanki 01.08.2017, 07:04
quelle

3 Antworten

6

Um das zu tun, was du verlangst, musst du die Leinwand von GridView übernehmen, den Bereich von der zu berührenden Spalte nehmen und deine eigene Zeichnung für das Ziehen, Schleudern usw. machen. Sobald die Bewegung abgeschlossen ist, wirst du Sie müssen die Ansichten in der Spalte über GridView anpassen, um die Buchhaltung sauber zu halten. Ich würde auf die Online-Dokumentation schauen, die die Ansichtsbewegung diskutiert. "Ziehen und Skalieren" wäre ein guter Anfang.

Bei diesem Ansatz wird es einige "gotchas" geben. Wenn Sie nur versuchen, dies als eine Technik zu lernen, würde ich sagen, dass Ihre Vorgehensweise in Ordnung ist. Wenn Sie den Effekt erzielen und die zugrundeliegende Implementierung von GridView wie vorgesehen verwenden möchten (Scrollen, Kanteneffekte, Umbrüche usw.), schlage ich einen anderen Ansatz vor.

Anstelle eines einzelnen 3x3 GridView könnten Sie einen Schein von GridView aufbauen, indem Sie drei 1x3 Rasteransichten nebeneinander ausrichten. (Die Rasteransichten sind 1x11, um die maximale Ausdehnung der vertikalen Objektträger zu berücksichtigen.) Jede Rasteransicht kann von einem einzelnen Adapter unterstützt werden, wenn sie für die Unterstützung mehrerer Rasteransichten codiert ist. Da es sich bei jeder Spalte um eine eigene Rasteransicht handelt, kann jede Spalte unabhängig von den anderen verschoben werden.

Der Vorteil dieses Ansatzes besteht darin, dass Sie den gewünschten Effekt erzielen, ohne die zugrundeliegende Klasse GridView zu verzerren. Derselbe Ansatz kann Ihre vorhandene Methode verwenden, die eine Schaltfläche verwendet.

Ich hoffe, das ist hilfreich für Sie.

Ich war neugierig, was nötig wäre, um meinen Vorschlag umzusetzen. Im Folgenden finden Sie eine Beispiel-App mit der oben beschriebenen drei GridView -Implementierung und einem Video desselben.

MainActivity.java

%Vor%

GridViewAdapter.java

%Vor%

activity_main.java

%Vor%     
Cheticamp 04.08.2017, 12:43
quelle
2

Wenn ich die Spalte für mehr als 3 Rasterzellen verschiebe, bewegt sie sich oder nicht. wenn es sich bewegt, wie viele Zellen es bewegt?

    
SAI ESWAR 01.08.2017 07:26
quelle
0

Ich habe keinen Code-Block, aber ich kann erklären, wie Sie so Task

erreichen können

Sie müssen ein Gitter mit leeren Zellen wie diesem erstellen

ist - & gt; - - - - - - - - -

2. - & gt; - - - - - - - - -

3. - & gt; - - - - - - - - -

4. - & gt; - - - 1 2 3 - - -

5. - & gt; - - - 4 5 6 - - -

6. - & gt; - - - 7 8 9 - - -

7. - & gt; - - - - - - - - -

8. - & gt; - - - - - - - - -

9. - & gt; - - - - - - - - -

Jetzt wischen Sie nach oben, holen Sie sich alle Elemente der gleichen Spalte und gehen Sie dann nach oben

hoffe, diese Antwort erfüllt Ihre Anforderung

    
Atam_Jeet Singh 04.08.2017 07:56
quelle