Existe uma maneira de especificar uma forma de triângulo em um arquivo 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 fazer isso com uma forma de caminho ou algo assim? Eu só preciso de um triângulo equilátero.
obrigado
Respostas:
Em este post eu descrevo como fazê-lo. E aqui está o triângulo definidor de XML:
Consulte meu post se algo não estiver claro ou se você precisar de explicações sobre como ele é construído. É girado um retângulo de recorte :) é uma solução muito inteligente e que funciona bem.
EDIT: para criar uma seta apontando como -> use:
E para criar uma seta apontando como <- use:
fonte
Você pode obter aqui mais opções.
fonte
<string name="bottom_arrow">▼</string>
Você pode usar
vector
para fazer triângulo assimic_triangle_right.xml
Então use-o como
Para alterar a cor e a direção, use
android:tint
eandroid:rotation
Resultado
Para alterar a forma do vetor, você pode alterar a largura / altura do vetor. Exemplo de alteração de largura para 10dp
fonte
Você pode usar gavetas vetoriais .
Se sua API mínima for menor que 21, o Android Studio criará bitmaps PNG automaticamente para essas versões inferiores no momento da criação (consulte Vector Asset Studio ). Se você usa a biblioteca de suporte, o Android até gerencia "vetores reais" até a API 7 (mais sobre isso na atualização desta postagem na parte inferior).
Um triângulo vermelho apontando para cima seria:
Adicione-o ao seu layout e lembre-se de definir clipChildren = "false" se você girar o triângulo.
Altere o tamanho (largura / altura) do triângulo definindo os atributos Visualizações layout_width / layout_height. Dessa forma, você também pode obter uma triagle eqilateral se fizer as contas corretamente.
ATUALIZAÇÃO 25.11.2017
Se você usar a biblioteca de suporte, poderá usar vetores reais (em vez de criação de bitmap) já na API 7 . Basta adicionar:
faça o seu
defaultConfig
no build.gradle do seu módulo.Em seguida, defina o (vetor xml) desenhável da seguinte maneira:
Tudo está documentado muito bem na página do Vector Asset Studio .
Desde esse recurso, tenho trabalhado inteiramente sem bitmaps em termos de ícones. Isso também reduz um pouco o tamanho do APK.
fonte
vectorDrawables.useSupportLibrary = true
tem a vantagem extra que você pode usar cores definidas nocolors.xml
, porque bitmaps são criados durante a construção (quando as cores definidas não estão disponíveis).Eu definitivamente iria implementar uma View neste caso:
Faça uso dele em seus layouts da seguinte maneira:
O uso desta implementação fornecerá o seguinte resultado:
fonte
A solução de Jacek Milewski funciona para mim e, com base na solução dele, se você precisar de um triângulo inverso, poderá usar isso:
fonte
Veja a resposta aqui: Setas personalizadas sem imagem: Android
fonte
Posso ajudá-lo sem usar XML?
Simplesmente,
Layout personalizado (fatia):
Sua atividade (exemplo):
Exemplo de trabalho:
Outra
Calculate
função absolutamente simples que você pode interessar ..fonte
Usando o vetor drawable:
fonte
L
ez
no final resolveu o meu problema, obrigado!Para quem deseja uma seta do triângulo retângulo, aqui está:
PASSO 1: Crie um arquivo XML desenhável, copie e cole o seguinte conteúdo XML em seu XML desenhável. (Esteja ciente de que você pode usar qualquer nome para o seu arquivo XML desenhável. No meu caso, chamo-o de "v_right_arrow")
ETAPA 2: No XML do seu layout, crie uma Visualização e vincule seu plano de fundo ao XML que você acabou de criar que você acabou de criar na ETAPA 1 . Para o meu caso, vinculo v_right_arrow à propriedade background da minha View.
Saída de amostra:
Espero que isso ajude, boa sorte!
fonte
Você pode adicionar o seguinte triângulo em segundo plano usando o seguinte xml
Está toda a lógica para personalizar o design xml
pathData
. Considere o canto superior esquerdo como (0,0) e projete o layout conforme sua exigência. Verifique esta resposta.fonte
fonte
fonte
Eu nunca fiz isso, mas pelo que entendi, você pode usar a classe PathShape: http://developer.android.com/reference/android/graphics/drawable/shapes/PathShape.html
fonte
Estou atrasado para a festa e me deparei com o mesmo problema, e o Google me indicou esse segmento do StackOverflow como primeiro resultado.
Veja a captura de tela com limites de layout
Então, acabamos criando essa classe de exibição personalizada, que pode desenhar Triângulo de qualquer um dos seguintes tipos: -
como ... como
Você pode simplesmente usá-lo no layout xml como este
Eu sei OP quer soluções em solução xml, mas como apontei problema com a abordagem xml. Espero que ajude alguém.
fonte
Usando a solução de Jacek Milewski , fiz um ângulo orientado para baixo com um fundo transparente.
Você pode mudar
android:pivotX
eandroid:pivotY
mudar o ângulo.Uso:
Os parâmetros dependem do tamanho da imagem. Por exemplo, se
ImageView
tiver tamanho 100dp * 80dp, você deve usar estas constantes:fonte
Eu tento criar uma imagem triangular como o botão voltar da barra de navegação do Android, mas não encontrei nenhuma solução.
Agora, encontrei a solução comigo mesmo e gostaria de compartilhá-la.
use xml abaixo
fonte
fonte
O Google fornece um triângulo Equilateral aqui .
Escolha VectorDrawable para que o tamanho seja flexível.
É integrado ao Android Studio como plugin.
Se você tiver uma imagem SVG, poderá usá- la para convertê-la em VectorDrawable também.
Depois de ter um VectorDrawable, é fácil alterar sua cor e rotação, como outros já mencionaram.
fonte