Android 系列 2.6在Android中创建Splash屏幕
来源:互联网 发布:one域名备案 编辑:程序博客网 时间:2024/05/21 18:30
2.6在Android中创建Splash屏幕
问题
您想创建一个启动屏幕,将在加载应用程序时显示。
解
您可以将启动屏幕构建为活动或对话框。由于它的目的是在几秒钟内完成,它可以在短时间间隔过去之后或点击启动屏幕中的按钮时被关闭。
讨论
闪屏是在PC时代发明的,最初作为一个掩盖为慢的GUI构建,当电脑慢时。供应商保留他们的品牌。但在移动世界中,最长的应用程序启动时间可能不到一秒钟,人们开始意识到,闪屏已经变得有些不合时宜。当我在电子卫生创新工作时,我们认识到这一点,使我们的BANT应用程序的闪屏在短短一秒钟后消失。问题出现了,我们是否仍然需要闪屏,或者是时候退出闪屏的想法。与大多数移动应用一样,名称和徽标显示在应用启动器中,我们还有许多其他屏幕,其中显示了名称和徽标。是时候让闪屏消失吗?
这个问题的答案取决于你和你的组织。为了完整性,这里有两种处理应用程序启动屏幕的方法。
第一个版本使用专用于显示启动屏幕的活动。启动屏幕显示两秒钟或直到用户按下菜单键,然后应用程序的主要活动出现。首先我们使用线程等待固定秒数,然后我们使用意图启动真正的主要活动。这个方法的一个缺点是,你的AndroidManifest.xml文件中的“主要”活动是splash活动,而不是你的真正的主要活动。例2-5显示了飞溅活动。
问题
您想创建一个启动屏幕,将在加载应用程序时显示。
解
您可以将启动屏幕构建为活动或对话框。由于它的目的是在几秒钟内完成,它可以在短时间间隔过去之后或点击启动屏幕中的按钮时被关闭。
讨论
闪屏是在PC时代发明的,最初作为一个掩盖为慢的GUI构建,当电脑慢时。供应商保留他们的品牌。但在移动世界中,最长的应用程序启动时间可能不到一秒钟,人们开始意识到,闪屏已经变得有些不合时宜。当我在电子卫生创新工作时,我们认识到这一点,使我们的BANT应用程序的闪屏在短短一秒钟后消失。问题出现了,我们是否仍然需要闪屏,或者是时候退出闪屏的想法。与大多数移动应用一样,名称和徽标显示在应用启动器中,我们还有许多其他屏幕,其中显示了名称和徽标。是时候让闪屏消失吗?
这个问题的答案取决于你和你的组织。为了完整性,这里有两种处理应用程序启动屏幕的方法。
第一个版本使用专用于显示启动屏幕的活动。启动屏幕显示两秒钟或直到用户按下菜单键,然后应用程序的主要活动出现。首先我们使用线程等待固定秒数,然后我们使用意图启动真正的主要活动。这个方法的一个缺点是,你的AndroidManifest.xml文件中的“主要”活动是splash活动,而不是你的真正的主要活动。例2-5显示了飞溅活动。
实施例2-5。飞溅活动
public class SplashScreen extends Activity {private long ms=0;private long splashTime=2000;private boolean splashActive = true;private boolean paused=false;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.splash);Thread mythread = new Thread() {public void run() {try {while (splashActive && ms < splashTime) {if(!paused)ms=ms+100;sleep(100);}} catch(Exception e) {}finally {Intent intent = new Intent(SplashScreen.this, Main.class);startActivity(intent);}}};mythread.start();}}
例子 2-6 显示splash活动的布局,splash.xml。
例 2-6. The splash layout
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical" android:layout_width="fill_parent"android:layout_height="fill_parent"><ImageView android:src="@drawable/background"android:id="@+id/image"android:layout_width="wrap_content"android:layout_height="wrap_content" /><ProgressBar android:id="@+id/progressBar1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center_horizontal"></ProgressBar></LinearLayout>
一个额外的要求是将属性android:noHistory =“true”放在AndroidManifest.xml文件中的splash活动上,以便此活动不会出现在历史堆栈中,这意味着如果用户使用主应用程序中的“后退”按钮 会去预期的主屏幕,不回到你的启动屏幕! 参见图2-2。
图2-2。 飞溅屏幕
两秒钟后,此活动将导致下一个活动,这是标准的“Hello,World”Android活动,作为主应用程序主要活动的代理。 参见图2-3。
图2-3。 “主要活动
在第二个版本中(启动屏幕显示,直到在Android设备上的菜单按钮被按下,然后应用程序的主要活动出现,为此,我们添加一个Java类,显示启动屏幕。 的菜单键,通过检查KeyCode然后完成活动。
例子 2-7. Watching for KeyCodes
public class SplashScreen extends Activity {private long ms=0;private long splashTime=2000;private boolean splashActive = true;private boolean paused=false;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.splash);}public boolean onKeyDown(int keyCode, KeyEvent event) {super.onKeyDown(keyCode, event);if (KeyEvent.KEYCODE_MENU == keyCode) {Intent intent = new Intent(SplashScreen.this, Main.class);startActivity(intent);}if (KeyEvent.KEYCODE_BACK == keyCode) {finish();}return false;}}
splash活动的布局splash.xml与早期版本不同。
与之前一样,按下按钮后,此活动将导向下一个活动,代表主要活动。
另一个主要方法是使用一个对话框,从你的main方法中的onCreate()方法开始。 这有许多优点,包括更简单的活动堆栈和事实,你不需要一个额外的活动,只用于前几秒钟。 缺点是它需要一些更多的代码,你可以看到在例2-8。
实施例2-8。 弹出对话框
public class SplashDialog extends Activity {private Dialog splashDialog;/** Called when the activity is first created. */@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);StateSaver data = (StateSaver) getLastNonConfigurationInstance();if (data != null) { // "all this has happened before"if (data.showSplashScreen ) { // and we didn't already finishshowSplashScreen();}setContentView(R.layout.main);// Do any UI rebuilding here using saved state} else {showSplashScreen();setContentView(R.layout.main);// Start any heavy-duty loading here, but on its own thread}}
基本思想是在应用程序启动时显示启动对话框,但是如果在启动屏幕运行时遇到方向改变,还要重新显示它,并且小心地在正确的时间删除它,如果用户 退出或者在启动屏幕运行时定时器到期。
0 0
- Android 系列 2.6在Android中创建Splash屏幕
- android创建闪屏 splash
- android 启动屏幕 ==> splash screen
- 去除unity3d的splash页面(remove unity3d splash image),在android中。
- Android splash
- Android 系列 6.29创建在两个活动之间显示的加载屏幕
- Android中如何在ViewPager中使动态创建的ImageView铺满屏幕
- Android中如何在ViewPager中使动态创建的ImageView铺满屏幕
- Android应用开发系列(一):splash引导界面开发
- 在Android中处理屏幕布局变化
- Android在应用中固定屏幕方向
- android 获取控件在屏幕中位置
- android splash显示
- Android启动画面Splash
- Android启动画面Splash
- Android启动----splash应用?
- android的Splash Screen
- Android Splash Activity Demo
- php curl get post方法
- JDK8新特性:接口的静态方法和默认方法
- Android Gradle的详细示例教程
- 关键字:transient、volatile
- 操作Cassandra(8)-安全性
- Android 系列 2.6在Android中创建Splash屏幕
- redis 常用命令
- 【Maven学习】Maven打包生成普通jar包、可运行jar包、包含所有依赖的jar包
- ROSCon
- Grafana3.1.0安装步骤
- unutun 内核更换
- 从本科到研究生,看大疆工程师给你定制的机器人学习计划
- Eclipse显示行号的三种方法
- react学习总结-梳理