¿Hay alguna manera de que pueda especificar una forma de triángulo en un archivo 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>
¿Podemos hacer esto con una forma de camino o algo así? Solo necesito un triángulo equilátero.
Gracias
Respuestas:
En esta publicación describo cómo hacerlo. Y aquí está el triángulo que define XML:
Consulte mi publicación si algo no está claro o necesita una explicación de cómo está construido. Se gira un rectángulo recortado :) es una solución muy inteligente y que funciona bien.
EDITAR: para crear una flecha apuntando como -> use:
Y para crear una flecha apuntando como <- use:
fuente
Puedes obtener más opciones aquí .
fuente
<string name="bottom_arrow">▼</string>
Puedes usar
vector
para hacer un triángulo como esteic_triangle_right.xml
Entonces úsalo como
Para cambiar el color y la dirección, use
android:tint
yandroid:rotation
Resultado
Para cambiar la forma del vector, puede cambiar el ancho / alto del vector. Ejemplo de cambio de ancho a 10dp
fuente
Puede usar vectores dibujables .
Si su API mínima es inferior a 21, Android Studio crea automáticamente mapas de bits PNG para esas versiones inferiores en el momento de la compilación (consulte Vector Asset Studio ). Si usa la biblioteca de soporte, Android incluso gestiona "vectores reales" hasta API 7 (más sobre eso en la actualización de esta publicación en la parte inferior).
Un triángulo rojo que apunta hacia arriba sería:
Agréguelo a su diseño y recuerde configurar clipChildren = "false" si gira el triángulo.
Cambie el tamaño (ancho / alto) del triángulo estableciendo los atributos Vistas layout_width / layout_height. De esta manera también puede obtener un triagle equilátero si hace los cálculos correctos.
ACTUALIZACIÓN 25.11.2017
Si usa la biblioteca de soporte, puede usar vectores reales (en su lugar, si se crea un mapa de bits) desde API 7 . Simplemente agregue:
haz tu
defaultConfig
en el build.gradle de tu módulo.Luego configure el (vector xml) dibujable de esta manera:
Todo está muy bien documentado en la página de Vector Asset Studio .
Desde esta función, he estado trabajando completamente sin mapas de bits en términos de iconos. Esto también reduce bastante el tamaño del APK.
fuente
vectorDrawables.useSupportLibrary = true
tiene el beneficio adicional de que puede usar los colores definidoscolors.xml
, porque los mapas de bits se crean durante la compilación (cuando los colores definidos no están disponibles).Definitivamente optaría por implementar una Vista en este caso:
Úselo en sus diseños de la siguiente manera:
El uso de esta implementación le dará el siguiente resultado:
fuente
La solución de Jacek Milewski funciona para mí y, en función de su solución, si necesita un triángulo inverso, puede usar esto:
fuente
Ver respuesta aquí: Flechas personalizadas sin imagen: Android
fuente
¿Puedo ayudarte sin usar XML?
Simplemente,
Diseño personalizado (sector):
Su actividad (ejemplo):
Ejemplo de trabajo
Otra
Calculate
función absolutamente simple que le puede interesar.fuente
Usando vector dibujable:
fuente
L
yz
al final solucionó mi problema, ¡gracias!Para aquellos que quieren una flecha de triángulo rectángulo, aquí van:
PASO 1: Cree un archivo XML dibujable, copie y pegue el siguiente contenido XML en su XML dibujable. (Tenga en cuenta que puede usar cualquier nombre para su archivo XML dibujable. Para mi caso, lo llamo "v_right_arrow")
PASO 2: en el XML de su diseño, cree una Vista y vincule su fondo al XML dibujable que acaba de crear en el PASO 1 . Para mi caso, asocio v_right_arrow a la propiedad de fondo de mi Vista.
Salida de muestra:
Espero que esto ayude, buena suerte!
fuente
Puede agregar el siguiente triángulo en segundo plano usando el siguiente xml
Toda la lógica para personalizar el diseño xml está en
pathData
. Considere la esquina superior izquierda como (0,0) y diseñe el diseño según sus requisitos. Mira esta respuesta.fuente
fuente
fuente
Nunca he hecho esto, pero por lo que entiendo, puede usar la clase PathShape: http://developer.android.com/reference/android/graphics/drawable/shapes/PathShape.html
fuente
Llegué tarde a la fiesta y me encontré con el mismo problema y Google me señaló este hilo de StackOverflow como primer resultado.
Ver captura de pantalla con límites de diseño en
Así que terminé haciendo esta clase de vista personalizada que puede dibujar Triángulo de cualquiera de los siguientes tipos:
asas
Simplemente puede usarlo en un diseño xml como este
Sé que OP quiere soluciones en solución xml, pero como señalé un problema con el enfoque xml. Espero que pueda ayudar a alguien.
fuente
Usando la solución de Jacek Milewski , hice un ángulo orientado hacia abajo con un fondo transparente.
Puede cambiar
android:pivotX
yandroid:pivotY
cambiar el ángulo.Uso:
Los parámetros dependen del tamaño de la imagen. Por ejemplo, si
ImageView
tiene un tamaño de 100dp * 80dp, debe usar estas constantes:fuente
Intento crear una imagen triangular como el botón Atrás de la barra de navegación de Android, pero no he encontrado ninguna solución.
Ahora, encontré la solución conmigo mismo y me gustaría compartirla.
usa xml a continuación
fuente
fuente
Google proporciona un triángulo equilátero aquí .
Elija VectorDrawable para que el tamaño sea flexible.
Está integrado en Android Studio como complemento.
Si usted tiene una imagen SVG, puede utilizar este para convertirlo en VectorDrawable también.
Una vez que tenga un VectorDrawable, cambiar su color y rotación es fácil como otros han mencionado.
fuente