CrossApp 设置App启动页(无任何黑屏白屏,显示完启动画面之间到显示出首页界面)
2017-09-14 10:29
489 查看
初始情况下,不管iOS或是Android在点击App图标到显示出图像.这之间都是会出现黑色屏幕的过渡情况。
iOS: 在iOS上相对来说要比Android上简单的多。设置下图片、文件即可
Android: 在android上就要麻烦的多了。我在设置的过程中就碰上了各种问题(黑屏、白屏、显示系统桌面等)。下面先给代码然后再解释一番
首先需要两个主题(一般写在string.xml或styles.xml)、一个启动页activity(LoadingActivity.java)、一个启动页的布局文件xml(loading.xml)、一个启动页的背景图(loading.png)
(主题)
<style
name="LaunchLayerStyle"
parent="android:Theme.Light">
<item
name="android:windowBackground">@drawable/loading</item>
<item
name="android:windowNoTitle">true</item>
<item
name="android:windowFullscreen">true</item>
<item
name="android:windowIsTranslucent">false</item>
<item
name="android:windowContentOverlay">@null</item>
</style>
<style name="NotTranslucentStyle" parent="@android:style/Theme">
<item name="android:windowNoTitle">true</item>
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowContentOverlay">@null</item>
</style>
(启动页activity)
import android.app.Activity;
import android.os.Bundle;
import android.content.Intent;
import android.graphics.PixelFormat;
import android.os.Handler;
import android.view.WindowManager;
public class LoadingActivity
extends Activity {
//time for picture display
private
static final
int LOAD_DISPLAY_TIME = 0;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().setFormat(PixelFormat.RGBA_8888);
// getWindow().addFlags(WindowManager.LayoutParams.FLAG_DITHER);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.loading);
new Handler().postDelayed(new Runnable() {
public
void run() {
//Go to main activity, and finish load activity
Intent mainIntent = new Intent(LoadingActivity.this, YueLiang.class);
LoadingActivity.this.startActivity(mainIntent);
// LoadingActivity.this.finish();
}
}, LOAD_DISPLAY_TIME);
}
}
(布局xml)
<?xml
version="1.0"
encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:gravity="center|center"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/loading">
</LinearLayout>
(文件对应位置如图)
然后修改AndroidManifest.xml(修改Main的 Activity 注册LoadingActivity)
<activity
android:name=".LoadingActivity"
android:label="@string/app_name"
android:screenOrientation="portrait"
android:theme="@style/LaunchLayerStyle"
android:configChanges="orientation|keyboardHidden"
android:windowSoftInputMode="adjustResize">
<intent-filter>
<action
android:name="android.intent.action.MAIN"
/>
<category
android:name="android.intent.category.LAUNCHER"
/>
</intent-filter>
</activity>
<activity
android:name=".YueLiang"
android:screenOrientation="portrait"
android:theme="@style/NotTranslucentStyle"
android:windowSoftInputMode="adjustResize"
android:configChanges="orientation|keyboardHidden">
</activity>
如此这般基本上大功告成了.接下来说说我的理解和分析
首先黑屏、白屏并不是程序问题,而是程序界面的背景颜色。
其次黑白屏的出现也是有时间段的:
1:点击app图标到系统创建线程进入程序这段时间(闪屏)
2:进入程序到加载完主activity数据这段时间
3:activity跳转到另一个activity加载数据这段时间
所以说要想不黑屏,就需要为这些时间段的背景赋予一些自定义的东西(如图片等)
第一个时间段: 为LoadingActivity(也就是主Activity)设置主题背景。也就是上述的第一个style(<style name="LaunchLayerStyle")。第一个style的作用是
<item name="android:windowBackground">@drawable/loading</item>
设置背景
<item name="android:windowNoTitle">true</item>
有无标题(具体什么是标题你可以设置false试试)
<item name="android:windowFullscreen">true</item>
全屏
<item name="android:windowIsTranslucent">false</item>
透明
<item name="android:windowContentOverlay">@null</item>
闪屏界面 第一个阶段这句起到不显示黑白屏的作用
第二个时间段: 这段时间需要人为控制,尽量将加载数据的时间控制到肉眼不可见的程度,所以会将主activity设计的很简单,不加载一些耗时的东西。
第三个时间段:这段时间原理与第二个时间段相同,但是现实中app的首页基本上都是要加载一些数据的(网络请求等),所以就用到了第二个style,设置给LoadingActivity之后将要显示的activity。第二个style的作用是将背景设置为透明,这样你看到的就是上一个activity的界面了.需要注意的是一定要讲主activity设置为不透明,不然你看到的就会是系统桌面了。
由于关于这个的内容太多太杂,不好列举代表性的引用链接,见谅
iOS: 在iOS上相对来说要比Android上简单的多。设置下图片、文件即可
Android: 在android上就要麻烦的多了。我在设置的过程中就碰上了各种问题(黑屏、白屏、显示系统桌面等)。下面先给代码然后再解释一番
首先需要两个主题(一般写在string.xml或styles.xml)、一个启动页activity(LoadingActivity.java)、一个启动页的布局文件xml(loading.xml)、一个启动页的背景图(loading.png)
(主题)
<style
name="LaunchLayerStyle"
parent="android:Theme.Light">
<item
name="android:windowBackground">@drawable/loading</item>
<item
name="android:windowNoTitle">true</item>
<item
name="android:windowFullscreen">true</item>
<item
name="android:windowIsTranslucent">false</item>
<item
name="android:windowContentOverlay">@null</item>
</style>
<style name="NotTranslucentStyle" parent="@android:style/Theme">
<item name="android:windowNoTitle">true</item>
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowContentOverlay">@null</item>
</style>
(启动页activity)
import android.app.Activity;
import android.os.Bundle;
import android.content.Intent;
import android.graphics.PixelFormat;
import android.os.Handler;
import android.view.WindowManager;
public class LoadingActivity
extends Activity {
//time for picture display
private
static final
int LOAD_DISPLAY_TIME = 0;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().setFormat(PixelFormat.RGBA_8888);
// getWindow().addFlags(WindowManager.LayoutParams.FLAG_DITHER);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.loading);
new Handler().postDelayed(new Runnable() {
public
void run() {
//Go to main activity, and finish load activity
Intent mainIntent = new Intent(LoadingActivity.this, YueLiang.class);
LoadingActivity.this.startActivity(mainIntent);
// LoadingActivity.this.finish();
}
}, LOAD_DISPLAY_TIME);
}
}
(布局xml)
<?xml
version="1.0"
encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:gravity="center|center"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/loading">
</LinearLayout>
(文件对应位置如图)
然后修改AndroidManifest.xml(修改Main的 Activity 注册LoadingActivity)
<activity
android:name=".LoadingActivity"
android:label="@string/app_name"
android:screenOrientation="portrait"
android:theme="@style/LaunchLayerStyle"
android:configChanges="orientation|keyboardHidden"
android:windowSoftInputMode="adjustResize">
<intent-filter>
<action
android:name="android.intent.action.MAIN"
/>
<category
android:name="android.intent.category.LAUNCHER"
/>
</intent-filter>
</activity>
<activity
android:name=".YueLiang"
android:screenOrientation="portrait"
android:theme="@style/NotTranslucentStyle"
android:windowSoftInputMode="adjustResize"
android:configChanges="orientation|keyboardHidden">
</activity>
如此这般基本上大功告成了.接下来说说我的理解和分析
首先黑屏、白屏并不是程序问题,而是程序界面的背景颜色。
其次黑白屏的出现也是有时间段的:
1:点击app图标到系统创建线程进入程序这段时间(闪屏)
2:进入程序到加载完主activity数据这段时间
3:activity跳转到另一个activity加载数据这段时间
所以说要想不黑屏,就需要为这些时间段的背景赋予一些自定义的东西(如图片等)
第一个时间段: 为LoadingActivity(也就是主Activity)设置主题背景。也就是上述的第一个style(<style name="LaunchLayerStyle")。第一个style的作用是
<item name="android:windowBackground">@drawable/loading</item>
设置背景
<item name="android:windowNoTitle">true</item>
有无标题(具体什么是标题你可以设置false试试)
<item name="android:windowFullscreen">true</item>
全屏
<item name="android:windowIsTranslucent">false</item>
透明
<item name="android:windowContentOverlay">@null</item>
闪屏界面 第一个阶段这句起到不显示黑白屏的作用
第二个时间段: 这段时间需要人为控制,尽量将加载数据的时间控制到肉眼不可见的程度,所以会将主activity设计的很简单,不加载一些耗时的东西。
第三个时间段:这段时间原理与第二个时间段相同,但是现实中app的首页基本上都是要加载一些数据的(网络请求等),所以就用到了第二个style,设置给LoadingActivity之后将要显示的activity。第二个style的作用是将背景设置为透明,这样你看到的就是上一个activity的界面了.需要注意的是一定要讲主activity设置为不透明,不然你看到的就会是系统桌面了。
由于关于这个的内容太多太杂,不好列举代表性的引用链接,见谅
相关文章推荐
- 解决Android App第一次启动时显示白屏或者黑屏的问题
- Android启动界面先白屏或者黑屏然后才出现画面的解决办法
- Android启动界面先白屏或者黑屏然后才出现画面的解决办法
- Android启动界面先白屏或者黑屏然后才出现画面的解决办法
- (转)Android启动界面先白屏或者黑屏然后才出现画面的解决办法
- 【Android】如何实现启动APP时引导页、欢迎页功能设置之(二)设置只在第一次启动APP时跳入引导界面
- Android启动界面先白屏然后才出现画面的解决办法
- APP应用程序图标 及 程序启动画面设置 ios logo设置
- app启动时候的白屏和黑屏问题
- 设置启动Activity(初始显示界面)的方法
- 解决Android APP启动出现白屏或黑屏的问题
- Android APP启动时出现白屏或者黑屏怎么办?
- Android-APP启动时黑屏-白屏
- app启动前闪现白屏、黑屏问题解决
- App启动时三种效果(黑屏白屏、背景图片、延迟加载)
- 创建一个没有任何界面的后台程序并且设置为开机启动
- Android 启动APP时黑屏白屏的三个解决方案(转载)
- 解决APP启动白屏或者黑屏闪现的问题
- Android 启动APP时黑屏白屏的三个解决方案
- VMware虚拟机启动后出现黑屏,不能显示界面,无论安装的是ubuntu还是centos