首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Xamarin.Android中使用Value Animator?

如何在Xamarin.Android中使用Value Animator?
EN

Stack Overflow用户
提问于 2020-10-13 17:41:10
回答 1查看 148关注 0票数 1

我尝试使用Xamarin.Android中的Value Animator通过增加对象的X和Y坐标来移动对象。我将自己定位于Java的Android文档。

代码语言:javascript
复制
using Android.Support.V4.View;
using Android.Animation;

namespace PaintApp
{
    class PaintView : View
    {
        
        private Pair ofsetXY = new Pair(0, 0);
        private ValueAnimator animator = new ValueAnimator();
        PropertyValuesHolder propertyX = PropertyValuesHolder.OfInt("PROPERTY_X", 0, 1000);
        PropertyValuesHolder propertyY = PropertyValuesHolder.OfInt("PROPERTY_Y", 0, 1000);


        public void Kick(float dx, float dy, float vx, float vy)
        {
            animator.SetValues(propertyX, propertyY);
            animator.SetDuration(2000);
            animator.AddUpdateListener(new ValueAnimator.IAnimatorUpdateListener()
            {
                public override void OnAnimationUpdate(ValueAnimator animation)
                {
                    ofsetXY.First = (int)animation.GetAnimatedValue("PROPERTY_X");
                    ofsetXY.Second = (int)animation.GetAnimatedValue("PROPERTY_Y");
                    Invalidate();
                }
            });
         animator.start();
        }
}

但是我得到了一个错误: Error CS0144无法创建抽象类或接口'"ValueAnimator.IAnimatorUpdateListener"‘的实例,并且OnAnimationUpdate不是PaintView的成员。

这个错误对我来说是有道理的,但是什么才是正确的方法呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-13 18:40:39

.In在你的情况下,你可以像下面这样修改代码

代码语言:javascript
复制
class PaintView : Android.Views.View, IAnimatorUpdateListener
{
    private Pair ofsetXY = new Pair(0, 0);
    private ValueAnimator animator = new ValueAnimator();
    PropertyValuesHolder propertyX = PropertyValuesHolder.OfInt("PROPERTY_X", 0, 1000);
    PropertyValuesHolder propertyY = PropertyValuesHolder.OfInt("PROPERTY_Y", 0, 1000);

    public void Kick(float dx, float dy, float vx, float vy)
    {
        animator.SetValues(propertyX, propertyY);
        animator.SetDuration(2000);
        animator.AddUpdateListener(this);
        animator.start();
    }

    public void OnAnimationUpdate(ValueAnimator animation)
    {
        ofsetXY.First = (int)animation.GetAnimatedValue("PROPERTY_X");
        ofsetXY.Second = (int)animation.GetAnimatedValue("PROPERTY_Y");
  
        Invalidate();
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64332659

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档