XML tanımlarını kullanarak üçgen şekil mi yapıyorsunuz?


133

Bir xml dosyasında bir üçgen şekli belirtebilirsiniz bir yolu var mı?

<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>

bunu yol şeklinde falan yapabilir miyiz? Sadece eşkenar üçgene ihtiyacım var.

Teşekkürler


bir çözüm buldun mu? Bendede aynı sorun var.
Mike Bevz

Bu, rehberliği yazan kişi (ve birkaç yorumcu) için işe yaradı gibi görünüyor: Android:
Tuvalde

Yanıtlar:


166

Gelen bu yazı ben bunu nasıl açıklar. Ve işte XML tanımlayan üçgen:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <item>
        <rotate
            android:fromDegrees="45"
            android:toDegrees="45"
            android:pivotX="-40%"
            android:pivotY="87%" >
            <shape
                android:shape="rectangle" >
                <stroke android:color="@color/transparent" android:width="10dp"/>
                <solid
                    android:color="@color/your_color_here" />
            </shape>
        </rotate>
    </item>
</layer-list>

Bir şey net değilse veya nasıl inşa edildiğini açıklamanız gerekiyorsa gönderime bakın. Bir kesme dikdörtgen döndürülmüş :) çok akıllı ve iyi çalışan bir çözümdür.

EDIT: gibi bir ok oluşturmak için -> kullanın:

...
android:fromDegrees="45"
android:toDegrees="45"
android:pivotX="13%"
android:pivotY="-40%" >
...

Ve <gibi - işaretini gösteren bir ok oluşturmak için:

android:fromDegrees="45"
android:toDegrees="45"
android:pivotX="87%"
android:pivotY="140%" >

3
Üzgünüm .. ama eşkenar üçgen asla dik açılı üçgen olamaz.
lilbyrdie

3
@JacekMilewski - çok teşekkürler! PivotX / pivotY parametrelerinizin aşağı ok için ne olduğunu paylaşmayı mı düşünüyorsunuz? Ayrıldı? Sağ?
JohnnyLambada

2
Döndürmek için üçgen tanımının kendisinde değil, düzen xml dosyasındaki dönüşü değiştiririm.
Jacek Milewski

1
-1. Bu iyi değil. Görünümün gerçek boyutları ekranda görünenden daha büyüktür. Sınırları sarmalıydı.
Javanator

1
LütfenDegrees, toDegrees, pivotX ve pivotY için değerlerinizi nasıl türettiğinizi paylaşır mısınız? Düzen dosyasındaki dönüşü değiştirmenin mümkün olmadığı bir kullanım durumum var.
Patrick Brennan

82
<TextView 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="▼"/>

Sen alabilirsiniz burada daha fazla seçenek.


3
Bu değeri xml'ye nasıl koyarsınız?
user531069

2
Bu
yazıyı

6
@ user531069: bunu dizelerinize koyun. <string name="bottom_arrow">&#9660;</string>

1
Bağlantıdan farklı bir ok istiyorum, kopyalayıp yapıştırıyorum & # 129032; metin olarak bilinmeyen bir karakter gösterir. ?
M. Usman Khan

2
Bu çözüm, Metin Görünümü içinde Yazı Tipi Dolgusu ile ilgili yeni bir sorun oluşturur.
Salman Khakwani

59

Böyle vectorüçgen yapmak için kullanabilirsiniz

ic_triangle_right.xml

<vector xmlns:android="http://schemas.android.com/apk/res/android"
        android:width="24dp"
        android:height="24dp"
        android:viewportWidth="24.0"
        android:viewportHeight="24.0">
    <path
        android:pathData="M0,12l0,12 11.5,-5.7c6.3,-3.2 11.5,-6 11.5,-6.3 0,-0.3 -5.2,-3.1 -11.5,-6.3l-11.5,-5.7 0,12z"
        android:strokeColor="#00000000"
        android:fillColor="#000000"/>
</vector>

Sonra şöyle kullanın

<ImageView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    app:srcCompat="@drawable/ic_triangle_right"
    />

Değişim renk ve yön, kullanım için android:tintveandroid:rotation

<ImageView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    app:srcCompat="@drawable/ic_triangle_right"
    android:rotation="180" // change direction
    android:tint="#00f" // change color
    />

