Come creare una freccia rivolta a destra utilizzando forme xml in Android come questo ?? Come creare una freccia rivolta a destra (chevron) utilizzando forme XML in Android?
risposta
Ho avuto un problema simile. Ecco come ho risolto:
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item>
<shape>
<solid android:color="@android:color/transparent"/>
<size android:width="2dp" android:height="50dp"/>
</shape>
</item>
<item android:bottom="20dp">
<rotate
android:fromDegrees="-45"
android:toDegrees="45">
<shape android:shape="rectangle">
<solid android:color="@android:color/black"/>
<corners
android:radius="1dp"
android:bottomRightRadius="0dp"
android:bottomLeftRadius="0dp"/>
</shape>
</rotate>
</item>
<item android:top="20dp">
<rotate
android:fromDegrees="45"
android:toDegrees="45">
<shape android:shape="rectangle">
<solid android:color="@android:color/black"/>
<corners
android:radius="1dp"
android:topRightRadius="0dp"
android:topLeftRadius="0dp"/>
</shape>
</rotate>
</item>
</layer-list>
Il primo elemento è una forma vuota per espandere il drawable. Quindi, ho usato 2 rettangoli. Ognuno di essi ha 2 lati arrotondati.
è necessario utilizzare questo drawable tramite un ImageView
:
<ImageView
android:layout_width="60dp"
android:layout_height="60dp"
android:src="@drawable/arrow"
android:contentDescription="@string/arrow_descriptor"/>
Ecco il risultato:
Nota: Android Studio non rende diverse dimensioni angolari, ma mostra su correttamente sui dispositivi.
Utilizzando la tua fantasia, e la seguente risposta, si raggiungerà il vostro obiettivo;)
Android how to create triangle and rectangle shape programmatically?
Non è possibile creare tale forma utilizzando XML disegnabile solo
(See answer by user3249477), se si vuoi creare una forma di questo tipo a livello di programmazione, oppure puoi creare un disegno o una vista personalizzabili. Qui, è il codice per la forma della freccia destra. (Colore e diametro possono essere configurati in XML utilizzando styleable)
package com.kiriyard.stackoverflow24723040.views;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Path;
import android.graphics.Path.Direction;
import android.util.AttributeSet;
import android.view.View;
public class ArrowView extends View {
private Paint arrowPaint;
private Path arrowPath;
private int arrowColor = 0xFF888888;
private float density;
private int diameter = 25, diameter_calc, radius_calc;
public ArrowView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
stuff();
}
public ArrowView(Context context, AttributeSet attrs) {
super(context, attrs);
stuff();
}
public ArrowView(Context context) {
super(context);
stuff();
}
private void stuff() {
//Getting density "dp"
density = getContext().getResources().getDisplayMetrics().scaledDensity;
//Calculating actual diameter
diameter_calc = (int) density * diameter;
radius_calc = diameter/2;
//Creating paint
arrowPaint = new Paint();
arrowPaint.setAntiAlias(true);
arrowPaint.setColor(arrowColor);
//Initialize path
arrowPath = new Path();
this.setWillNotDraw(false);
}
private int startX,startY, currentX, currentY;
protected void onDraw(Canvas c) {
startX = c.getWidth();
startY = c.getHeight()/2;
c.rotate(-45, startX, startY);
arrowPath.reset();
currentX = startX;
currentY = startY;
//Move to right end side center of the canvas
arrowPath.moveTo(currentX,currentY);
//Lets move up
currentY = radius_calc;
arrowPath.lineTo(currentX, currentY);
//Now draw circle
currentX-=radius_calc;
arrowPath.addCircle(currentX, radius_calc, radius_calc, Direction.CCW);
currentX-=radius_calc;
arrowPath.lineTo(currentX,currentY);
// Go to inner side center point
currentX = startX - diameter_calc;
currentY = startY - diameter_calc;
arrowPath.lineTo(currentX,currentY);
// Go left
currentX = startX - startY + radius_calc;
arrowPath.lineTo(currentX, currentY);
//Draw circle
currentY+=radius_calc;
c.drawCircle(currentX, currentY, radius_calc, arrowPaint);
currentY+=radius_calc;
arrowPath.lineTo(currentX, currentY);
//Go to start
arrowPath.lineTo(startX, startY);
c.drawPath(arrowPath, arrowPaint);
}
}
Schermata
Quindi questo è uno dei modi! ... .. l'immagine disegnabile è un modo più semplice.
C'è una freccia di design Materiale standard come questa.
In Android Studio, fare clic su File
->New
->Vector Asset
, quindi fare clic sull'icona (pulsante con logo Android) e cercare "Freccia".
Seleziona la freccia che desideri, verrà aggiunta al tuo progetto. È possibile aprire il file XML e modificare le dimensioni e il colore se necessario.
- 1. Come creare una forma arrotondata di Chevron
- 2. Freccia destra significati a Scala
- 3. JqueryMobile - Lista destra freccia
- 4. Android: creare ListView in XML?
- 5. Creare visualizzazioni a livello di codice utilizzando XML su Android
- 6. KonvaJS: come connettere due forme con una freccia?
- 7. Disegno di più forme con ShapeDrawable in xml con Android
- 8. android - Come creare l'ID xml?
- 9. Pure CSS Seleziona Menu/Dropdown: Come creare una freccia destra personalizzata?
- 10. Come creare un controllo scheda WPF come elenco chevron?
- 11. Aggiunta di forme a LinearLayout Android
- 12. Layout da destra a sinistra in Android
- 13. Cambia colore della freccia a discesa di Spinner in XML
- 14. Come aggiungere la freccia in alto a destra nel menu a discesa barra di avvio bootstrap
- 15. Pop-up Android con testa a freccia
- 16. C'è un carattere speciale html per una freccia in basso a destra?
- 17. Come spostare un'immagine da sinistra a destra in Android
- 18. creare una freccia con il colore sfumato
- 19. Come creare una visualizzazione simile a un ripiano in Android?
- 20. Creare pulsanti Android a livello di programmazione utilizzando il layout XML come modello
- 21. È possibile creare questa semplice forma in Android XML?
- 22. Come faccio a impedire a iOS di convertire un piccolo triangolo con il triangolo a destra in un triangolo rettangolo?
- 23. Come posso impostare una casella di selezione html per omettere la freccia rivolta verso il basso per la stampa?
- 24. Visualizza animazione da destra a sinistra android
- 25. Android: come creare un bed design in xml?
- 26. Come riferimento a una classe drawable in Android XML
- 27. Creazione di forme in visio utilizzando C#
- 28. elenco di forme di gonfiaggio in Android
- 29. Come si accettano gli input freccia sinistra/destra/su/giù in una shell Linux?
- 30. come creare forme concave/convesse css
non è possibile farlo con drawable XML, si potrebbe provare questo: https://github.com/pskink/PathDrawable – pskink
@pskink se possiamo ruotare un quadrato in un angolo quindi penso che possiamo farcela..una idea su questo. ?? – Sajal