Android 项目实战--手机卫士(实现splash)
从今天开始根据之前学习的android的基础知识,实战一下,实现一个简单功能的android手机卫士
本文地址:http://www.cnblogs.com/wuyudong/p/5899283.html,转载请注明源地址。
手机卫士的主要功能如下:

什么是Splash
Splash也就是应用程序启动之前先启动一个画面,上面简单的介绍应用程序的厂商,厂商的LOGO,名称和版本等信息,多为一张图片,显示几秒钟后会自动消息,然后显示出应用程序的主体页面。在PC上,很常见各种平台的应用程序都会有,多半是一张图片显示在屏幕中央,如Microsoft Office系列,或者GIMP等。在各种游戏中Splash是最常见的,几乎所有的游戏开始都会有一张全屏的图片,上面通常都显示厂商的LOGO,游戏的名称等。在手机平板等移动设备上,类似PC的Splash很少,起码对于Android和iOS来讲原生的应用程序都没有这种Splash,但是不知从何时起,这种Splash开始在第三方应用中流行起来,几乎所有的第三方应用程序都有启动Splash。这些Splash的特点是占满整个屏幕,上面LOGO,厂商的名字,应用的名字版本等,大约3到5秒后,Splash自动消失,应用主页面显示出来。很多应用在Splash页面也显示加载过程。
使用Activity作为Splash
这可能也是最常用的方式,方法就是用一个Activity,给它设置一个背景,或者要显示的信息(厂商,LOGO,名字和版本),让它显示几秒种,然后finish()掉,并启动应用主体Activity。
手机卫士的splash页面初步如下:

splash布局
相应的代码在布局文件activity_splash.xml文件中:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/launcher_bg"
tools:context=".SplashActivity" > <TextView
android:id="@+id/tv_version_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:shadowColor="#f00"
android:shadowDx="1"
android:shadowDy="1"
android:shadowRadius="1"
android:text="版本名"
android:textColor="#fff"
android:textSize="16sp" /> <ProgressBar
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_below="@+id/tv_version_name" /> </RelativeLayout>
activity去头操作&保留高版本主题
接下来去掉头部显示的标题:mobilesafe
方法1:在指定的activity中添加下面的代码:
public class SplashActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//去掉当前actinity的tittle
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_splash);
}
}
但是每一个activity都需要去配置,比较麻烦
方法2:将清单文件中的 android:theme="@style/AppTheme"修改为:android:theme="@android:style/Theme.Light.NoTitleBar
可以达到效果,但是主题的其他样式也发生了变化,为了兼容这两方面,修改styles.xml,添加下面的代码:
<!-- Application theme. -->
<style name="AppTheme" parent="AppBaseTheme"> <!-- 在去头的同时还保持高版本的样式主题 -->
<!-- All customizations that are NOT specific to a particular API-level can go here. -->
<item name="android:windowNoTitle">true</item>
</style>
搞定

