【问题标题】:How do I set a group parameter of Vector Drawable programmatically?如何以编程方式设置 Vector Drawable 的组参数?
【发布时间】:2016-05-04 09:28:08
【问题描述】:

我有一个矢量可绘制对象,我想根据应用程序中的某些输入来旋转它。

我有一个vector_drawable.xml

<vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:width="100dp"
    android:height="100dp"
    android:viewportWidth="100"
    android:viewportHeight="100">

    <group
      android:name="rotation_group"
      android:pivotX="50"
      android:pivotY="50"
      android:rotation="180" >
      <path
          android:pathData="..."
          android:fillColor="#ffffff"/>
      <path
          android:pathData="..."
          android:fillColor="#ffffff"/>
    </group>

    <path
        android:pathData="..."
        android:fillColor="#242424"/>
</vector>

在我的代码中,我创建了一个 ValueAnimator

ValueAnimator animator = ObjectAnimator.ofInt(myDrawable, "rotate", 0, 360);
animator.setDuration(500);
animator.addUpdateListener(animatorUpdateListener);
animator.start();

animatorUpdateListener 定义如下:

animatorUpdateListener = new AnimatorUpdateListener() {
  @Override
  public void onAnimationUpdate(ValueAnimator valueAnimator) {
    int angle = (int) valueAnimator.getAnimatedValue("rotate");
    myAngle = angle;
    myView.invalidate();
  }
};

然后在我的 onDraw 方法中调用

canvase.save(Canvas.MATRIX_SAVE_FLAG);
canvas.rotate(myAngle);
myDrawable.draw(canvas);
canvas.restore();

我如何能够更改我的 vector_drawable.xml 的 rotation_group 内的 android:rotation 参数,而不是旋转画布?

非常感谢!

【问题讨论】:

    标签: java android xml animation android-vectordrawable


    【解决方案1】:

    你不能。无法即时更改 XML 源定义。 AnimatedVectorDrawable 可以有效地更改 android:rotation 参数,但似乎只能更改为预定义的值,而不是以编程方式。

    另一种解决方案是在绘制 Canvas 时旋转它,就像您目前所做的那样。

    或者也许将您的 VectorDrawable 包裹在 RotateDrawable 中并改为绘制它。

    setRotation 在整个视图中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-05-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-13
      • 2016-06-12
      • 2018-04-16
      • 2011-12-28
      相关资源
      最近更新 更多