Android Runnable 中的动画
Android Animation in Runnable
动画新手。我的目标是每小时从屏幕顶部向底部滚动一条细黑条。我的黑条基于按下按钮滚动。我找到了一个 Runnable 示例,它可以重复 运行 一个动作。在我的代码中,正在调用我的 y 回调函数,但我的动画从未启动。
我的黑条是视图,不可见。
<View
android:id="@+id/blackSlider"
android:layout_width="match_parent"
android:layout_height="2dp"
android:background="@color/black"
android:layout_alignParentTop="true"
android:visibility="gone"/>
当按下按钮触发时,我的动画效果非常好
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:fromYDelta="0%p"
android:toYDelta="100%p"
android:fillAfter="true"
android:interpolator="@android:anim/linear_interpolator"
android:duration="500" />
</set>
我的 运行nable 是在我的 main activity
中创建的
occupancyButton = (Button)findViewById(R.id.occupancy_button);
blackSlider = (View) findViewById(R.id.blackSlider);
animation = AnimationUtils.loadAnimation(mContext, R.anim.screen_wipe_top_down);
animation.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
blackSlider.setVisibility(View.VISIBLE);
blackSlider.bringToFront();
getActionBar().hide();
}
@Override
public void onAnimationEnd(Animation animation) {
blackSlider.setVisibility(View.GONE);
getActionBar().show();
}
@Override
public void onAnimationRepeat(Animation animation) {
}
});
OneShotRunner animationRunner = new OneShotRunner(5000, true);
OneShotActionCallback animationRunnerCallback = new OneShotActionCallback() {
@Override
public void onActionRun() {
blackSlider.startAnimation(animation);
}
};
animationRunner.setOneShotRunActionCallback(animationRunnerCallback);
animationRunner.start();
如果我在点击侦听器上使用 occupancyButon,动画就会正确触发。从 运行nable 开始时,永远不会调用动画开始和结束函数。动画不能 运行 来自 运行nable 吗?我是不是初始化不正确?
确保在 UI 线程中启动动画。否则它们可能无法工作。
动画新手。我的目标是每小时从屏幕顶部向底部滚动一条细黑条。我的黑条基于按下按钮滚动。我找到了一个 Runnable 示例,它可以重复 运行 一个动作。在我的代码中,正在调用我的 y 回调函数,但我的动画从未启动。
我的黑条是视图,不可见。
<View
android:id="@+id/blackSlider"
android:layout_width="match_parent"
android:layout_height="2dp"
android:background="@color/black"
android:layout_alignParentTop="true"
android:visibility="gone"/>
当按下按钮触发时,我的动画效果非常好
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:fromYDelta="0%p"
android:toYDelta="100%p"
android:fillAfter="true"
android:interpolator="@android:anim/linear_interpolator"
android:duration="500" />
</set>
我的 运行nable 是在我的 main activity
中创建的 occupancyButton = (Button)findViewById(R.id.occupancy_button);
blackSlider = (View) findViewById(R.id.blackSlider);
animation = AnimationUtils.loadAnimation(mContext, R.anim.screen_wipe_top_down);
animation.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
blackSlider.setVisibility(View.VISIBLE);
blackSlider.bringToFront();
getActionBar().hide();
}
@Override
public void onAnimationEnd(Animation animation) {
blackSlider.setVisibility(View.GONE);
getActionBar().show();
}
@Override
public void onAnimationRepeat(Animation animation) {
}
});
OneShotRunner animationRunner = new OneShotRunner(5000, true);
OneShotActionCallback animationRunnerCallback = new OneShotActionCallback() {
@Override
public void onActionRun() {
blackSlider.startAnimation(animation);
}
};
animationRunner.setOneShotRunActionCallback(animationRunnerCallback);
animationRunner.start();
如果我在点击侦听器上使用 occupancyButon,动画就会正确触发。从 运行nable 开始时,永远不会调用动画开始和结束函数。动画不能 运行 来自 运行nable 吗?我是不是初始化不正确?
确保在 UI 线程中启动动画。否则它们可能无法工作。