我正在开发我的第一个Android项目,我开始制作一个简单的启动画面,在主菜单显示之前逐渐变黑。到目前为止它的作用。问题出现在图像淡出后,它会在显示主菜单之前弹回一段时间。
以下是SplashActivity.java的代码:
public class SplashActivity extends Activity
{
LinearLayout mLinearLayout;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.splash);
mLinearLayout = new LinearLayout(this);
ImageView i = new ImageView(this);
i.setImageResource(R.drawable.splash);
mLinearLayout.addView(i);
setContentView(mLinearLayout);
Animation fade = AnimationUtils.loadAnimation(this, R.anim.fade_out);
i.startAnimation(fade);
fade.setAnimationListener(new AnimationListener() {
public void onAnimationEnd(Animation animation)
{
startActivity(new Intent(SplashActivity.this, MenuActivity.class));
SplashActivity.this.finish();
}
public void onAnimationRepeat(Animation arg0) {
}
public void onAnimationStart(Animation arg0) {
}
});
}
}
这是splash.xml的代码:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android = "http://schemas.android.com/apk/res/android"
android:orientation = "vertical"
android:layout_width = "match_parent"
android:layout_height = "match_parent"
android:background = "#000">
</LinearLayout>
最后,这是淡出的xml:
<set android:shareInterpolator="false" xmlns:android="http://schemas.android.com/apk/res/android">
<alpha
android:fromAlpha="1.0"
android:toAlpha="0.0"
android:duration="500"
android:startOffset="2500">
</alpha>
</set>
一对夫妇说: 现在,启动画面仅用于显示(意思是我现在意识到它并没有用于任何真正的目的)。 我可以粘贴AndroidManifest xml或您认为可能需要的任何其他内容。
感谢任何和所有帮助。谢谢!
答案 0 :(得分:3)
动画结束,然后翻转回原先的状态。 Android动画令人困惑,但想象一下你所看到的是海市蜃楼。你正在动画的视图实际上没有任何变化。一旦结束,它就会回到原来的状态。
例如,创建一个100dp x 100dp的按钮,并且缩放的动画很小,或者旋转。非常缓慢地。当它运行时,如果你点击看起来空白的区域,按钮仍然会记录命中。那是因为它仍然“存在”,但你没有看到它。
您需要做的是在动画监听器中设置图像的可见性:
public void onAnimationEnd(Animation animation)
{
startActivity(new Intent(SplashActivity.this, MenuActivity.class));
SplashActivity.this.finish();
i.setVisibility(View.INVISIBLE);
}
您可能需要在onAnimationStart中执行此操作。实验
我前一段时间做了一个演讲。可能有用:
答案 1 :(得分:2)
这会有所帮助。
public void onAnimationEnd(Animation animation)
{
i.setVisibility(View.INVISIBLE);
startActivity(new Intent(SplashActivity.this, MenuActivity.class));
SplashActivity.this.finish();
}