2016-07-06 14 views
0

Ich möchte eine dynamische Ansichten auf der X-und Y-Koordinaten und Höhe und Breite jeder Ansicht zu zeichnen. Nehmen wir ein Beispiel wie eine Veranstaltungshalle mit vielen Tischen. Also möchte ich alle Tabellen wie einen Button basierend auf X und Y und Höhe und Breite zeichnen.Re: Ich möchte eine dynamische Ansichten auf der X-und Y-Koordinaten und Höhe und Breite jeder Ansicht zeichnen

Das Hauptproblem, mit dem ich hier konfrontiert bin, ist Android-Geräte hat unterschiedliche Bildschirmauflösungen richtig. Wie kann ich das machen, bitte hilf mir.

Und ich möchte diese Ansicht klickbare Ansichten.

Bitte sehen Sie das Bild unten. enter image description here

Antwort

0

Sie können eine benutzerdefinierte Ansicht erstellen, Sie erhalten die Höhe und die Breite der Ansicht in Pixel auf dem OnMeasure. Dann können Sie die Tabelle an der richtigen Stelle auf dem OnDraw zeichnen. Schließlich können Sie Touch-Ereignisse auf Ihren Tischen auf dem OnTouch erkennen.

Hier ist ein Tuto über benutzerdefinierte Ansicht, aber Sie können viele andere auf Google finden. http://www.intertech.com/Blog/android-custom-view-tutorial-part-2-custom-attributes-drawing-and-measuring/

+0

danke für Ihre Antwort, ich überprüfte den Link, was Sie gesendet, aber dieser Link ist nicht mir ähnlich, um diese Aufgabe zu tun, was ich @sypotu – Nani536

0

Sie könnten eine GridView mit X- und Y-Abmessungen verwenden. Erstellen Sie ein Objekt für jeden gridViewLocation, der int x und int y enthalten kann, um den Speicherort zu speichern, und speichern Sie die Objekte in einer HashMap als Schlüssel, um die Elemente an einem bestimmten Speicherort leicht zu erhalten. Von hier aus können Sie displayMetrics verwenden, um die Breite und Höhe des Bildschirms zum Bearbeiten der Dimensionen der in der GridView platzierten Objekte abzurufen.

Um die Bildschirmgröße dynamisch anzupassen, können Sie die Bildschirmgröße, auf der Sie testen, fest codieren (Ihre Bildschirmbreite könnte z. B. X und Ihre Bildschirmhöhe Y sein. Diese Werte finden Sie beim Debuggen mit displayMetrics). Dann berechne einfach X2/X1 und Y2/Y1 (wobei X2 und Y2 die Bildschirmabmessungen des aktuellen Geräts sind, X1 und Y1 sind deine Abmessungen) und multipliziere diese Brüche mit der anfänglich gewünschten Breite und Höhe. Legen Sie das Layout entsprechend fest.

+0

danke für Ihre Antwort, gridview hat Eigenschaften wie die Anzahl der Spalten, aber in meinem Fall einige Raum gesamte Spalte/Zeile sollte leer sein .. Wie kann ich es tun, ich habe X-und Y-Werte, wie kann ich X und Y mit meinem Bildschirm berechnen und ich möchte alle ietms in diese Ansicht passen. @Steeno – Nani536

+0

Nur los von der Skizze, die Sie oben gezeichnet haben, können Sie Rahmenlayouts an leeren Stellen im Raster platzieren, wenn Sie sie leer haben müssen, oder die Parameter ändern. Verwenden Sie: 'FrameLayout.LayoutParams layoutParams' und Sie können die Breite und Höhe für eine bestimmte Zeile und Spalte entsprechend festlegen. Was die X- und Y-Berechnungen anbelangt, gehen Sie von dem aus, was ich oben gesagt habe. Nehmen Sie die Bildschirmhöhe und -breite mit 'DisplayMetrics dm = new DisplayMetrics' und' dm.widthPixels' mit 'dm.heightPixels'. Entscheiden Sie einfach, wie viele Spalten und Zeilen Sie möchten, und nehmen Sie den Bruchteil der angezeigten Metrik. – Steeno