Slide In-Button-Effekt von List View Element für Android

Ich bin Porting eine iPhone-App in Android-App und eine der Schwierigkeiten ist die Schaffung von Funktionalitäten, die auf iPhone geboren sind.

Ich habe eine native Funktionalität des iPhone gefunden: Wenn der Benutzer die Dia-Berührung auf einem aufgeführten Element in der Listenansicht ausführt, erscheint eine Löschtaste.

  • Tabs von TabLayout nicht angezeigt
  • ADB-Push-P Schlechte Dateideskriptor
  • Was ist der Unterschied zwischen ImageView.ScaleType.CENTER_INSIDE und FIT_CENTER?
  • Android XML-Werte - String Array :: Platzieren eines Zitats im Wert?
  • Die Aktivität hat das Fenster com.android.internal.policy.impl.PhoneWindow$DecorView@46029dd0 ausgelaufen, das ursprünglich hier hinzugefügt wurde
  • Robolectric sagt "AndroidManifest.xml nicht gefunden"
  • Gibt es eine Version dafür in android? Kann es verwendet und wiederverwendet werden?

  • Über "_id" -Feld in Android SQLite
  • Wie bekomme ich Inpustream als Antwort in Volley Library
  • Handling InterruptedException beim Warten auf ein Exit-Signal (Bug in Android?)
  • Wie kann ich Text von WhatsApp aus meiner App teilen?
  • Wie implementiere ich Folie, um Aktionen in recyclerview zu zeigen?
  • Was ist der Zweck von FrameLayout und in welchem ​​Szenario sollten wir es verwenden?
  • 4 Solutions collect form web for “Slide In-Button-Effekt von List View Element für Android”

    Das ist nur etwas komplizierter zu erreichen. Dies ist, was ich tun würde, reden von einer höheren Ebene.

    1. Erstellen Sie eine benutzerdefinierte ViewGroup / Layout, um ein Listenelement zu halten. In diesem Layout haben Sie Ihre Textzeilen Bilder oder was auch immer Sie haben und auch die Löschtaste. Sie hören hier auch auf Gesten, um die Löschtaste zu verbergen oder zu öffnen.

    2. In deinem Listenadapter musst du verfolgen, welches Item die Löschtaste zeigt und was nicht ist. Außerdem müssen Sie einen Klick-Listener auf jede der Listenelement-Löschtasten anwenden. Jedes Mal, wenn Sie diese Zustände auf dem Listenelement zuordnen, sollten Sie SetTag (…) setzen und die Position des Listeneintrags speichern, so dass Sie bei der Klickung erfahren können, welche Artikelnummer gelöscht werden soll.

    3. Nach dem Löschen müssen Sie die Liste aktualisieren, damit sie wirksam wird. Je nachdem, welche Art von Adapter Sie verwenden, wird das bestimmen, wie Sie den Adapter aktualisieren.

    Hoffentlich macht das Sinn. Aber ich denke definitiv, das ist der einfachste Weg, da ich das schon ein paar Mal mit ähnlicher Funktionalität gemacht habe.

    Ich vermute, Sie könnten entweder versuchen, Geste Zuhörer über die Listview selbst zu implementieren, aber es könnte schwer sein, die richtige ID zu bekommen. Da ich es selbst nicht gemacht habe, kann ich nicht genau antworten.

    Andernfalls könntest du deiner eigenen Ansicht als das Item in der Listenansicht und die haben eine Geste Zuhörer auf alle childs.

    Fling Gestenerkennung im Rasterlayout Für einige grundlegende Lese- und Codebeispiele

    Ich glaube nicht, dass es irgendeine eingebaute API-Funktion gibt, dies zu tun.

    Allerdings wäre ein Workaround, um die onFling-Funktion auf der Ansicht in listitem zu verwenden. Sie könnten in der Lage sein, dies zu nutzen, um zu erreichen, was Sie wollen.

    So realisiere ich diesen Effekt. Wir haben eine ListView lvSimple und wir fügen onTouchListener zu unserem lvSimple hinzu. Das ist mein Arbeitscode.

    float historicX = Float.NaN, historicY = Float.NaN; static final int DELTA = 50; enum Direction {LEFT, RIGHT;} ... ListView lvSimple = (ListView) findViewById(R.id.linLayout); ... lvSimple.setOnTouchListener(new OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { // TODO Auto-generated method stub switch (event.getAction()) { case MotionEvent.ACTION_DOWN: historicX = event.getX(); historicY = event.getY(); break; case MotionEvent.ACTION_UP: if (event.getX() - historicX < -DELTA) { FunctionDeleteRowWhenSlidingLeft(); return true; } else if (event.getX() - historicX > DELTA) { FunctionDeleteRowWhenSlidingRight(); return true; } break; default: return false; } return false; } }); 

    Wo die Funktion FunctionDeleteRowWhenSlidingLeft () aufruft, wann wir nach links schieben, FunctionDeleteRowWhenSlidingRight – nach rechts. In dieser Funktion müssen Sie Code für Animation einfügen.

    Ps Es tut mir leid für mein schlechtes Englisch. Immer froh zu helfen.

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.