Agg*_*Dev 5 animation android fragment android-activity
我正在尝试实现一个快速的 SplashActivity,它从右向左滑入,然后在 MainActivity 向右滑入时向左滑出。目前,动画 XML 已就位,但它不起作用,启动画面刚刚出现,然后过渡到主要活动也不起作用。这是应用程序的开始活动的 SplashActivity。
public class SplashActivity extends Activity{
private int SPLASH_MILLISECONDS = 1000;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
overridePendingTransition(R.anim.slide_in_left, R.anim.slide_out_right);
setContentView(R.layout.activity_splash);
runTimer();
}
private void runTimer() {
Timer timeout = new Timer();
timeout.schedule(new TimerTask()
{
@Override
public void run()
{
runOnUiThread(new Runnable(){
@Override
public void run() {
goToMainActivity();
}
});
}
}, SPLASH_MILLISECONDS);
}
private void goToMainActivity(){
Intent intent = new Intent(this, MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION );
startActivity(intent);
finish();
overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_left);
}
}
Run Code Online (Sandbox Code Playgroud)
这出于某种原因不起作用,我做错了什么?
编辑:这是我的新 goToMainActivity() 方法,但仍然没有两个动画工作。在这一点上,我不太关心第一个动画的工作,我只希望第二个动画工作。
private void goToMainActivity(){
Intent intent = new Intent(this, MainActivity.class);
startActivity(intent);
overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_left);
finish();
}
Run Code Online (Sandbox Code Playgroud)
我通常从onCreate()正在启动的活动的函数中覆盖动画,这似乎工作得很好。调用者应该startActivity()正常;不要使用overridePendingTransition()或FLAG_ACTIVITY_NO_ANIMATION或其他任何东西。
从实际部署的代码中复制和粘贴:
@Override public void onCreate(Bundle savedState)
{
overridePendingTransition(R.anim.anim_slideup, R.anim.anim_hold);
super.onCreate(savedState);
Run Code Online (Sandbox Code Playgroud)
正如其他人提到的,当您覆盖活动开始的动画时,您还应该覆盖活动结束的动画以匹配。
@Override public void finish()
{
super.finish();
overridePendingTransition(R.anim.anim_hold, R.anim.anim_slidedown);
}
Run Code Online (Sandbox Code Playgroud)
Rod*_*uin -1
问题:
intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION );
Run Code Online (Sandbox Code Playgroud)
您正在尝试禁用活动的动画,从而不给您任何动画
正如文档所说:
If set in an Intent passed to Context.startActivity(), this flag will prevent the system from
applying an activity transition animation to go to the next activity state.
Run Code Online (Sandbox Code Playgroud)
解决方案:
删除这一行
intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION );
Run Code Online (Sandbox Code Playgroud)
编辑:
Intent intent = new Intent(this, MainActivity.class);
startActivity(intent);
overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_left);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11372 次 |
| 最近记录: |