Roy*_*erg 16 android android-animation android-transitions
我有一个用例,我主要通过转换开始一个活动,但从导航抽屉打开它时不是这种情况.
为了保持过渡顺利,我有一个Transition.TransitionListener在转换完成时触发一些UI更新.
所以我有这样的事情:
public class SomeActivity extends Activity {
public void onCreate(Bundle savedInstanceState){
// ...
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) {
Transition sharedElementEnterTransition = getWindow().getSharedElementEnterTransition();
sharedElementEnterTransition.addListener(new Transition.TransitionListener() {
// ...
@Override
public void onTransitionEnd(Transition transition) {
doSomeUiUpdating();
}
});
} else { // Pre-Lollipop
doSomeUiUpdating();
}
}
}
Run Code Online (Sandbox Code Playgroud)
这种运作良好,开始与动漫活动的时候,但我怎么能知道,如果活动未经过渡开始,这样我可以打电话doSomeUiUpdating()?
我敢肯定,必须有一个简单的方法Activity,Window,Transition或地方,我都忽略了.我不想在调用Activity上中继设置一些告诉动画是否显示的包.
您可以尝试onTransitionStart设置TransitionListener一些布尔值isAnimationStarted。
public class SomeActivity extends Activity {
private boolean isAnimationStarted = false;
public void onCreate(Bundle savedInstanceState) {
// ...
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) {
Transition sharedElementEnterTransition = getWindow().getSharedElementEnterTransition();
sharedElementEnterTransition.addListener(new Transition.TransitionListener() {
// ...
@Override
public void onTransitionEnd(Transition transition) {
doSomeUiUpdating();
}
@Override
public void onTransitionStarted(Transition transition) {
isAnimationStarted = true;
}
});
}
}
public void onStart() {
if (!isAnimationStarted) {
doSomeUiUpdating();
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1700 次 |
| 最近记录: |