Sonuç

resim açıklamasını buraya girin

Vektörün şeklini değiştirmek için vektörün genişliğini / yüksekliğini değiştirebilirsiniz. Genişliği 10dp olarak değiştirme örneği

<vector 
        android:width="10dp"
        android:height="24dp"
        >
       ...
</vector>

resim açıklamasını buraya girin


teşekkür ederim, bu vektörlerin nasıl çalıştığını gerçekten bilmiyorum. Sonuca ihtiyacım vardı
Hossein Shahdoost

bu üçgenlerin boyutunu nasıl artırabilir ve azaltabilirim? Yükseklik ve genişlik belirterek, işe yaramaz
Aayushi

46

Vektör çekmecelerini kullanabilirsiniz .

Minimum API'niz 21'den düşükse, Android Studio, bu düşük sürümler için derleme sırasında otomatik olarak PNG bitmapleri oluşturur (bkz. Vector Asset Studio ). Destek kitaplığını kullanırsanız, Android "gerçek vektörleri" API 7'ye kadar yönetir (daha fazlası bu yazının en alt kısmındaki güncellemede).

Yukarı dönük kırmızı bir üçgen şöyle olur:

<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:height="100dp"
    android:width="100dp"
    android:viewportHeight="100"
    android:viewportWidth="100" >
    <group
        android:name="triableGroup">
        <path
            android:name="triangle"
            android:fillColor="#FF0000"
            android:pathData="m 50,0 l 50,100 -100,0 z" />
    </group>
</vector>

Düzeninize ekleyin ve üçgeni döndürürseniz clipChildren = "false" değerini ayarlamayı unutmayın.

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:clipChildren="false">

    <ImageView
        android:layout_width="130dp"
        android:layout_height="100dp"
        android:rotation="0"
        android:layout_centerInParent="true"
        android:background="@drawable/triangle"/>

</RelativeLayout>

resim açıklamasını buraya girin

Views layout_width / layout_height niteliklerini ayarlayarak üçgenin boyutunu (genişlik / yükseklik) değiştirin. Bu şekilde, matematiği doğru yaparsanız bir eşkenar üçgen elde edebilirsiniz.

GÜNCELLEME 25.11.2017

Destek kitaplığını kullanırsanız, API 7'ye kadar gerçek vektörler (bunun yerine bitmap oluşturma durumunda) kullanabilirsiniz . Sadece şunu ekleyin:

vectorDrawables.useSupportLibrary = true

defaultConfigmodülünüzün build.gradle içinde yapmak .

Sonra çizilebilir (vector xml) şöyle ayarlayın:

<ImageView
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    app:srcCompat="@drawable/triangle" />

Her şey Vector Asset Studio sayfasında çok güzel bir şekilde belgelenmiştir .

Bu özelliğimden beri tamamen ikon açısından bitmapler olmadan çalışıyorum. Bu, APK boyutunu da biraz azaltır.


1
bir bağlantı gönderin ve birisi sizin için yükleyecek :-)
GabrielOshiro

1
+1 vectorDrawables.useSupportLibrary = true, tanımlanmış renkleri kullanabileceğiniz ek bir avantaja sahiptir colors.xml, çünkü derleme sırasında bitmapler oluşturulur (tanımlı renkler kullanılamadığında).
Rob

39

Kesinlikle bu durumda bir Görünüm uygulamak için gitmek istiyorum:

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Path;
import android.util.AttributeSet;
import android.view.View;

public class TriangleShapeView extends View {

    public TriangleShapeView(Context context) {
        super(context);
    }

    public TriangleShapeView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }

    public TriangleShapeView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);

        int w = getWidth() / 2;

        Path path = new Path();
        path.moveTo( w, 0);
        path.lineTo( 2 * w , 0);
        path.lineTo( 2 * w , w);
        path.lineTo( w , 0);
        path.close();

        Paint p = new Paint();
        p.setColor( Color.RED );

        canvas.drawPath(path, p);
    }
}

Bunu mizanpajlarınızda aşağıdaki gibi kullanın:

<TriangleShapeView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#ff487fff">
</TriangleShapeView>

