目录
动画有下面两种情况:
- 缩放动画(ScaleAnimation)
- 透明度动画(AlphaAnimation)
- 旋转动画(RotateAnimation)
- 平移动画(TranslateAnimation)
由多个单一动画组合在一起的动画
3.Animation 的公用功能
setDuration:设置持续时间。(单位:ms)
setStartOffset:设置开始的延时的时间(单位:ms)
setFillBefore:设置最终是否固定在起始状态。
setFillAfter:设置最终是否固定在最后的状态。
setAnimationListener(AnimationListener listener):设置动画监听。
- <set xmlns:android="http://schemas.android.com/apk/res/android">
-
- <rotate
- android:fromDegrees="0"
- android:toDegrees="360"
- android:pivotX="50%"
- android:pivotY="50%"
- android:startOffset="2000"
- android:duration="2000">
- rotate>
-
- <translate
- android:duration="2000"
- android:fromXDelta="0"
- android:fromYDelta="0"
- android:toXDelta="-400"
- android:toYDelta="2000"
- />
-
-
-
- set>
JAVA代码如下:
- public void onActivityCreated(@Nullable Bundle savedInstanceState) {
- super.onActivityCreated(savedInstanceState);
- final ImageView imageView1=getView().findViewById(R.id.imageView20);
-
- imageView1.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(final View view) {
- Animation animation= AnimationUtils.loadAnimation(getContext(),R.anim.rotate);//装载动画
- Animation animation1=AnimationUtils.loadAnimation(getContext(),R.anim.translate);
- imageView1.startAnimation(animation);//开始动画
- //imageView1.startAnimation(animation1);
-
- //动画监听
-
- animation.setAnimationListener(new Animation.AnimationListener() {
- @Override
- public void onAnimationStart(Animation animation) {
-
- }
-
- @Override
- public void onAnimationEnd(Animation animation) {
- NavController navController= Navigation.findNavController(view);
- navController.navigate(R.id.action_gamestart_to_page3);
- Navigation.findNavController(view).navigate(R.id.action_gamestart_to_page3);
- }
-
- @Override
- public void onAnimationRepeat(Animation animation) {
-
- }
- });
-
- }
-
- });
-
-
- }
然后结果便是,动画先平移,然后绕自身旋转。为解决这个疑问,我便上网搜索,最后便是没找到这个XML配置的两种动画同时进行的解决方案。然后便是尝试单纯用java代码的方式来 解决(即第二种实现方式)。
代码如下(示例):
- public void onActivityCreated(@Nullable Bundle savedInstanceState) {
- super.onActivityCreated(savedInstanceState);
- // final ImageView imageView1=getView().findViewById(R.id.imageView20);
- final TextView textView=getView().findViewById(R.id.textView10);
-
- RotateAnimation animation=new RotateAnimation(0,360,Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF,0.5f);//创建旋转动画对象
- animation.setDuration(5000);
- TranslateAnimation animation1=new TranslateAnimation(Animation.ABSOLUTE,0,Animation.RELATIVE_TO_SELF,-2.5f,Animation.ABSOLUTE,0,Animation.RELATIVE_TO_SELF,0.7f);//创建平移动画对象
- animation1.setDuration(5000);
- final AnimationSet set=new AnimationSet(true);//动画set对象
- set.addAnimation(animation);//加入动画
- set.addAnimation(animation1);
-
-
-
- textView.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(final View view) {
-
- textView.startAnimation(set);//开始动画
- set.setAnimationListener(new Animation.AnimationListener() {
- @Override
- public void onAnimationStart(Animation animation) {
-
- }
-
- @Override
- public void onAnimationEnd(Animation animation) {
- NavController navController= Navigation.findNavController(view);
- navController.navigate(R.id.action_gamestart_to_page3);
- // Navigation.findNavController(view).navigate(R.id.action_gamestart_to_page3);
- }
-
- @Override
- public void onAnimationRepeat(Animation animation) {
-
- }
- });
-
- }
-
- });
-
-
- }
最后成功实现动画的旋转平移同时进行的效果,这里我已经将ImageView点击事件 换为了TextView点击事件。难点便是 TranslateAnimation()当中的参数选取的问题。
参考博文:Animation动画平移和旋转的结合使用_chengjia0847的博客-CSDN博客
android动画平移淡出,Android旋转动画和平移动画混合效果_weixin_39578197的博客-CSDN博客
关于TranslateAnimation()的参数问题_flyiiiiiii的博客-CSDN博客_translateanimation参数
阅读(1h):《社会心理学》
英语(1h):50个单词,10道选择题,一篇阅读题。
编程(5h):android开发
运动:早上起来散了一下步,晚上玩了1.5小时的滑板。