图片从左向右无限滑动
Image sliding from left to right infinitely
我希望有一个像这样的 gif 动画背景:
.
我没有 mac 或 adobe after effects 软件来为此类动画创建 lottie json
,我想要对动画有更多的控制,而不是简单地使用 gif。根据我在互联网上阅读的内容,我必须使用 TransitionManager
或 TranslationAnimation
,但我无法找出正确的代码。
我也很想知道是否有插件,或者有什么方法可以对已经可用的 lottie 文件进行微调,例如背景颜色更改、项目颜色更改、项目删除等,就像我们可以为简单的矢量图像(使用 Android Studio,或者至少使用一些免费软件)。我找到了 this lottie 文件,它对我来说非常有用,但我无法修改它的颜色
找到了!当我记录 view.getX()
或 view.getRootView().getX()
等变量的值时,我能够弄清楚,我的视图的位置为 0,0 。所以在那之后,需要找到屏幕尺寸才能最终制作出这个无限的云移动动画。我不确定这个功能在内存或性能方面是否好,但在我的设备上,它 运行 顺利。
private void showCloudMovingContinuouslyAnimation(View v) {
DisplayMetrics displayMetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
int runtimeScreenWidth = displayMetrics.widthPixels;
int totalDuration = runtimeScreenWidth*5;
int viewPositionX = 0, viewPositionY = 0;
TranslateAnimation outToRight = new TranslateAnimation(
viewPositionX, (runtimeScreenWidth / 2f) + 50,
viewPositionY, viewPositionY);
outToRight.setDuration(totalDuration / 2);
outToRight.setRepeatCount(Animation.INFINITE);
TranslateAnimation inFromLeft = new TranslateAnimation(
-((runtimeScreenWidth / 2f) + 50), viewPositionX,
viewPositionY, viewPositionY
);
inFromLeft.setDuration(totalDuration / 2);
inFromLeft.setRepeatCount(Animation.INFINITE);
boolean shouldRemainThereAfterAnimationFinishes = true;// useful when animating for single time
AnimationSet animationSet=new AnimationSet(true);
animationSet.setInterpolator(new LinearInterpolator());
animationSet.setRepeatCount(Animation.INFINITE);
animationSet.addAnimation(inFromLeft);
animationSet.addAnimation(outToRight);
v.startAnimation(animationSet); // start animation
}
我希望有一个像这样的 gif 动画背景:
我没有 mac 或 adobe after effects 软件来为此类动画创建 lottie json
,我想要对动画有更多的控制,而不是简单地使用 gif。根据我在互联网上阅读的内容,我必须使用 TransitionManager
或 TranslationAnimation
,但我无法找出正确的代码。
我也很想知道是否有插件,或者有什么方法可以对已经可用的 lottie 文件进行微调,例如背景颜色更改、项目颜色更改、项目删除等,就像我们可以为简单的矢量图像(使用 Android Studio,或者至少使用一些免费软件)。我找到了 this lottie 文件,它对我来说非常有用,但我无法修改它的颜色
找到了!当我记录 view.getX()
或 view.getRootView().getX()
等变量的值时,我能够弄清楚,我的视图的位置为 0,0 。所以在那之后,需要找到屏幕尺寸才能最终制作出这个无限的云移动动画。我不确定这个功能在内存或性能方面是否好,但在我的设备上,它 运行 顺利。
private void showCloudMovingContinuouslyAnimation(View v) {
DisplayMetrics displayMetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
int runtimeScreenWidth = displayMetrics.widthPixels;
int totalDuration = runtimeScreenWidth*5;
int viewPositionX = 0, viewPositionY = 0;
TranslateAnimation outToRight = new TranslateAnimation(
viewPositionX, (runtimeScreenWidth / 2f) + 50,
viewPositionY, viewPositionY);
outToRight.setDuration(totalDuration / 2);
outToRight.setRepeatCount(Animation.INFINITE);
TranslateAnimation inFromLeft = new TranslateAnimation(
-((runtimeScreenWidth / 2f) + 50), viewPositionX,
viewPositionY, viewPositionY
);
inFromLeft.setDuration(totalDuration / 2);
inFromLeft.setRepeatCount(Animation.INFINITE);
boolean shouldRemainThereAfterAnimationFinishes = true;// useful when animating for single time
AnimationSet animationSet=new AnimationSet(true);
animationSet.setInterpolator(new LinearInterpolator());
animationSet.setRepeatCount(Animation.INFINITE);
animationSet.addAnimation(inFromLeft);
animationSet.addAnimation(outToRight);
v.startAnimation(animationSet); // start animation
}