我正在尝试在我的应用程序中实现启动画面。 不幸的是,我现在使用的代码没有任何显示,它直接跳到了我的第一个活动中。 这是我的launch_screen.xml文件中的代码,该文件位于我的可绘制文件夹中:
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" android:opacity="opaque">
<item android:drawable="@android:color/white"/>
<item
android:drawable="@drawable/ic_splashscreen2"
android:gravity="center"
/>
</layer-list>
请注意,可绘制文件是矢量资产。
这是我的styles.xml文件中的代码,在这里我使用这个launch_screen.xml文件创建一个新主题:
<style name="AppTheme.Launcher">
<item name="android:windowBackground">@drawable/launch_screen</item>
清单中的代码
<activity android:name=".ViewEventsActivity"
android:theme="@style/AppTheme.Launcher">
<intent-filter>
<action android:name="android.intent.action.MAIN"
/>
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
谁能告诉我我在做什么错以及如何解决这个问题?
答案 0 :(得分:1)
如果您没有在启动屏幕上使用单独的活动,则可以在清单文件中的活动上设置启动主题:
<activity
android:name=".MainActivity"
android:theme="@style/AppTheme.Launcher">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
Styles.xml
<style name="AppTheme.Launcher">
<item name="android:windowBackground">@drawable/launch_screen</item>
</style>
在onCreate
超级调用之前的“活动”中,将主题重置为您的AppTheme
@Override
protected void onCreate(Bundle savedInstanceState) {
setTheme(R.style.AppTheme);
super.onCreate(savedInstanceState);
}
答案 1 :(得分:0)
创建常规活动并在xml文件中进行设计,然后使用处理程序后延迟选项。
handler.postDelayed(new Runnable(){
@Override
public void run() {
//startactivity
finish();
}
}, 7000 );
答案 2 :(得分:0)
我认为您不会从不显示初始屏幕的初始屏幕延迟开始新的活动。
尝试:-
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
startActivity(yourIntent);
finish();
}
}, 1000);
答案 3 :(得分:0)
您必须在intent-filter
的SplashScreen中实现Manifest
。例如:
<activity
android:name=".SplashScreen"
android:configChanges="orientation|keyboardHidden"
android:screenOrientation="portrait"
android:windowSoftInputMode="adjustPan">
<intent-filter>
<category android:name="android.intent.category.LAUNCHER" /> //This line
</intent-filter>
</activity>
答案 4 :(得分:0)
这是我用于启动屏幕的代码,它工作得很好:
public class SplashScreenActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.splash_screen_activiyt);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
Intent intent = new Intent(SplashScreenActivity.this, OnBoardingActivity.class);
startActivity(intent);
finish();
}
}, 2000);
}
}
其中SplashScreenActivity是在AndroidManifest.xml中声明的标准活动
答案 5 :(得分:0)
由于@Mickverm答案是正确的,所以存在一个问题-每次系统重新创建活动时都会显示启动屏幕。因此,在我的应用程序中,我始终将专用活动用于启动屏幕。但是,活动没有布局,仅设置了启动器主题,因此它会立即加载。
在这里描述:https://www.bignerdranch.com/blog/splash-screens-the-right-way/ 除非确实需要,否则不要对处理程序/睡眠和完整活动使用任何方法(例如,在后台执行某些操作并在启动屏幕上显示进度)