动画在Xamarin中不起作用
问题描述:
我在我的本地平台(android)中使用了下面的代码片段来为该值设置动画效果,并且它在android中正常工作。动画在Xamarin中不起作用
public void setValue(double value) {
if(this.renderer != null)
{
ObjectAnimator anim= ObjectAnimator.ofFloat(this.renderer,"Value",(float)this.value,(float)value);
anim.setDuration(1500);
anim.start();
}
this.value = value;
}
虽然尝试设置NEWVALUE从Xamarin
的Value
财产(Android系统),它设置NEWVALUE但动画xamarin不工作。
我想念什么?
任何时候Android运行时需要调用托管代码都需要Android调用包装器(ACW),并且是必需的,因为在运行时无法向Dalvik注册类。 reference link
所以我试图声明ObjectAnimator anim
早期和动画为下面的值,
public void setValue(double value) {
if(this.renderer != null)
{
anim= ObjectAnimator.ofFloat(this.renderer,"Value",(float)this.value,(float)value);
anim.setDuration(1500);
anim.start();
}
this.value = value;
}
但提到的问题没有解决。
答
的ObjectAnimator试图找到方法的setValue(浮动)您渲染类。
您需要添加[导出]属性以使其对Java端可见。
public class Renderer: Java.Lang.Object
{
private float _value;
[Export]
public float getValue()
{
return _value;
}
[Export]
public void setValue(float value)
{
_value = value;
Log.Debug("TestRenderer", "Value: {0}", value);
}
}
现在,您就可以使用ObjectAnimator这样的:
var renderer = new Renderer();
var anim = ObjectAnimator.OfFloat(renderer, "value", 0f, 1f);
anim.SetDuration(2000);
anim.Start();
更多信息,请参见ObjectAnimator Proxy to Animate TopMargin can't find setting/getter。
也许使用正确的方法名称? Xamarin不使用较低的骆驼案例。 – Cheesebaron 2014-09-24 12:41:36
@Cheesebaron,上面提到的代码在'Android(native)'而不是'Xamarin'中 – 2014-09-24 12:45:21