Animation 如何向android wear watch face添加动画?

Animation 如何向android wear watch face添加动画?,animation,wear-os,Animation,Wear Os,我正在为android wear制作一个手表面,我制作了一些很好的动画,我想添加到手表面中。顺便说一句,我不明白我必须在哪里添加代码才能从XML加载动画并启动/停止它们 这是java代码: /* *版权所有(C)2014安卓开源项目 * *根据Apache许可证2.0版(以下简称“许可证”)获得许可; *除非遵守许可证,否则不得使用此文件。 *您可以通过以下方式获得许可证副本: * * http://www.apache.org/licenses/LICENSE-2.0 * *除非适

我正在为android wear制作一个手表面,我制作了一些很好的动画,我想添加到手表面中。顺便说一句,我不明白我必须在哪里添加代码才能从XML加载动画并启动/停止它们

这是java代码:

/*
*版权所有(C)2014安卓开源项目
*
*根据Apache许可证2.0版(以下简称“许可证”)获得许可;
*除非遵守许可证,否则不得使用此文件。
*您可以通过以下方式获得许可证副本:
*
*      http://www.apache.org/licenses/LICENSE-2.0
*
*除非适用法律要求或书面同意,软件
*根据许可证进行的分发是按“原样”进行分发的,
*无任何明示或暗示的保证或条件。
*请参阅许可证以了解管理权限和权限的特定语言
*许可证下的限制。
*/
包com.udellent.layoutwatchface;
导入android.content.BroadcastReceiver;
导入android.content.Context;
导入android.content.Intent;
导入android.content.IntentFilter;
导入android.content.res.Resources;
导入android.graphics.Canvas;
导入android.graphics.Color;
导入android.graphics.Point;
导入android.graphics.Rect;
导入android.graphics.Typeface;
导入android.os.Bundle;
导入android.os.Handler;
导入android.os.Message;
导入android.support.wearable.watchface.CanvasWatchFaceService;
导入android.support.wearable.watchface.WatchFaceStyle;
导入android.text.format.Time;
导入android.util.Log;
导入android.view.Display;
导入android.view.LayoutInflater;
导入android.view.SurfaceHolder;
导入android.view.view;
导入android.view.ViewGroup;
导入android.view.WindowInsets;
导入android.view.WindowManager;
导入android.widget.TextView;
导入java.util.TimeZone;
导入java.util.concurrent.TimeUnit;
/**
*带秒的数字表面。在环境模式下,不显示秒数。在具有
*低位环境模式,在环境模式下绘制文本时不使用抗锯齿。
*/
公共类LayoutFaceService扩展了CanvasWatchFaceService{
专用静态最终字体普通字体=
创建(Typeface.SANS_SERIF,Typeface.NORMAL);
/**
*交互式模式的更新速率(以毫秒为单位)。我们每秒更新一次,因为秒数为
*以交互模式显示。
*/
私有静态最终长交互更新速率=时间单位。秒。托米利斯(1);
@凌驾
公共引擎onCreateEngine(){
返回新发动机();
}
私有类引擎扩展了CanvasWatchFaceService.Engine{
静态最终整数消息更新时间=0;
/**
*处理程序在交互模式下定期更新时间。
*/
最终处理程序mUpdateTimeHandler=新处理程序(){
@凌驾
公共无效handleMessage(消息消息){
开关(消息。什么){
案例消息更新时间:
使无效();
if(shouldTimerBeranning()){
long-timeMs=System.currentTimeMillis();
long delayMs=交互式更新速率
-(timeMs%交互式更新速率);
sendEmptyMessageDelayed(消息更新时间,delayMs);
}
打破
}
}
};
最终BroadcastReceiver mTimeZoneReceiver=新的BroadcastReceiver(){
@凌驾
公共void onReceive(上下文、意图){
mTime.clear(intent.getStringExtra(“时区”);
mTime.setToNow();
}
};
布尔值mRegisteredTimeZoneReceiver=false;
布尔乳头;
时间mTime;
浮动mXOffset=0;
float mYOffset=0;
私有内部规范,规范;
私人视野;
私有文本查看日、日、月、时、分、秒;
私有最终点显示大小=新点();
/**
*在环境模式下,显示器是否支持每种颜色的较少位。如果为true,则
*在环境模式下禁用抗锯齿。
*/
布尔MLOWBITA环境;
@凌驾
创建后的公共作废(表面持有人){
super.onCreate(持有者);
setWatchFaceStyle(新建WatchFaceStyle.Builder(LayoutFaceService.this)
.SetCardPeek模式(WatchFaceStyle.PEEK_模式_SHORT)
.setBackgroundVisibility(WatchFaceStyle.BACKGROUND\u VISIBILITY\u中断)
.setShowSystemUiTime(假)
.build());
Resources=LayoutFaceService.this.getResources();
mTime=新时间();
//将我们用于手表表面的布局充气
LayoutFlater充气器=(LayoutFlater)getSystemService(Context.LAYOUT\u充气器\u服务);
myLayout=充气机充气(R.layout.watchface,空);
//加载显示规格-稍后我们将需要它来测量我的布局
Display Display=((WindowManager)getSystemService(Context.WINDOW\u服务))
.getDefaultDisplay();
display.getSize(displaySize);
//找到一些视图供以后使用
day=(TextView)myLayout.findViewById(R.id.day);
date=(TextView)myLayout.findViewById(R.id.date);
month=(TextView)myLayout.findViewById(R.id.month);
hour=(TextView)myLayout.findViewById(R.id.hour);
分钟=(TextView)myLayout.findViewById(R.id.minute);
second=(TextView)myLayout.findViewById(R.id.second);
}
@凌驾
公共空间{
移除消息(消息更新时间);
super.ondestory();
View yourLayer = ..... // provide the view you wanna play with
int i=0;
Runnable moveToLeftAnimation = new Runnable(){ 
   public void run(){
       yourLayer.setPadding(0, i+10, 0, 0);
       new Handler().post(this, 1000); 
   }
};
new Handler().post(moveToLeftAnimation, 1000)