Bu uygulamayı kullanmak size aşağıdaki sonucu verecektir:

resim açıklamasını buraya girin


<com.your.path.to.view.TriangleShapeView ... />
çalıştı

bu harika. üçgen rengini nasıl değiştirebilirim? başlangıç ​​renginin gri olduğunu ancak onTouch veya onClick?
Fshamri


@Peter Merhaba. bana küçük bir gelişme ile yardım edebilir misin? Yuvarlatılmak için sağ üst köşeye ihtiyacım var. bunu nasıl başarabilirim?
Barterio

1
Üçgenin içine nasıl metin eklerim?
Sakiboy

38

Jacek Milewski çözümü ihtiyacınız ile tersine üçgen bunu kullanabilirsiniz eğer, onun çözümü temelinde, benim için çalışıyor ve:

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

-1 Bu şekilde eşkenar üçgen elde edemezsiniz. Her neyse, çok fazla potansiyel sorun yaşıyor. stackoverflow.com/questions/20805826/…
j_kubik

21

Cevap için buraya bakın: Görüntüsüz özel oklar: Android

<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
        android:width="32dp"
        android:height="24dp"
        android:viewportWidth="32.0"
        android:viewportHeight="24.0">
    <path android:fillColor="#e4e4e8"
          android:pathData="M0 0 h32 l-16 24 Z"/>
</vector>

ok


11

Nasıl yardımcı olabilirim olmadan XML kullanarak?


basitçe,

Özel Düzen (Dilim):

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Paint.Style;
import android.graphics.Path;
import android.graphics.Point;
import android.util.AttributeSet;
import android.view.View;

public class Slice extends View {

    Paint mPaint;

    Path mPath;

    public enum Direction {
        NORTH, SOUTH, EAST, WEST
    }

    public Slice(Context context) {
        super(context);
        create();
    }

    public Slice(Context context, AttributeSet attrs) {
        super(context, attrs);
        create();
    }

    public void setColor(int color) {
        mPaint.setColor(color);
        invalidate();
    }

    private void create() {
        mPaint = new Paint();
        mPaint.setStyle(Style.FILL);
        mPaint.setColor(Color.RED);
    }

    @Override
    protected void onDraw(Canvas canvas) {
        mPath = calculate(Direction.SOUTH);
        canvas.drawPath(mPath, mPaint);
    }

    private Path calculate(Direction direction) {
        Point p1 = new Point();
        p1.x = 0;
        p1.y = 0;

        Point p2 = null, p3 = null;

        int width = getWidth();

        if (direction == Direction.NORTH) {
            p2 = new Point(p1.x + width, p1.y);
            p3 = new Point(p1.x + (width / 2), p1.y - width);
        } else if (direction == Direction.SOUTH) {
            p2 = new Point(p1.x + width, p1.y);
            p3 = new Point(p1.x + (width / 2), p1.y + width);
        } else if (direction == Direction.EAST) {
            p2 = new Point(p1.x, p1.y + width);
            p3 = new Point(p1.x - width, p1.y + (width / 2));
        } else if (direction == Direction.WEST) {
            p2 = new Point(p1.x, p1.y + width);
            p3 = new Point(p1.x + width, p1.y + (width / 2));
        }

        Path path = new Path();
        path.moveTo(p1.x, p1.y);
        path.lineTo(p2.x, p2.y);
        path.lineTo(p3.x, p3.y);

        return path;
    }
}

Faaliyetiniz (Örnek):

import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.view.ViewGroup.LayoutParams;
import android.widget.LinearLayout;

public class Layout extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        Slice mySlice = new Slice(getApplicationContext());
        mySlice.setBackgroundColor(Color.WHITE);
        setContentView(mySlice, new LinearLayout.LayoutParams(
                LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
    }
}

Çalışma Örneği:

resim açıklamasını buraya girin


Calculateİlginizi çekebilecek başka bir basit işlev ..

private Path Calculate(Point A, Point B, Point C) {
    Path Pencil = new Path();
    Pencil.moveTo(A.x, A.y);
    Pencil.lineTo(B.x, B.y);
    Pencil.lineTo(C.x, C.y);
    return Pencil;
}

