安卓镜像矢量图形绘制

20

我使用了一个材质图标(ic_play_arrow_black_24dp),并通过矢量工作室导入它。

现在我想让箭头也指向另一个方向,而不必创建第二个矢量图。这在xml中是否可行,如何实现?

我在两个浮动操作按钮中使用了该可绘制对象,一个用于下一个,另一个用于上一个。

编辑 这是fab按钮的XML代码。 我已经尝试过旋转和缩放,但没有成功。

<android.support.design.widget.FloatingActionButton
    android:id="@+id/previous"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="start|bottom"
    android:layout_marginBottom="0dp"
    android:layout_marginEnd="80dp"
    android:layout_marginStart="0dp"
    android:layout_marginTop="0dp"
    android:src="@drawable/next_prev_24dp"
    app:layout_anchor="@id/next"
    app:layout_anchorGravity="left" />

2
可能是Android - flip image in xml的重复问题。 - Ritave
我已经看过了,但是对我的设备没有用。我添加了该设备的 XML,也许里面有什么问题? - reebow
使用 android.graphics.drawable.RotateDrawable - pskink
相关:如何通过编程在Android中镜像任意Drawable https://dev59.com/iKjja4cB1Zd3GeqP8EId#48502102 - Miha_x64
简短回答:https://dev59.com/3VcP5IYBdhLWcg3w0tM0#43783080 - Harpreet
5个回答

35

对于那些使用 ImageViewTextViewEditText 的人,缩放效果非常完美。请使用。

android:scaleX="-1" //To flip horizontally or
android:scaleY="-1" //To flip vertically

或者尝试以下方法

android:rotationX="180" // for horizontal
android:rotationY="180" // for vertical

或者简单地使用rotation="180"来进行垂直旋转

android:rotation="180" // for vertical

编辑:额外说明:
如果您想在更改语言从RTL(“从右到左”)到LTR(“从左到右”)时翻转/镜像图标/可绘制物,Android矢量可绘制物中有一种很好的方法,只需勾选启用RTL布局的自动镜像复选框。

=> 右键单击drawable文件夹 => 新建 => 矢量资产 => 选择drawable => 勾选复选框

.


15

我正在使用 Windows 10 中的 AndroidStudio 3.0.1

嗯,没有必要创建另一个矢量图像,您只需使用一个单一的矢量图像即可,只需确保在导入 vector image 时执行以下步骤:

所以,在创建 vector_drawable 的常规步骤中,

以防有人不知道,

1.) 右键单击您的应用程序 package

2.) 然后导航到 New => Vector Asset

3.) 然后选择您想要的图标,在@reebov的情况下,它将是 ic_arrow_back_black_24dp

4.) 您将找到带有选项 Enable auto mirroring for RTL layoutCheckbox

编辑

您还可以在 XML 矢量文件中设置 android:autoMirrored="true"

请参见下面的图像获取更多信息

see image for more info

然后就完成了。 :)


13

有另一种镜像可绘制对象的方法。您可以修改 XML 文件以添加 <group> 标记来镜像图像(在此垂直方向)。

<vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:width="24dp"
    android:height="24dp"
    android:viewportWidth="30"
    android:viewportHeight="30">
    
    <group
        android:scaleX="-1"
        android:translateX="30"> <!-- viewportWidth here-->
        
        <path
            android:fillColor="#FFF"
            android:fillType="evenOdd"
            android:pathData="M14.667 4V0L9.333 5.333l5.334 5.334v-4c4.413 0 8 3.586 8 8a7.827 7.827 0 0 1-.934 3.733l1.947 1.947a10.574 10.574 0 0 0 1.653-5.68C25.333 8.773 20.56 4 14.667 4zm0 18.667c-4.414 0-8-3.587-8-8 0-1.347.333-2.627.933-3.734L5.653 8.987A10.574 10.574 0 0 0 4 14.667c0 5.893 4.773 10.666 10.667 10.666v4L20 24l-5.333-5.333v4z" />
    </group>
</vector>

1
这就是我一直在寻找的。我的图标最初是从右到左的。 - ataravati

10

在您的XML矢量文件中设置android:autoMirrored="true"


0

这是共享图像向量 XML 文件 share.xml :

<vector android:height="24dp" android:tint="#FFFFFF"
    android:viewportHeight="24.0" android:viewportWidth="24.0"
    android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
    <path android:fillColor="#FF000000" android:pathData="M10,9V5l-7,7 7,7v-4.1c5,0 8.5,1.6 11,5.1 -1,-5 -4,-10 -11,-11z"/>
</vector>

这是在xml布局文件中的图像:

<ImageView
      android:layout_width="32dp"
      android:layout_height="32dp"
      android:src="@drawable/share"
      android:scaleX="-1"
      android:scaleType="fitCenter"/>

这行代码用于镜像矢量图像:

   android:scaleX="-1"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接