App启动界面效果设计

转载请标明出处:http://blog.csdn.net/u012637501/article/details/45746617

每个Android应用启动之后都会出现一个Splash启动界面,大多数的Splash界面都是会等待一定时间,然后切换到下一个界面。但如果app启动时间过长,可使用启动界面让用户耐心等待这段枯燥的时间。Splash界面一般用于显示产品的LOGO、产品名称、版本信息等,也可以完成对系统状况的检测,如网络是否连通、电源是否充足、检测新版本等,也可以预先加载相关数据。启动界面SLEEP的时间=固定时间-预处理任务时间。

一、为APP创建一个简单的启动界面

所谓简单的启动界面,即界面只用于显示产品的LOGO、产品名称等常规信息,不做系统状态检测或数据加载的操作。设计方法如下:实现两activity,一个是SplashActivity,用来做启动画面,另一个是将要跳转的Activity。通过创建一个新的线程,延迟指定的时间再执行Activity的跳转,并调用finish方法结束当前启动activity。

实例:高仿QQ启动界面

1.src/.../WelcomeActivity.java

  1. package com.example.qq2012;
  2. import android.app.Activity;
  3. import android.content.Intent;
  4. import android.os.Bundle;
  5. import android.view.Window;
  6. /*欢迎动画*/
  7. public class WelcomeActivity extends Activity {
  8. protected void onCreate(Bundle savedInstanceState) {
  9. //       requestWindowFeature(Window.FEATURE_NO_TITLE);    //设置显示窗口界面特征,此时为窗口无标题
  10. super.onCreate(savedInstanceState);
  11. setContentView(R.layout.welcome);
  12. final Intent intent = new Intent(WelcomeActivity.this,LoginActivity.class);  //设置一个用于启动新Activity的"意图"
  13. intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);  //使系统为需要启动的Activity寻找与当前Activity不同的任务栈
  14. new Thread(new Runnable(){  //创建一个新的线程来显示欢迎动画,指定时间后结束,跳转至指定界面
  15. public void run() {
  16. try {
  17. Thread.sleep(3000);   //欢迎界面启动持续时间
  18. getApplicationContext().startActivity(intent);    //启动新的界面,获取应用的上下文,生命周期是整个应用,应用结束才会结束
  19. finish();  //结束欢迎界面activity
  20. } catch (InterruptedException e) {
  21. e.printStackTrace();
  22. }
  23. }
  24. }).start();
  25. }
  26. }

2.res/layout/welcome.xml

  1. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  2. android:layout_width="match_parent"
  3. android:layout_height="match_parent"
  4. android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
  5. android:background="@drawable/splash">
  6. </LinearLayout>

分析说明:

(1)隐藏应用标题方法

a.在显示的布局文件中,添加 android:theme="@android:style/Theme.NoTitleBar.Fullscreen"

b.在逻辑代码setContentView(R.layout.login)之前添加requestWindowFeature(Window.FEATURE_NO_TITLE);

(2)调用 Activity.finish()方法时,结果和用户按下 BACK 键一样:告诉 Activity Manager 该 Activity 实例完成了相应的工作,可以被“回收”。SplashActivity 从 Active 状态转换 Stoped
状态,并被系统从栈中移除,标志可以被“回收”。

(3)创建一个新的线程完成界面跳转,两种方法:

方法一:

