Gibt es eine Möglichkeit, eine Dreiecksform in einer XML-Datei anzugeben?
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="triangle">
<stroke android:width="1dip" android:color="#FFF" />
<solid android:color="#FFF" />
</shape>
Können wir das mit einer Pfadform oder so machen? Ich brauche nur ein gleichseitiges Dreieck.
Vielen Dank
Antworten:
In diesem Beitrag beschreibe ich, wie es geht. Und hier ist das XML-definierende Dreieck:
Lesen Sie meinen Beitrag, wenn etwas unklar ist oder Sie eine Erklärung benötigen, wie es aufgebaut ist. Es ist ein ausgeschnittenes Rechteck gedreht :) Es ist eine sehr intelligente und gut funktionierende Lösung.
BEARBEITEN: um einen Pfeil zu erstellen, der zeigt wie -> verwenden:
Und um einen Pfeil wie <zu erstellen, verwenden Sie:
quelle
Sie können hier weitere Optionen erhalten.
quelle
<string name="bottom_arrow">▼</string>
Sie können verwenden
vector
, um Dreieck wie dieses zu machenic_triangle_right.xml
Dann benutze es wie
Verwenden Sie zum Ändern der Farbe und Richtung
android:tint
undandroid:rotation
Ergebnis
Um die Form des Vektors zu ändern, können Sie die Breite / Höhe des Vektors ändern. Beispiel ändern Sie die Breite auf 10dp
quelle
Sie können Vektorzeichnungen verwenden .
Wenn Ihre Mindest-API unter 21 liegt, erstellt Android Studio zum Zeitpunkt der Erstellung automatisch PNG-Bitmaps für diese niedrigeren Versionen (siehe Vector Asset Studio ). Wenn Sie die Support-Bibliothek verwenden, verwaltet Android sogar "echte Vektoren" bis hin zu API 7 (mehr dazu im Update dieses Beitrags unten).
Ein rotes nach oben zeigendes Dreieck wäre:
Fügen Sie es Ihrem Layout hinzu und denken Sie daran, clipChildren = "false" zu setzen, wenn Sie das Dreieck drehen.
Ändern Sie die Größe (Breite / Höhe) des Dreiecks, indem Sie die Attribute Ansichten layout_width / layout_height festlegen. Auf diese Weise können Sie auch ein gleichseitiges Triagle erhalten, wenn Sie die Mathematik korrekt ausführen.
UPDATE 25.11.2017
Wenn Sie die Unterstützungsbibliothek verwenden, können Sie bereits in API 7 echte Vektoren (stattdessen bei der Erstellung von Bitmaps) verwenden . Einfach hinzufügen:
defaultConfig
Machen Sie das in Ihrem Modul build.gradle.Stellen Sie dann das Zeichen (vector xml) wie folgt ein:
Alles ist sehr gut auf der Vector Asset Studio- Seite dokumentiert .
Seit dieser Funktion arbeite ich völlig ohne Bitmaps in Bezug auf Symbole. Dies reduziert auch die APK-Größe erheblich.
quelle
vectorDrawables.useSupportLibrary = true
hat den zusätzlichen Vorteil, dass Siecolors.xml
die in definierten Farben verwenden können , da Bitmaps während der Erstellung erstellt werden (wenn die definierten Farben nicht verfügbar sind).In diesem Fall würde ich auf jeden Fall eine Ansicht implementieren:
Verwenden Sie es in Ihren Layouts wie folgt:
Wenn Sie diese Implementierung verwenden, erhalten Sie das folgende Ergebnis:
quelle
Die Lösung von Jacek Milewski funktioniert für mich und basierend auf seiner Lösung können Sie Folgendes verwenden, wenn Sie ein umgekehrtes Dreieck benötigen:
quelle
Siehe Antwort hier: Benutzerdefinierte Pfeile ohne Bild: Android
quelle
Darf ich Ihnen helfen, ohne XML zu verwenden?
Einfach,
Benutzerdefiniertes Layout (Slice):
Ihre Aktivität (Beispiel):
Arbeitsbeispiel:
Eine weitere absolut einfache
Calculate
Funktion, die Sie interessieren könnte ..quelle
Mit Vektor zeichnen:
quelle
L
undz
am Ende mein Problem behoben, danke!Für diejenigen, die einen rechtwinkligen Dreieckspfeil wollen, hier geht's:
SCHRITT 1: Erstellen Sie eine zeichnbare XML-Datei, kopieren Sie den folgenden XML-Inhalt und fügen Sie ihn in Ihr zeichnbares XML ein. (Bitte beachten Sie, dass Sie für Ihre zeichnbare XML-Datei einen beliebigen Namen verwenden können. In meinem Fall nenne ich sie "v_right_arrow".)
SCHRITT 2: Erstellen Sie im XML Ihres Layouts eine Ansicht und binden Sie den Hintergrund an das zeichnbare XML, das Sie gerade in SCHRITT 1 erstellt haben . In meinem Fall binde ich v_right_arrow an die Hintergrundeigenschaft meiner Ansicht.
Beispielausgabe:
Hoffe das hilft, viel Glück!
quelle
Sie können das folgende Dreieck im Hintergrund mit der folgenden XML-Datei hinzufügen
Die gesamte Logik zum Anpassen des XML-Designs ist in
pathData
. Betrachten Sie oben links als (0,0) und gestalten Sie das Layout gemäß Ihren Anforderungen. Überprüfen Sie diese Antwort.quelle
quelle
quelle
Ich habe dies noch nie getan, aber soweit ich weiß, können Sie die PathShape-Klasse verwenden: http://developer.android.com/reference/android/graphics/drawable/shapes/PathShape.html
quelle
Ich bin zu spät zum Feiern und bin auf dasselbe Problem gestoßen. Google hat mich als erstes Ergebnis auf diesen StackOverflow-Thread hingewiesen.
Siehe Screenshot mit aktivierten Layoutgrenzen
So entstand diese benutzerdefinierte Ansichtsklasse, die Dreiecke eines der folgenden Typen zeichnen kann: -
asas
Sie können es einfach in einem XML-Layout wie diesem verwenden
Ich weiß, dass OP Lösungen in XML-Lösung will, aber wie ich auf ein Problem mit dem XML-Ansatz hingewiesen habe. Ich hoffe es könnte jemandem helfen.
quelle
Mit der Lösung von Jacek Milewski habe ich einen orientierten Abwärtswinkel mit transparentem Hintergrund erstellt.
Sie können den Winkel ändern
android:pivotX
undandroid:pivotY
verschieben.Verwendung:
Die Parameter hängen von der Größe des Bildes ab. Wenn Sie beispielsweise
ImageView
die Größe 100dp * 80dp haben, sollten Sie die folgenden Konstanten verwenden:quelle
Ich versuche, ein Dreiecksbild wie die Zurück-Schaltfläche der Android-Navigationsleiste zu erstellen, habe aber keine Lösung gefunden.
Jetzt habe ich die Lösung mit mir selbst gefunden und möchte sie teilen.
benutze xml unten
quelle
quelle
Google stellt ein gleichseitiges Dreieck hier .
Wählen Sie VectorDrawable, damit die Größe flexibel ist.
Es ist als Plugin in Android Studio integriert.
Wenn Sie ein SVG - Bild haben, können Sie diese , es auch zu VectorDrawable konvertieren.
Sobald Sie ein VectorDrawable haben, ist es einfach, seine Farbe und Drehung zu ändern, wie andere bereits erwähnt haben.
quelle