android - Xamarin Android,您如何旋转 Vector Drawable?
问题描述
编辑:查看我自己的答案,我已经添加了更多细节,因为我已经设法通过 XML 获得动画,我不明白为什么我的代码没有做同样的事情。
我正在尝试在 Xamarin Android(不是 Forms)中显示几个 Vector Drawable,并在另一个上旋转其中一个。这个想法是一个计时器,一只手绕着时钟走。我在手似乎做了几个完整的旋转然后停在一个随机的角度。所以它可以在旋转完成后停在 3 点或 10 点。
我原以为我正在尝试做的事情将以编程方式完成,而不是通过 XML,但是我找不到任何好的信息来开始我的工作。我对基本 Android 不太熟悉(我对 Xamarin Forms 很熟悉)。
我可以让脸部和手部都显示在 ImageView 控件中。这是我使用 layer-list.xml 和 LayerDrawable 完成的。我尝试使用 fromRotation 和 toRotation 集从手上创建一个 RotateDrawable,然后将其应用于 LayerDrawbale。它确实绘制但不旋转。同样适用于 layer-list xml,两者都绘制,手没有旋转。
我试过在这里和谷歌搜索,到目前为止我找不到任何可靠的东西让我开始。只是 XML 的片段。我觉得我错过了一些非常基本的东西。
任何帮助都是巨大的。
这是图层列表的 xml
<layer-list
xmlns:android="http://schemas.android.com/apk/res/android"
>
<item
android:drawable="@drawable/Clock"/>
<item>
<rotate
android:drawable="@drawable/Needle"
android:pivotX="50%"
android:pivotY="1%"
android:fromDegrees="0"
android:toDegrees="1080"
/>
</item>
</layer-list>
将图层列表设置为 Imageview 的代码。
ImageView clockDisplay = FindViewById<ImageView>(Resource.Id.ThreePlayers);
Drawable clock = VectorDrawableCompat.Create(Resources, Resource.Drawable.Clock, null);
clockDisplay.SetImageDrawable(clock);
/*
I have also used the following to no avail.
RotateDrawable clockRotate = new RotateDrawable();
clockRotate.Drawable = needle;
clockRotate.FromDegrees = 180;
clockRotate.ToDegrees = 180;
clockDisplay.SetImageDrawable(clockRotate);
*/
干杯安迪。
解决方案
编辑:我已经完全改变了这个答案。
根据主帖评论中的建议,我通过旋转图像视图来进行旋转。
使用 AnimationSet 和 OhectAnimator 对 ImageView 进行动画处理,一种使用 Spring Animator,另一种尝试直接在 C# 中对 VectorDrawable 进行动画处理
前两个按预期工作,对于我正在从事的项目来说已经足够了,因为我只需要轮换。
但是,如果不对 ImageView 控件进行动画处理,就不能在 C# 中对 VectorDrawable 进行动画处理吗?
如果我在 XML 中创建静态动画,我可以操作 VectorDrawable 的不同层并分别为它们设置动画,这肯定可以在 C# 中完成吗?
我开始认为不可能以编程方式进行。|
有什么建议吗?谢谢。安迪。
推荐阅读
- javascript - 如何从 async/await 方法的 catch 块返回 promise(reject)?
- javascript - 使用 element.innerHTML 插入服务器返回和转义的 html 是安全的
- asynchronous - 如何解决传递 Future 的错误
实例作为参数? - python - 将字典列表转换为 2 深嵌套字典
- javascript - .innerHTML 丢失 HTML 语法格式
- listview - ListView Itemsource 不显示对象 Xamarin Forms
- python - 更新到 Django 2.2.4 和 python 3.7 (toml.py) 后无法运行 mange.py runserver
- php - 如何在 Laravel 的登录页面部分中为表单设置路由?
- javascript - 使用带有 JavaScript 的事件委托设置删除事件侦听器的有效方法是什么
- can-bus - candump 实用程序不打印非 FD 帧上数据长度的前导零?