web-dev-qa-db-ja.com

Android:ベクター画像を90度回転

私のベクトルには次のコードがあります:

<vector xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:width="24dp"
    Android:height="24dp"

    Android:viewportWidth="314.015"
    Android:viewportHeight="314.015">
    <path
        Android:fillColor="#FCD83500"
        Android:pathData="M157.007,0C70.291,0 0,70.289 0,157.007c0,86.712 70.29,157.007 157.007,157.007c86.709,0 157.007,-70.295 157.007,-157.007C314.014,70.289 243.716,0 157.007,0zM31.403,157.015c0,-69.373 56.228,-125.613 125.604,-125.613V282.62C87.631,282.62 31.403,226.38 31.403,157.015z" />
</vector>

そして出力は:

enter image description here

しかし、私はこの画像を以下のようにすべての方向に向けたいです:

enter image description hereenter image description hereenter image description here

私が試したこと:

<vector>タグを<rotate>の間に追加しましたが、Element vector is not allowed hereのような警告が表示されます

<rotate xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:fromDegrees="90"
    Android:pivotX="50%"
    Android:pivotY="50%"
    Android:toDegrees="90">

    <vector xmlns:Android="http://schemas.Android.com/apk/res/Android"
        Android:width="24dp"
        Android:height="24dp"

        Android:viewportWidth="314.015"
        Android:viewportHeight="314.015">
        <path
            Android:fillColor="#FCD83500"
            Android:pathData="M157.007,0C70.291,0 0,70.289 0,157.007c0,86.712 70.29,157.007 157.007,157.007c86.709,0 157.007,-70.295 157.007,-157.007C314.014,70.289 243.716,0 157.007,0zM31.403,157.015c0,-69.373 56.228,-125.613 125.604,-125.613V282.62C87.631,282.62 31.403,226.38 31.403,157.015z" />
    </vector>
</rotate>

また、以下のように<bitmap>タグを<rotate>の間に挿入しようとしました:

<?xml version="1.0" encoding="utf-8"?>
<rotate xmlns:Android="http://schemas.Android.com/apk/res/Android"
    xmlns:app="http://schemas.Android.com/apk/res-auto"
    Android:fromDegrees="90"
    Android:pivotX="50%"
    Android:pivotY="50%"
    Android:toDegrees="90">

    <bitmap app:srcCompat="@drawable/ic_round" />

</rotate>

しかし、私に与える 'src'属性を定義する必要があります。ベクトル画像でsrcを使用することはできません。

これ(1つの画像)をあらゆる角度で使用するための解決策はありますか?

注:<TextView>ドローアブルでこの画像を使用したいと思います。

17
Pratik Butani

実際、vector.xmlは、別の組み合わせで実行しない限り、pathDataによって描画されるため回転できません。

textViewとImageViewを分離して、次のように使用できます。

  <LinearLayout
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:orientation="horizontal">

        <TextView
            Android:layout_width="match_parent"
            Android:layout_height="match_parent"
            Android:layout_marginLeft="16dp"
            Android:layout_marginRight="16dp"
            Android:layout_weight="1"
            Android:gravity="center_vertical"
            Android:text="Set time"
            Android:textAppearance="@style/Base.TextAppearance.AppCompat.Medium" />

        <ImageButton
            Android:id="@+id/close_dialog"
            Android:layout_width="?attr/actionBarSize"
            Android:layout_height="?attr/actionBarSize"
            Android:background="?attr/selectableItemBackgroundBorderless"
            Android:rotation="45"
            Android:src="@drawable/ic_close_black_24dp" />

    </LinearLayout>
1
Yossi