11
+1 Evet, yapabilirsiniz. Ve teşekkür ederim. OP'nin yanı sıra özellikle XML istemeyen bir çözüm arayan başka insanlar da var - ben olduğum gibi
johndodo

1
onDraw, ViewGroup'tan türetilen sınıflarda çağrılmaz, varsayılan değildir. SetWillNotDraw (false) ile çizimi etkinleştirmeniz veya bunun yerine bir Görünüm'den devralmanız gerekir.
Blago

11

Çekilebilir vektör kullanma:

<vector xmlns:android="http://schemas.android.com/apk/res/android"
   android:width="24dp"
   android:height="24dp"
   android:viewportWidth="24.0"
   android:viewportHeight="24.0">
   <path
        android:pathData="M0,0 L24,0 L0,24 z"
        android:strokeColor="@color/color"
        android:fillColor="@color/color"/>
</vector>

resim açıklamasını buraya girin


Kullanarak Lve zsonunda sorunum düzeltildi, teşekkürler!
öküz

6

Doğru üçgen ok isteyenler için işte başlıyoruz:

ADIM 1: Çekilebilir bir XML dosyası oluşturun, aşağıdaki XML içeriğini kopyalayıp XML'inize yapıştırın. (Çekilebilir XML dosyanız için herhangi bir isim kullanabileceğinizi lütfen unutmayın. Benim durumum için "v_right_arrow" olarak adlandırıyorum)

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <item >
        <rotate
            android:fromDegrees="45"
            android:toDegrees="-45"
            android:pivotX="15%"
            android:pivotY="-36%" >
            <shape
                android:shape="rectangle"  >
                <stroke android:color="@android:color/transparent" android:width="1dp"/>
                <solid
                    android:color="#000000"  />
            </shape>
        </rotate>
    </item>
</layer-list>

ADIM 2: Düzeninizin XML'sinde bir Görünüm oluşturun ve arka planını STEP 1'de oluşturduğunuz çekilebilir XML'ye bağlayın . Benim durumum için v_right_arrow'u Görünümümün arka plan özelliğine bağlarım.

<View
    android:layout_width="200dp"
    android:layout_height="200dp"
    android:background="@drawable/v_right_arrow">
</View>

Örnek çıktı:

resim açıklamasını buraya girin

Umarım bu yardımcı olur, iyi şanslar!


6

Aşağıdaki xml'yi kullanarak arka planda aşağıdaki üçgeni ekleyebilirsiniz

<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:height="100dp"
    android:width="100dp"
    android:viewportHeight="100"
    android:viewportWidth="100" >
    <group
        android:name="triableGroup">
        <path
            android:name="triangle"
            android:fillColor="#848af8"
            android:pathData="M 0,20 L 0,0 L 100,0 L 100,20 L 54,55  l -1,0.6  l -1,0.4  l -1,0.2  l -1,0   l -1,-0  l -1,-0.2  l -1,-0.4  l -1,-0.6    L 46,55   L 0,20 -100,-100 Z" />
    </group>
</vector>

Xml tasarımını özelleştirmek için tüm mantık içinde pathData. Sol üst (0,0) olarak düşünün ve düzeni ihtiyacınıza göre tasarlayın. Bu cevabı kontrol edin .


4
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <item>
        <rotate
            android:fromDegrees="45"
            android:toDegrees="45"
            android:pivotX="-40%"
            android:pivotY="87%" >
            <shape
                android:shape="rectangle" >
                <stroke android:color="@android:color/transparent" android:width="0dp"/>
                <solid
                    android:color="#fff" />
            </shape>
        </rotate>
    </item>
</layer-list>

4
 <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
        <item>
            <rotate
                android:fromDegrees="45"
                android:pivotX="135%"
                android:pivotY="1%"
                android:toDegrees="45">
                <shape android:shape="rectangle">
                    <stroke
                        android:width="-60dp"
                        android:color="@android:color/transparent" />
                    <solid android:color="@color/orange" />
                </shape>
            </rotate>
        </item>
    </layer-list>

3

Bunu hiç yapmadım, ancak anladığım kadarıyla PathShape sınıfını kullanabilirsiniz: http://developer.android.com/reference/android/graphics/drawable/shapes/PathShape.html


