博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android-通过Java代码来实现属性动画
阅读量:5934 次
发布时间:2019-06-19

本文共 2659 字,大约阅读时间需要 8 分钟。

Android-通过Java代码来实现属性动画


除了能够使用定义xml文件来设置动画之外。还能够使用java代码来进行控制动画。

示比例如以下:


布局文件:

主活动:

package com.xieth.as.againanimdemo;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.view.animation.TranslateAnimation;import android.widget.ImageView;import android.widget.Toast;public class MainActivity2 extends AppCompatActivity {
private ImageView imageView = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main2); imageView = (ImageView) findViewById(R.id.id_img); } public void click(View view) { Toast.makeText(this, "click", Toast.LENGTH_SHORT).show(); } public void move(View view) { TranslateAnimation animation = new TranslateAnimation(0, 200, 0, 0); // 设置显示的时长 animation.setDuration(1000); imageView.startAnimation(animation); }}

设置事件

移动

TranslateAnimation animation = new TranslateAnimation(0, 200, 0, 0);// 设置显示的时长animation.setDuration(1000);imageView.startAnimation(animation);

执行:

这里写图片描写叙述


这里写图片描写叙述

ObjectAnimator.ofFloat(imageView, "translationX", 0F, 200F).setDuration(1000).start();

执行:

这里写图片描写叙述
能够看见效果是一样的。


改动一下代码:

ObjectAnimator.ofFloat(imageView, "translationY", 0F, 200F).setDuration(1000).start();

这次是Y方向:

这里写图片描写叙述


旋转

ObjectAnimator.ofFloat(imageView, "rotation", 0F, 360F).setDuration(1000).start();

执行:

这里写图片描写叙述


组合动画

ObjectAnimator.ofFloat(imageView, "rotation", 0F, 360F).setDuration(1000).start();          ObjectAnimator.ofFloat(imageView, "translationX", 0F, 360F).setDuration(1000).start();          ObjectAnimator.ofFloat(imageView, "translationY", 0F, 360F).setDuration(1000).start();

执行:

这里写图片描写叙述
能够看到这三个动画同一时候执行


使用PropertyValuesHolder

PropertyValuesHolder p1 = PropertyValuesHolder.ofFloat("rotation", 0F, 360F);        PropertyValuesHolder p2 = PropertyValuesHolder.ofFloat("translationX", 0F, 200F);        PropertyValuesHolder p3 = PropertyValuesHolder.ofFloat("translationY", 0F, 200F);        ObjectAnimator.ofPropertyValuesHolder(imageView, p1, p2, p3).setDuration(1000).start();

执行:

这里写图片描写叙述


使用AnimatorSet

ObjectAnimator a1 = ObjectAnimator.ofFloat(imageView, "rotation", 0F, 360F);ObjectAnimator a2 = ObjectAnimator.ofFloat(imageView, "translationX", 0F, 360F);ObjectAnimator a3 = ObjectAnimator.ofFloat(imageView, "translationY", 0F, 360F);AnimatorSet set = new AnimatorSet();set.setDuration(1000);set.playTogether(a1, a2, a3);set.start();

执行:

这里写图片描写叙述
效果一样。


之前都是同事播放的。如今能够依照顺序来执行。

set.playSequentially(a1, a2, a3);

执行:

这里写图片描写叙述

能够看到先旋转,再向X方向移动。再向Y方向移动。


也可这样进行顺序控制。

先同一时候执行X和Y方向的移动,再进行旋转

set.play(a2).with(a3);set.play(a1).after(a2);

执行:

这里写图片描写叙述


你可能感兴趣的文章
《 产品设计思维:电商产品设计全攻略》一一1.2 互联网设计思维
查看>>
《R语言编程艺术》——1.2 第一个R会话
查看>>
Tay继任者:微软人工智能聊天机器人Zo上线测试
查看>>
农业物联网应用发展分析
查看>>
5G进度卡关 联发科应如何解困?
查看>>
工信部全面推进移动物联网(NB-IoT)建设发展
查看>>
微软员工:与纳德拉共事,像坐过山车一样刺激
查看>>
《Ext JS权威指南》——2.2节配置使用Ext JS库
查看>>
美第四大有线服务供应商宣布5年完成10Gbps光纤网络推广工作
查看>>
前三季度贵安新区完成大数据产业规模197.96亿元
查看>>
瞄准500亿元规模 湖北打造国家级大数据产业基地
查看>>
联想集团涨超7% 杨元庆持股比例升至8.12%
查看>>
知识产权服务商智慧芽完成C轮融资 红衫资本领投
查看>>
云计算出海!阿里云将成新加坡智慧国家战略“军师”
查看>>
美国新泽西光纤交易所扩建数据中心校园设施
查看>>
大杀器!苹果A10X处理器曝光:10nm工艺/全新GPU
查看>>
网络边界的迷失?关键要获得真实可视性
查看>>
城市智慧商圈将进行试点建设
查看>>
评论:是什么能够让英特尔、清华大学等三方携手?
查看>>
携手易维帮助台,神州数码轻松搞定IT外包服务
查看>>