android控件帧动画开始,android – 活动开始时的动画会跳过帧

在视图上调用onGlobalLayoutFinished后,我在动画中设置视图动画.我的动画在开始时跳过~300 ms的帧.如果我将动画延迟超过300毫秒,它不会跳过任何帧.导致这种情况发生的活动是怎么回事?我怎么能阻止它或者我怎么能听完呢?

我创建了一个死的简单应用程序来演示这种行为.

< application>的内容在AndroidManifest.xml中:

android:name=".main.TestLagActivity"

android:label="Test Lag Activity">

TestLagActivity.java:

public class TestLagActivity extends ActionBarActivity {

private View mRedSquareView;

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_test_lag);

mRedSquareView = findViewById(R.id.activity_test_lag_redSquareView);

if (mRedSquareView.getViewTreeObserver() != null) {

mRedSquareView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {

public void onGlobalLayout() {

mRedSquareView.getViewTreeObserver().removeOnGlobalLayoutListener(this);

animate();

}

});

}

}

private void animate() {

ObjectAnimator xAnimator = ObjectAnimator.ofFloat(mRedSquareView, "x", 0, 1000);

xAnimator.setDuration(1000);

xAnimator.start();

}

}

activity_test_lag.xml:

android:layout_width="match_parent"

android:layout_height="match_parent">

android:id="@+id/activity_test_lag_redSquareView"

android:layout_width="50dp"

android:layout_height="50dp"

android:background="#FF0000"/>

在此演示中,红色方块在1000毫秒内从左向右移动1000个像素.如果没有设置延迟,它会大致跳过前300个像素.如果设置了延迟,则可以平滑地动画.请看下面的视频.

欢迎任何评论.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要为控件设置动画,可以按照以下步骤进行操作: 1. 在res目录下创建一个`anim`文件夹,用于存放动画资源文件。 2. 在`anim`文件夹中创建一个XML文件,定义动画的每一。 3. 在代码中找到目标控件,并为其设置动画。 下面是一个示例代码: 1. 首先,在`res/anim`文件夹中创建一个XML文件(例如`frame_animation.xml`),定义动画的每一。以下示例定义了一个渐变的动画: ```xml <animation-list xmlns:android="http://schemas.android.com/apk/res/android" android:oneshot="false"> <item android:drawable="@drawable/frame1" android:duration="200" /> <item android:drawable="@drawable/frame2" android:duration="200" /> <item android:drawable="@drawable/frame3" android:duration="200" /> <!-- 添加更多的 --> </animation-list> ``` 2. 在代码中找到目标控件,并为其设置动画。以下示例将动画应用于一个ImageView: ```java ImageView imageView = findViewById(R.id.imageView); imageView.setBackgroundResource(R.anim.frame_animation); AnimationDrawable animationDrawable = (AnimationDrawable) imageView.getBackground(); animationDrawable.start(); ``` 在上述代码中,我们首先通过`setBackgroundResource()`方法将动画资源设置为ImageView的背景。然后,通过强制类型转换将背景转换为AnimationDrawable对象,并调用`start()`方法开始播放动画。 这样,就可以为控件设置动画了。根据实际需求,可以调整动画率、持续间以及添加更多的
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值