2
XML'de yol şekli nasıl kullanılır?
Sebastian Roth

Bu, kullanılacak doğru parçayı bulmak için yardımcı oldu, ancak nasıl kullanılacağı hakkında neredeyse yeterli açıklama sunmuyor. Yine de teşekkürler.
Navarr

Üzgünüm Sebastian ve Navarr ... Cevabımda hiç kullanmadığımı söyledim, bu yüzden nasıl kullanacağımdan emin değilim. Bu sadece işi yapacak sınıf gibi görünüyor. Yine de, bunun için yeterli belge olmadığını kabul ediyorum.
Justin

3
PathShape ile ilişkili bir XML sözdizimi yok gibi görünüyor. XML Şekil etiketi yalnızca dikdörtgen, oval, çizgi ve halkayı destekler. developer.android.com/guide/topics/resources/…
Nilzor

3

Partiye geç kaldım ve aynı sorunla karşılaştım ve Google ilk sonuç olarak bu StackOverflow iş parçacığına işaret etti.

Üçgen eklemek ve xml yaklaşımı ile üçgen şeklinin göründüğünden daha fazla yer kaplamasıyla ilgili bir sorun bulmak için xml yolunu kullanmayı denedim.

Düzen sınırları açıkken ekran görüntüsüne bakın

resim açıklamasını buraya girin

Bu nedenle, aşağıdaki türlerden herhangi birinden Üçgen çizebilen bu özel görünüm sınıfını tamamladı: -

  1. yukarı dönük
  2. aşağı dönük
  3. sola dönük &
  4. sağ işaret

asas

package com.hiteshsahu.materialupvotewidget;    
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Path;
import android.support.annotation.NonNull;
import android.util.AttributeSet;
import android.view.View;

public class TriangleShapeView extends View {

    private int colorCode = Color.DKGRAY;

    public int getColorCode() {
        return colorCode;
    }

    public void setColorCode(int colorCode) {
        this.colorCode = colorCode;
    }

    public TriangleShapeView(Context context) {
        super(context);
        if (isInEditMode())
            return;
    }

    public TriangleShapeView(Context context, AttributeSet attrs) {
        super(context, attrs);
        if (isInEditMode())
            return;
    }

    public TriangleShapeView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);

        if (isInEditMode())
            return;
    }


    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        int w = getWidth() / 2;
        int h = getHeight() / 2;

        //Choose what type of triangle you want here
        Path path = getLeftTriangle(w, h);

        path.close();
        Paint p = new Paint();
        p.setColor(colorCode);
        p.setAntiAlias(true);

        canvas.drawPath(path, p);
    }

    @NonNull
    /**
     * Return Path for down facing triangle
     */
    private Path getInvertedTriangle(int w, int h) {
        Path path = new Path();
        path.moveTo(0, 0);
        path.lineTo(w, 2 * h);
        path.lineTo(2 * w, 0);
        path.lineTo(0, 0);
        return path;
    }

    @NonNull
    /**
     * Return Path for Up facing triangle
     */
    private Path getUpTriangle(int w, int h) {
        Path path = new Path();
        path.moveTo(0, 2 * h);
        path.lineTo(w, 0);
        path.lineTo(2 * w, 2 * h);
        path.lineTo(0, 2 * h);
        return path;
    }

    @NonNull
    /**
     * Return Path for Right pointing triangle
     */
    private Path getRightTriangle(int w, int h) {
        Path path = new Path();
        path.moveTo(0, 0);
        path.lineTo(2 * w, h);
        path.lineTo(0, 2 * h);
        path.lineTo(0, 0);
        return path;
    }

    @NonNull
    /**
     * Return Path for Left pointing triangle
     */
    private Path getLeftTriangle(int w, int h) {
        Path path = new Path();
        path.moveTo(2 * w, 0);
        path.lineTo(0, h);
        path.lineTo(2 * w, 2 * h);
        path.lineTo(2 * w, 0);
        return path;
    }
}

Sadece böyle xml düzeninde kullanabilirsiniz

 <com.hiteshsahu.materialupvote.TriangleShapeView
            android:layout_width="50dp"
            android:layout_height="50dp"></com.hiteshsahu.materialupvote.TriangleShapeView>

