[英]ImageView as a splash screen not working
我的Android应用程序需要花一些时间进行初始化,因此我想在加载屏幕出现之前显示启动图像,然后将其隐藏。 我搜索了stackoverflow并找到了一些解决方案。 我试图按照本教程进行操作 , 该教程说明了如何实现在启动活动中启动的正确启动屏幕,但并不能解决我的问题,因为启动屏幕和加载屏幕之间仍然存在几秒钟的黑屏(它是从C ++代码的单独线程进行渲染的,并且必须在渲染开始之前初始化一堆东西,请不要要求更改该部分,这是一个跨平台的C ++引擎)。 接下来,我尝试了一个从此处获取的ProgressDialog,在main活动的onCreate中启动了它,并在C ++部件开始实际渲染时将其隐藏,并且除了不是初始图像外,它都可以正常工作。 但是时间正是我所需要的。 然后我用ImageView替换了它,但是它不起作用(没有显示图像)。
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
//...
mImageView = new ImageView(this);
mImageView.setScaleType(ScaleType.FIT_XY);
mImageView.setImageResource(R.drawable.splash_bg);
setContentView(mImageView);
}
splash_bg.png被放入res / drawable文件夹,并在启动活动中正常显示。 什么东西少了?
xml for splash screen.
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/imageView1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/ic_splash_screen" />
</RelativeLayout>
In MainActivity
public class Splash extends Activity {
private final int SPLASH_DISPLAY_LENGHT = 1000;
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.splashscreen);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
Intent mainIntent = new Intent(Splash.this,
MainActivity.class);
Splash.this.startActivity(mainIntent);
Splash.this.finish();
}
}, SPLASH_DISPLAY_LENGHT);
}
}
您应该为您的启动活动设置主题,例如:
<style name="AppTheme.Splash" parent="YOURMAIN_THEME">
<item name="android:windowBackground">@drawable/splash_bg</item>
</style>
然后在可绘制的目录splash_bg.xml中创建飞溅,如下所示:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:drawable="@drawable/splash_background"/>
<item
android:top="30dp">
<bitmap
android:gravity="top"
android:src="@drawable/demo_logo"
/>
</item>
<item>
<bitmap
android:gravity="center"
android:src="@drawable/demo_emlogo"/>
</item>
</layer-list>
在您的onCreate(Bundle savedInstance)方法中添加以下行:
mImageView = new ImageView(this);
mImageView.setScaleType(ScaleType.FIT_XY);
mImageView.setImageResource(R.drawable.splash_bg);
LayoutParams imageViewLayoutParams
= new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
mImageView.setLayoutParams(imageViewLayoutParams);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.