Czy istnieje sposób, w jaki mogę określić kształt trójkąta w pliku xml?
<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>
czy możemy to zrobić z kształtem ścieżki czy czymś? Potrzebuję tylko trójkąta równobocznego.
Dzięki
Odpowiedzi:
W tym poście opiszę jak to zrobić. A oto trójkąt definiujący XML:
Zapoznaj się z moim postem, jeśli coś jest niejasne lub potrzebujesz wyjaśnienia, jak to jest zbudowane. Jest obrócony jak wycięty prostokąt :) Jest to bardzo sprytne i dobrze działające rozwiązanie.
EDYCJA: aby utworzyć strzałkę wskazującą jak -> użyj:
Aby utworzyć strzałkę wskazującą jak <- użyj:
źródło
Można uzyskać tu więcej opcji.
źródło
<string name="bottom_arrow">▼</string>
Możesz użyć
vector
do stworzenia takiego trójkątaic_triangle_right.xml
Następnie użyj tego jak
Aby zmienić kolor i kierunek, użyj
android:tint
iandroid:rotation
Wynik
Aby zmienić kształt wektora, możesz zmienić szerokość / wysokość wektora. Przykład zmień szerokość na 10 dp
źródło
Możesz użyć rysunków wektorowych .
Jeśli minimalny interfejs API jest niższy niż 21, Android Studio automatycznie tworzy mapy bitowe PNG dla tych niższych wersji w czasie kompilacji (zobacz Vector Asset Studio ). Jeśli korzystasz z biblioteki wsparcia, Android zarządza nawet „prawdziwymi wektorami” aż do API 7 (więcej na ten temat w aktualizacji tego postu na dole).
Czerwony trójkąt skierowany w górę to:
Dodaj go do swojego układu i pamiętaj, aby ustawić clipChildren = "false", jeśli obrócisz trójkąt.
Zmień rozmiar (szerokość / wysokość) trójkąta, ustawiając atrybuty widoki layout_width / layout_height. W ten sposób możesz również otrzymać równoboczny triagle, jeśli poprawnie wykonasz matematykę.
AKTUALIZACJA 25.11.2017
Jeśli korzystasz z biblioteki wsparcia, możesz używać rzeczywistych wektorów (zamiast tworzenia bitmap) już w API 7 . Po prostu dodaj:
Zrób swoje
defaultConfig
w pliku build.gradle swojego modułu.Następnie ustaw (vector xml) drawable w następujący sposób:
Wszystko jest bardzo ładnie udokumentowane na stronie Vector Asset Studio .
Od czasu tej funkcji pracuję całkowicie bez bitmap pod względem ikon. Zmniejsza to również nieco rozmiar APK.
źródło
vectorDrawables.useSupportLibrary = true
ma tę dodatkową zaletę, że można używać kolorów zdefiniowanych w programiecolors.xml
, ponieważ mapy bitowe są tworzone podczas budowania (gdy zdefiniowane kolory nie są dostępne).Zdecydowanie chciałbym zaimplementować View w tym przypadku:
Wykorzystaj to w swoich układach w następujący sposób:
Użycie tej implementacji da następujący wynik:
źródło
Rozwiązanie Jacek Milewski pracuje dla mnie i, w oparciu o jego rozwiązanie, jeśli trzeba i odwrócony trójkąt można użyć to:
źródło
Zobacz odpowiedź tutaj: Niestandardowe strzałki bez obrazu: Android
źródło
Czy mogę pomóc bez używania XML?
Po prostu,
Układ niestandardowy (wycinek):
Twoja aktywność (przykład):
Przykład roboczy:
Kolejna absolutnie prosta
Calculate
funkcja, która może Cię zainteresować.źródło
Korzystanie z grafiki wektorowej:
źródło
L
iz
na koniec naprawiłem mój problem, dzięki!Dla tych, którzy chcą strzałki w prawym trójkącie, proszę bardzo:
KROK 1: Utwórz możliwy do rysowania plik XML, skopiuj i wklej następującą zawartość XML do swojego rysowalnego XML. (Informujemy, że możesz użyć dowolnej nazwy dla pliku XML do rysowania. W moim przypadku nazywam go „v_right_arrow”)
KROK 2: W kodzie XML układu utwórz Widok i powiąż jego tło z rysowalnym plikiem XML, który właśnie utworzyłeś w KROKU 1 . W moim przypadku wiążę v_right_arrow z właściwością tła mojego widoku.
Przykładowe dane wyjściowe:
Mam nadzięję, że to pomogło, powodzenia!
źródło
Możesz dodać następujący trójkąt w tle, używając następującego XML
Cała logika dostosowywania projektu xml jest w
pathData
. Rozważ lewy górny róg jako (0,0) i zaprojektuj układ zgodnie z wymaganiami. Sprawdź tę odpowiedź.źródło
źródło
źródło
Nigdy tego nie robiłem, ale z tego, co rozumiem, możesz użyć klasy PathShape: http://developer.android.com/reference/android/graphics/drawable/shapes/PathShape.html
źródło
Spóźniłem się na imprezę i natknąłem się na ten sam problem, a Google wskazało mi ten wątek StackOverflow jako pierwszy wynik.
Zobacz zrzut ekranu z włączonymi ograniczeniami układu
Skończyło się na utworzeniu tej niestandardowej klasy widoku, która może rysować Trójkąt dowolnego z następujących typów: -
asas
Możesz po prostu użyć go w układzie XML, takim jak ten
Wiem, że OP chce rozwiązań w rozwiązaniu xml, ale jak wskazałem problem z podejściem xml. Mam nadzieję, że to może komuś pomóc.
źródło
Korzystając z rozwiązania Jacka Milewskiego wykonałem zorientowany kąt z przezroczystym tłem.
Możesz zmienić
android:pivotX
iandroid:pivotY
przesunąć kąt.Stosowanie:
Parametry zależą od rozmiaru obrazu. Na przykład, jeśli
ImageView
ma rozmiar 100dp * 80dp, powinieneś użyć następujących stałych:źródło
Próbuję utworzyć trójkątny obraz, taki jak przycisk Wstecz na pasku nawigacyjnym Androida, ale nie znalazłem żadnego rozwiązania.
Teraz znalazłem rozwiązanie u siebie i chciałbym się nim podzielić.
użyj XML poniżej
źródło
źródło
Google podaje tutaj trójkąt równoboczny .
Wybierz VectorDrawable, aby rozmiar był elastyczny.
Jest zintegrowany z Android Studio jako wtyczka.
Jeśli masz obraz SVG, możesz tego użyć , aby przekształcić go VectorDrawable też.
Gdy już masz VectorDrawable, zmiana jego koloru i rotacji jest łatwa, jak wspominali inni.
źródło