OP xml çözüm çözümleri istiyorum biliyorum ama ben xml yaklaşımı ile sorun belirtti. Umarım birine yardımcı olabilir.


2

Jacek Milewski'nin çözümünü kullanma şeffaf bir arka plana sahip yönlendirilmiş bir aşağı açı yaptım.

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <rotate
            android:fromDegrees="135"
            android:pivotX="65%"
            android:pivotY="20%"
            android:toDegrees="135"
            >
            <shape android:shape="rectangle">
                <stroke
                    android:width="1dp"
                    android:color="@color/blue"
                    />
                <solid android:color="@color/transparent" />
            </shape>
        </rotate>
    </item>
</layer-list>

Değiştirebilirsin android:pivotXandroid:pivotYAçıyı ve .

Kullanımı:

<ImageView
    android:layout_width="10dp"
    android:layout_height="10dp"
    android:src="@drawable/ic_angle_down"
    />

resim açıklamasını buraya girin

Parametreler görüntünün boyutuna bağlıdır. Örneğin, ImageView100dp * 80dp boyutuna sahipse, bu sabitleri kullanmalısınız:

<rotate
    android:fromDegrees="135"
    android:pivotX="64.5%"
    android:pivotY="19%"
    android:toDegrees="135"
    >

resim açıklamasını buraya girin


2

Android gezinme çubuğunun geri düğmesi gibi üçgen görüntü oluşturmaya çalışıyorum, ancak herhangi bir çözüm bulamadım.

Şimdi, çözümü kendim buldum ve paylaşmak istiyorum.

üçgen gezinti çubuğu android

aşağıda xml kullan

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
    android:bottom="20dp"
    android:left="480dp"
    android:right="60dp"
    android:top="20dp">
    <shape>
        <size android:width="60dp" />
        <corners android:radius="80dp"/>
        <solid android:color="#AAA" />
    </shape>
</item>
<item
    android:bottom="480dp"
    android:right="70dp"
    android:top="20dp">
    <rotate
        android:fromDegrees="-28"
        android:pivotX="96%"
        android:pivotY="50%"
        android:toDegrees="-20">
        <shape>
            <corners android:radius="80dp"/>
            <size android:height="60dp" />
            <solid android:color="#AAA" />
        </shape>
    </rotate>
</item>

<item
    android:bottom="20dp"
    android:right="70dp"
    android:top="480dp">
    <rotate
        android:fromDegrees="28"
        android:pivotX="96%"
        android:pivotY="50%"
        android:toDegrees="-20">
        <shape>
            <corners android:radius="80dp"/>
            <size android:height="60dp" />
            <solid android:color="#AAA" />
        </shape>
    </rotate>
</item>


0
  <LinearLayout
        android:id="@+id/ly_fill_color_shape"
        android:layout_width="300dp"
        android:layout_height="300dp"
        android:layout_gravity="center"
        android:background="@drawable/shape_triangle"
        android:gravity="center"
        android:orientation="horizontal" >
    </LinearLayout>

<item>
    <rotate
        android:fromDegrees="45"
        android:pivotX="-15%"
        android:pivotY="77%"
        android:toDegrees="45" >
        <shape android:shape="rectangle" >
            <stroke
                android:width="2dp"
                android:color="@color/black_color" />

            <solid android:color="@color/white" />

            <padding android:left="1dp" />
        </shape>
    </rotate>
</item>
<item android:top="200dp">
    <shape android:shape="line" >
        <stroke
            android:width="1dp"
            android:color="@color/black_color" />

        <solid android:color="@color/white" /> 
    </shape>
</item>


-1 Bu şekilde eşkenar üçgen elde edemezsiniz. Her neyse, çok fazla potansiyel sorun yaşıyor. stackoverflow.com/questions/20805826/…
j_kubik

0

Google burada bir Eşkenar üçgen sağlar .
Boyutun esnek olması için VectorDrawable'ı seçin.
Eklenti olarak Android Studio'ya entegre edildi.

Eğer SVG resmini varsa, kullanabilirsiniz bu çok VectorDrawable dönüştürmek.

VectorDrawable'ınız olduğunda, diğerlerinin de belirttiği gibi rengini ve dönüşünü değiştirmek kolaydır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.