2015-10-01 12 views

risposta

0

@Pauli. È possibile utilizzare Immagine per esercitarsi facilmente e può provare in questo modo. Utilizzare questa logica

 <?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" > 
<item 
    android:drawable="@color/Your_color"> 
</item> 

<item> 
    <rotate 
     android:fromDegrees="50" 
     android:pivotX="10%" 
     android:pivotY="85%" 
     > 
     <shape 

      android:shape="rectangle"> 
      <solid android:color="#000000" /> 

     </shape> 
    </rotate> 
</item> 

SO cortesia

Diagonally spilliting background of a Relative Layout

Making a triangle shape using xml definitions?

+0

' Ho visto questo link prima e provato .. ma non è quello che sto cercando – Pauli

3
  1. Creare risorse di colore nel file di colors.xml

    <color name="primaryColor">#3F51B5</color> 
    <color name="primaryColorDark">#303F9F</color> 
    
  2. Creare Java file di TriangleBackgroundView.Java:

    public class TriangleBackgroundView extends View { 
    Paint paint; 
    Paint bgPaint; 
    
    public TriangleBackgroundView(Context context) { 
        super(context); 
        init(); 
    } 
    
    public TriangleBackgroundView(Context context, AttributeSet attrs) { 
        super(context, attrs); 
        init(); 
    } 
    
    public TriangleBackgroundView(Context context, AttributeSet attrs, int defStyleAttr) { 
        super(context, attrs, defStyleAttr); 
        init(); 
    } 
    
    private void init() { 
        paint = new Paint(); 
        paint.setStrokeWidth(1); 
        paint.setAntiAlias(true); 
        paint.setStrokeCap(Paint.Cap.SQUARE); 
        paint.setStyle(Paint.Style.FILL); 
        paint.setColor(getResources().getColor(R.color.primaryColor)); 
    
        bgPaint= new Paint(); 
        bgPaint.setStyle(Paint.Style.FILL); 
        bgPaint.setColor(getResources().getColor(R.color.primaryColorDark)); 
    } 
    
    @Override 
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { 
        super.onMeasure(widthMeasureSpec, heightMeasureSpec); 
    } 
    
    @Override 
    protected void onDraw(Canvas canvas) { 
        super.onDraw(canvas); 
    
        int h = getMeasuredHeight(); 
        int w = getMeasuredWidth(); 
    
        canvas.drawRect(0,0,w,h,bgPaint); 
    
        Path path = new Path(); 
        path.moveTo(0, h); 
        path.lineTo(w, h); 
        path.lineTo(0, 0); 
        path.lineTo(0, h); 
        path.close(); 
        canvas.drawPath(path,paint); 
    } 
    } 
    
  3. Ora aggiungete visualizzazione personalizzata nel layout:

<com.yourpackage.TriangleBackgroundView 
    android:layout_height="match_parent" 
    android:layout_width="match_parent"/> 

<TextView android:text="@string/hello_world" android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:textStyle="bold" 
    android:textSize="20dp" 
    android:textColor="@android:color/white" 
    android:layout_centerInParent="true"/> 

È possibile ottenere l'aiuto di questo tutorial per creare la forma in diagonale con il triangolo:

Fonte: http://marcouberti.net/2015/06/23/create-a-custom-triangle-background-view-in-android/

+0

Mentre questo link può rispondere alla domanda, è meglio includere le parti essenziali della risposta qui e fornire il link per riferimento . Le risposte di solo collegamento possono diventare non valide se la pagina collegata cambia.- [Dalla revisione] (/ recensione/post di bassa qualità/11054400) –

+0

Modificato il post @AbhinavSinghMaurya –

0

È possibile utilizzare uno strumento gradiente ...

http://angrytools.com/gradient/

+1

Sebbene questo possa teoricamente rispondere alla domanda, [sarebbe preferibile] (// meta.stackoverflow.com/q/8259) per includere qui le parti essenziali della risposta e fornire il link per riferimento. –

+0

background: -moz-linear-gradient (45deg, rgba (192,192,192,1) 0%, rgba (192,192,192,1) 49%, rgba (0,0,0,1) 50%, rgba (0,0,0 1) 100%);/* ff3.6 + */ background: -webkit-gradient (lineare, a sinistra in basso, a destra in alto, color-stop (0%, rgba (192,192,192,1)), color-stop (49%, rgba (192,192,192, 1)), color-stop (50%, rgba (0,0,0,1)), color-stop (100%, rgba (0,0,0,1)));/* safari4 +, chrome */ background: -webkit-linear-gradient (45deg, rgba (192,192,192,1) 0%, rgba (192,192,192,1) 49%, rgba (0,0,0,1) 50%, rgba (0,0,0,1) 100%);/* safari5.1 +, chrome10 + */ –

1

È può usare qualcosa del genere:

<?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" > 
    <item> 
     <shape android:shape="rectangle" > 
      <solid android:color="@color/yellow_color"/> 
     </shape> 
    </item> 
    <item> 
     <rotate 
      xmlns:android="http://schemas.android.com/apk/res/android" 
      android:fromDegrees="45" 
      android:pivotX="85%" 
      android:pivotY="135%"> 
      <shape> 
       <solid android:color="@color/brown_color" /> 

      </shape> 
     </rotate> 
    </item> 
    <item> 
     <rotate 
      xmlns:android="http://schemas.android.com/apk/res/android" 
      android:fromDegrees="45" 
      android:pivotX="-35%" 
      android:pivotY="85%"> 
      <shape android:shape="rectangle"> 
       <solid android:color="@color/brown_color" /> 

      </shape> 
     </rotate> 
    </item> 
</layer-list> 

I due rettangoli ruotati eseguono il lavoro di riempimento lato marrone nell'immagine.

+0

funziona solo se hai uguale altezza e larghezza ... –