new Thread(new Runnable(){

public void run() {

Thread.sleep(3000);
 //延时时间

.....

finish();

}

方法二:

new Handler().postDelayed(new Runnable() {

public void run() {

........

SplashActivity.this.finish();

}

}, 3000);

说明:

Handler().postDelayed  是延迟指定的时间再执行

Handler类主要可以使用如下3个方法来设置执行Runnable对象的时间:

>立即执行Runnable对象

public final boolean post(Runnable r);

>在指定的时间(uptimeMillis)执行Runnable对象

public final boolean postAtTime(Runnable r, long uptimeMillis);

>在指定的时间间隔(delayMillis)执行Runnable对象

public final boolean postDelayed(Runnable r, long delayMillis);

运行结果:

二、自定义复杂启动界面设计

在启动界面友好展示的同时,后台可以做很多操作,比如系统检测,预加载数据等,这些后台操作可以使用AsyncTask来实现。

1.Splash启动界面设计,res/layout/welcome.xml

  1. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  2. android:layout_width="match_parent"
  3. android:layout_height="match_parent"
  4. android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
  5. android:background="#FFFFFF">
  6. <!--第一级 -->
  7. <TextView
  8. android:id="@+id/copy_right"
  9. android:layout_height="wrap_content"
  10. android:layout_width="wrap_content"
  11. android:layout_centerHorizontal="true"
  12. android:layout_alignParentBottom="true"
  13. android:padding="12dp"
  14. android:text="By 老蒋良心出品"/>
  15. <!-- 第一级 -->
  16. <RelativeLayout
  17. android:layout_width="fill_parent"
  18. android:layout_height="fill_parent">
  19. <!-- 第二级 -->
  20. <LinearLayout
  21. android:layout_width="wrap_content"
  22. android:layout_height="wrap_content"
  23. android:orientation="vertical"
  24. android:layout_centerInParent="true">
  25. <!-- logo图片 -->
  26. <ImageView
  27. android:id="@+id/logoImage"
  28. android:layout_width="wrap_content"
  29. android:layout_height="wrap_content"
  30. android:src="@drawable/logo"
  31. android:layout_gravity="center_horizontal"
  32. android:background="#ffffff"/>
  33. <!-- 产品名称、版本号 -->
  34. <LinearLayout
  35. android:layout_width="wrap_content"
  36. android:layout_height="wrap_content"
  37. android:layout_marginTop="20dp"
  38. android:orientation="horizontal">
  39. <TextView
  40. android:layout_width="wrap_content"
  41. android:layout_height="wrap_content"
  42. android:padding="6dip"
  43. android:text="创新生活app"
  44. android:textStyle="bold"
  45. android:textSize="20sp"/>
  46. <TextView
  47. android:layout_width="wrap_content"
  48. android:layout_height="wrap_content"
  49. android:padding="3dip"
  50. android:text="V1.0"
  51. android:textStyle="bold"
  52. android:textSize="15sp"/>
  53. </LinearLayout>
  54. <!-- 分隔线 -->
  55. <View
  56. android:layout_width="fill_parent"
  57. android:layout_height="1dp"
  58. android:layout_marginLeft="17dp"
  59. android:layout_marginRight="17dp"
  60. android:background="#dddddd"/>
  61. <!-- 内容描述 -->
  62. <TextView android:layout_width="wrap_content"
  63. android:layout_height="wrap_content"
  64. android:layout_gravity="center_horizontal"
  65. android:padding="6dip"
  66. android:text="科技创新,振兴中华."
  67. android:textSize="13sp"/>
  68. <ProgressBar android:id="@+id/refresh_list_footer_progressbar"
  69. android:layout_width="24dip"
  70. android:layout_height="24dip"
  71. style="@android:attr/progressBarStyleLargeInverse"
  72. android:layout_gravity="center">
  73. </ProgressBar>
  74. </LinearLayout>
  75. </RelativeLayout>

2.后台处理,SplashActivity.java

  1. public class SplashActivity extends Activity {
  2. @Override
  3. protected void onCreate(Bundle savedInstanceState) {
  4. super.onCreate(savedInstanceState);
  5. setContentView(R.layout.splash);
  6. new AsyncTask<Void, Void, Integer>() {
  7. //后台操作
  8. protected Integer doInBackground(Void... params) {
  9. int result;
  10. long startTime = System.currentTimeMillis();
  11. result = loadingCache();
  12. long loadingTime = System.currentTimeMillis() - startTime;
  13. if (loadingTime < SHOW_TIME_MIN) {
  14. try {
  15. Thread.sleep(SHOW_TIME_MIN - loadingTime);
  16. } catch (InterruptedException e) {
  17. e.printStackTrace();
  18. }
  19. }
  20. return result;
  21. }
  22. //操作后台操作的结果
  23. @Override
  24. protected void onPostExecute(Integer result) {
  25. // ... ...
  26. Intent intent = new Intent();
  27. intent.setClassName(SplashActivity.this, getString(R.string.splash_out_activity));
  28. startActivity(intent);
  29. finish();
  30. //两个参数分别表示进入的动画,退出的动画
  31. overridePendingTransition(R.anim.fade_in, R.anim.fade_out);
  32. }.execute(new Void[]{});
  33. }
  34. private int loadingCache()
  35. {
  36. }
  37. 。。。。。
  38. }

参考资料:

http://blog.csdn.net/wangjinyu501/article/details/7643396

http://www.jb51.net/article/36190.htm

时间: 2024-08-24 05:55:59

App启动界面效果设计的相关文章

app启动页的设计技巧(一)

虽然,每一个APP的启动页界面设计是需要按使用场景设计的.但是每一个APP启动页的存在的意义与APP产品定位.APP运营策略有关的. 第一部分:对于设计一个好的APP启动页作品,必须满足这三个特征 认真观察,很容易归纳出欢迎页有以下的三个特征: 1.简单:在启动页中,文案是极为简短精炼的,而启动页一般由一张图片和一句文案组成: 2.直接:启动页中的文字表述简单直接,基本没有过多的修饰性词语: 3.图为主,文为辅:启动页中,图片约占三分之二的区域,文字约占三分之一的区域 第二部分:简单易学的APP

ScrollView + viewpager实现android的app主界面效果

ScrollView + viewpager实现android的app主界面效果 Android的主界面一般由两部分组成:导航栏,滑动的分屏(我自己这么叫的).其中滑动的分屏肯定是用的fragment,具体的承载的控件是viewpager.而导航分页栏用的控件就有很多了,tabhost,Scrollview或者自定义的都行. 个人认为tabhost和Scrollview都是比较好的,因为后期的可拓展性比较好,除非导航栏界面确实属于"自定义"范畴,基本上我们可以选择这两样就可以了. 其实

Qt中启动界面的设计

越来越发现Qt的功能十分强大,真的是越来越喜欢它了.对于比较大的项目来说,程序启动的时候需要加载很多的模块和初始化操作,有时候可能需要很长时间,这样一来,对于用户来说可能就会有点等不及,感到不好,程序怎么起了这么长的时间.为此,很多的大型程序都做了启动界面来掩盖模块的加载. 说起启动界面的加载,主要有三种:静态图片,动态图片(gif),动画(swf).下面就这几种做一个简单的学习. 一.静态图片的加载 静态图片的加载对于第一次学习这个来说也是非常简单的一个,基本思想就是现实一张图片,然后延时,给

如何优雅的定义 App 的界面设计

2014年初,移动端上网的流量第一次超越了PC端,从此确定了移动端取代桌面PC端成为一般大众接受信息的主流终端.也正是因为如此越来越多的移动互联网创业者将自己的产品重心放在了APP上面,然而随着移动端市场的扩大,APP的数量达到了井喷的状态,如何在众多的APP产品中吸引到你的忠实中户,用于体验设计成了当下一个非常重要的环节. 用户体验设计的概念非常广泛,包含了使用者.挖掘使用者潜在动机和实用性.视觉没感体验等等,通俗来讲,如何让你一个产品给用户很爽的感觉,其中包含的知识和方法都是用户体验的一部分

QT 设计启动界面

今天为QT设计开机界面,从网上copy的是代码先张贴如下: #include <QApplication> #include <QTextEdit> #include <QSplashScreen> #include <QtTest> int main(int argc, char *argv[]) { QApplication app(argc, argv); QSplashScreen *splash = new QSplashScreen; splas

一触即发——App启动优化最佳实践

一触即发 App启动优化最佳实践 文中的很多图都是Google性能优化指南第六季中的一些截图 Google给出的优化指南来镇楼 https://developer.android.com/topic/performance/launch-time.html 闪屏定义 Android官方的性能优化典范,从第六季开始,发起了一系列针对App启动的优化实践,地址如下: https://www.youtube.com/watch?v=Vw1G1s73DsY&index=74&list=PLWz5r

App 引导界面

App 引导界面 1.前言 最近在学习实现App的引导界面,本篇文章对设计流程及需要注意的地方做一个浅显的总结. 附上项目链接,供和我水平类似的初学者参考——http://files.cnblogs.com/files/tgyf/Tutorial.rar. 对于有引导界面的App,刚安装或使用后将其数据清除(Setting-Apps-...),启动后就会出现引导界面,目的是向用户介绍本款应用的使用方法或主要功能. App引导过程的页面数一般为为3到6个,特殊的如刷机后的SetupWizard设置

一触即发 App启动优化最佳实践

一触即发 App启动优化最佳实践 本文在 DiyCode 和 CSDN个人博客 同时首发,关注作者的 DiyCode帐号 或者 作者微博 可第一时间收到新文章推送. 文中的很多图都是Google性能优化指南第六季中的一些截图 Google给出的优化指南来镇楼 https://developer.android.com/topic/performance/launch-time.html 闪屏定义 Android官方的性能优化典范,从第六季开始,发起了一系列针对App启动的优化实践,地址如下: h

本例为模仿微信聊天界面UI设计,文字发送以及语言录制UI(转载)

首页 资讯 精华 论坛 问答 博客 专栏 群组 更多 ▼ 您还未登录 ! 登录 注册 机遇&速度 博客 微博 相册 收藏 留言 关于我 android 仿微信聊天界面,以及语音录制功能 博客分类: android 录音 android 录音android 仿微信聊天界面android 仿微信录音UIandroidandroid 语音 本例为模仿微信聊天界面UI设计,文字发送以及语言录制UI. 1先看效果图:     第一:chat.xml设计 Xml代码   <?xml version=&q