动画是组件的基础特性之一,精心设计的动画使UI变化更直观,有助于改进应用程序的外观并改善用户体验。Java UI 框架提供了数值动画(AnimatorValue)和属性动画(AnimatorProperty),并提供了将多个动画同时操作的动画集合(AnimatorGroup)。
为新巴尔虎左等地区用户提供了全套网页设计制作服务,及新巴尔虎左网站建设行业解决方案。主营业务为成都网站设计、网站制作、新巴尔虎左网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!
AnimatorValue 数值从 0 到 1 变化,本身与 Component 无关。开发者可以设置 0 到 1 变化过程的属性,例如:时长、变化曲线、重复次数等,并通过值的变化改变组件的属性,实现组件的动画效果。
AnimatorValue animator = new AnimatorValue();
animator.setDuration(2000);
animator.setDelay(1000);
animator.setLoopedCount(2);
animator.setCurveType(Animator.CurveType.BOUNCE);
animator.setValueUpdateListener(new AnimatorValue.ValueUpdateListener() {
@Override
public void onUpdate(AnimatorValue animatorValue, float value) {
button.setContentPosition((int) (800 * value), button.getContentPositionY());
}
});
animator.start();
AnimatorGroup 动画效果如图所示:
图1 数值动画效果
为 Component 的属性设置动画是非常常见的需求,Java UI 框架可以为 Component 设置某个属性或多个属性的动画。
AnimatorProperty animator = button.createAnimatorProperty();
animator.moveFromX(50).moveToX(1000).rotate(180).alpha(0).setDuration(2500).setDelay(500).setLoopedCount(5);
animator.start();
可以使用setTarget()改变关联的Component对象。
animator.setTarget(button2);
动画效果如图所示:
图2 属性动画效果
如果需要使用一个组合动画,可以把多个动画对象进行组合,并添加到使用 AnimatorGroup 中。AnimatorGroup 提供了两个方法:runSerially() 和 runParallel(),分别表示动画按顺序开始和动画同时开始。
AnimatorGroup animatorGroup = new AnimatorGroup();
// 4个动画按顺序播放
animatorGroup.runSerially(am1, am2, am3, am4);
// 4个动画同时播放
animatorGroup.runParallel(am1, am2, am3, am4);
animatorGroup.start();
为了更加灵活处理多个动画的播放顺序,例如一些动画顺序播放,一些动画同时播放,Java UI框架提供了更方便的动画Builder接口:
AnimatorGroup.Builder animatorGroupBuilder = animatorGroup.build();
// 4个动画的顺序为: am1 -> am2/am3 -> am4
animatorGroupBuilder.addAnimators(am1).addAnimators(am2, am3).addAnimators(am4)
animatorGroup.start();
动画集合的动画效果如下:
图3 动画集合效果
文章题目:创新互联鸿蒙OS教程:鸿蒙OS动画开发指导
文章起源:http://www.shufengxianlan.com/qtweb/news2/123552.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联