您好我正在开发应用程序并且我正在制作一个启动屏幕然后将其带到注册屏幕。应用程序在启动画面后崩溃。
splashscreen.java
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_splashscreen);
Animation anim1 = AnimationUtils.loadAnimation(this,R.anim.anim_down);
ImageView img =(ImageView)findViewById(R.id.imageView);
img.setAnimation(anim1);
ProgressBar mprogressBar = (ProgressBar) findViewById(R.id.progressBar);
ObjectAnimator anim = ObjectAnimator.ofInt(mprogressBar,"progress",0,100);
anim.setDuration(4000);
anim.setInterpolator(new DecelerateInterpolator());
anim.start();
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
startActivity(new Intent(splashscreen.this,signup.class));
}
},3000);
}
AndroidManfiest.xml
<uses-permission android:name="android.permission.INTERNET" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity" />
<activity android:name=".splashscreen">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".login" />
<activity android:name=".signup" />
<activity android:name=".ResetPasswordActivity" />
</application>
什么是错的?请帮忙
答案 0 :(得分:0)
如果您提供错误日志会更好。但我所看到的是你给了你的ObjectAnimator动画对象4000毫秒。
另一方面,在3000毫秒后,您将用户转移到注册活动。
因此,一旦加载了注册活动,对象将无法找到启动画面上下文。这可能是应用程序崩溃的原因。
你可以解决它
handler.postDelayed(new Runnable() {
@Override
public void run() {
startActivity(new Intent(splashscreen.this, signup.class));
}
}, 4000);
或者您可以将动画侦听器用于 ObjectAnimator
ObjectAnimator anim =
ObjectAnimator.ofInt(mprogressBar, "progress", 0, 100);
anim.setDuration(4000);
anim.setInterpolator(new DecelerateInterpolator());
anim.addListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
startActivity(new Intent(splashscreen.this, signup.class));
}
});
anim.start();
在我看来,第二种方法更好,因为它可以确保完成动画。
同时检查 anim_down 动画时长。