Tev*_*n J 10 animation android view viewgroup
我想为视图的填充中的更改设置动画.翻译动画的静止位置与我想要应用的填充相同.
TranslateAnimation moveleft = new TranslateAnimation(Animation.ABSOLUTE, 0.0f,
Animation.ABSOLUTE, PADDING, Animation.ABSOLUTE,
0.0f, Animation.ABSOLUTE, 0.0f);
moveLeft.setDuration(500);
moveLeft.setFillAfter(true);
Run Code Online (Sandbox Code Playgroud)
这将启动视图的动画,然后设置填充.这并不完全有效,因为它会导致图形故障.
v.startAnimation(moveleft);
v.setPadding(PADDING, 0, 0,0);
Run Code Online (Sandbox Code Playgroud)
Ami*_*dav 44
使用ValueAnimator,它非常简单和整洁
比方说,我们必须将右边填充更改为_20dp,其中左边,顶部和底部填充分别为_6dp,_6dp和0.
ofInt()是varagrs类型.我们设置动画的值是作为KeyValue对传递的(arg1 =当前值,arg2 =目标值,............)
开始了,
ValueAnimator animator = ValueAnimator.ofInt(view.getPaddingRight(), _20dp);
animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator valueAnimator){
view.setPadding(_6dp, _6dp, (Integer) valueAnimator.getAnimatedValue(), 0);
}
});
animator.setDuration(200);
animator.start();
Run Code Online (Sandbox Code Playgroud)
与其立即设置填充,为什么不尝试使用动画监听器在动画完成后设置填充呢?
v.setAnimationListener(new Animation.AnimationListener() {
...
@Override
public void onAnimationEnd(){
v.setPadding(PADDING, 0, 0,0);
}
...
});
v.startAnimation(moveleft);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8690 次 |
| 最近记录: |