获取版本名称并且展示
public class SplashActivity extends Activity {
private TextView tv_version_name;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 去掉当前actinity的tittle
// requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_splash);
// 初始化UI
initUI();
// 初始化数据
initData();
}
/**
* 获取数据方法
*/
private void initData() {
// 应用版本名称
tv_version_name.setText("版本名:" + getVersionName());
}
/**
* 获取版本名称:清单文件中
*
* @return 应用版本名称 返回null代表有异常
*/
private String getVersionName() {
// 1.管理者对象packageManager
PackageManager pm = getPackageManager();
// 2.从包的管理者对象中,获取指定包名的基本信息(版本名称,版本号)
try {
PackageInfo packageInfo = pm.getPackageInfo(getPackageName(), 0);
// 3.获取版本名称
return packageInfo.versionName;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/**
* 初始化UI方法 alt+shift+j
*/
private void initUI() {
tv_version_name = (TextView) findViewById(R.id.tv_version_name);
}
}
完成后,运行项目

Android 项目实战--手机卫士(实现splash)的更多相关文章
- Android项目实战--手机卫士开发系列教程
<ignore_js_op> banner131010.jpg (71.4 KB, 下载次数: 0) 下载附件 保存到相册 2 分钟前 上传 Android项目实战--手机卫士01- ...
- Android项目实战--手机卫士18--读取用户的短信内容以及短信备份
我们今天要说的就是我们手机卫士里面的高级工具里面的短信备份功能啦,其实这个软件备份的功能也很简单,就是把用户的短信读出来,然后写到一个xml或者数据库里面, 但我们这里的是读取到xml里面的. 首先我 ...
- Android项目实战--手机卫士24--程序锁的实现以及逻辑
昨天我们已经把程序全部读取出来,显示到界面上了,那今天,我们就来讲一下那个程序锁的实现啦.其实也很简单啦,我们主要就是把用户要锁定的程序放到一个表里面,然后就监听手机里面的任务栈,如果发现任务栈里面出 ...
- Android项目实战--手机卫士20--拿到已经安装了的程序以及程序管理主界面
好了,之前我们就讲了高级工具里面的短信备份与还原,那么我们高级工具里面的功能就基本上完成的啦,还有一个叫程序锁的功能而已,但我们今天先不做它先,我们先把我们的程序管理这个功能完成先. 先让大家看一下我 ...
- Android项目实战手机安全卫士(02)
目录 项目结构图 源代码 运行结果 项目源代码 项目结构图 源代码 清单 01. SplashActivity.java package com.coderdream.mobilesafe.acti ...
- Android项目实战手机安全卫士(01)
目录 项目结构图 源代码 运行结果 项目结构图 源代码 SplashActivity.java package com.coderdream.mobilesafe.activity; import a ...
- Android项目实战(二十九):酒店预定日期选择
先看需求效果图: 几个需求点: 1.显示当月以及下个月的日历 (可自行拓展更多月份) 2.首次点击选择"开始日期",再次点击选择"结束日期" (1).如果&qu ...
- Android项目实战(四十九):Andoird 7.0+相机适配
解决方案类似: Android项目实战(四十):Andoird 7.0+ 安装APK适配 解决方法: 一.在AndroidManifest.xml 文件中添加 四大组件之一的 <provider ...
- Android项目实战(三十二):圆角对话框Dialog
前言: 项目中多处用到对话框,用系统对话框太难看,就自己写一个自定义对话框. 对话框包括:1.圆角 2.app图标 , 提示文本,关闭对话框的"确定"按钮 难点:1.对话框边框圆角 ...
随机推荐
- HTML5五种客户端离线存储方案
最近折腾HTML5游戏需要离线存储功能,便把目前可用的几种HTML5存储方式研究了下,基于HT for Web写了个综合的实例,分别利用了Cookie.WebStorage.IndexedDB以及Fi ...
- C#基础03
学习集合的一些知识.集合:泛型集合,非泛型集合;ArrayList,Hashtable,List<T>,Dictionary<k,v>等,还有一些集合的常用方法. 一:集合的介 ...
- 用jquery实现遮罩层
<div style=" display:none" id="yinying"></div> <script type=" ...
- Jquery获取checkbox属性checked为undefined
说明:本文来自新浪博客,因为无法收藏,故直接copy过来备注,以后好查询 原网址:http://blog.sina.com.cn/s/blog_6810dfc20101jddq.html 使用jQue ...
- C语言的字符串分割
说起来很有意思,自认为对C语言理解得还是比较深刻的.但居然到今天才知道有个strtok函数,试用了一下突然感慨以前做了多少重复劳动.每次需要解析配置文件,每次需要分割字符串,居然都是自己去分割字符串, ...
- iOS阶段学习第12天笔记(类的初始化)
iOS学习(OC语言)知识点整理 一.类的初始化 1)init初始化方法(构造方法):一般和alloc一起调用,用于给成员变量初始化. 2)id类型:相当于C中的void*,可以指向任何对象,不能加* ...
- 使用Aspose插件对Excel操作
使用使用Aspose插件对Excel文档进行导入导出操作 使用前请先下载Aspose插件引用 Excel导入: 前台使用file标签获取,submit方式提交. <form id="f ...
- SSH框架执行自己定义的SQL语句
直接上代码 String hsql = "delete XTable x where x.Userid= ?"; Query query = this.getSession().c ...
- [范例] Firemonkey 弹簧动画
弹簧动画效果: 不用写任何代码,只需设定下面动画属性: 参考动画曲线: http://monkeystyler.com/guide/Interpolation-and-AnimationType-Il ...
- EasyUI-加载完Html内容样式渲染完成后显示
等待页面的css样式加载完毕,Html内容加载完毕,样式生成后再进行展示,避免一开始加载内容后,逐渐渲染样式造成的不良视觉效果,增强用户体验. 新增base-loading.js文件,代码如下 //获 ...