一款app,启动页面,一半都有几个必须的相似功能,例如 

1、启动页面动画效果

2、判断是否是首次安装或是首次更新版本启动该页面,这种情况一般都是进入一个轮播图页面 ,展示一下产品的突出功能点和亮点。

3、储存屏幕的分辨率等

4、更新数据库表格等


分步骤来描述

1、每个app刚进入页面,界面UI一般都有个动画效果,否则就太单调了,一般通用的是透明动画,可以用 xml配置,也可以用 代码控制,获取activity的xml布局的根节点splash_root,然后

AlphaAnimation aa = new AlphaAnimation(0.5f, 1.0f);
aa.setDuration(2000);
splash_root.startAnimation(aa); 

即可。或者

  • <?xmlversion="1.0"encoding="utf-8"?>
  • <alphaxmlns:android="http://schemas.android.com/apk/res/android"
  •     android:fromAlpha="1.0"
  •     android:toAlpha="0.0"
  •     android:repeatCount="infinite"
  •     android:duration="2000">
  • </alpha>

Animation aa = AnimationUtils.loadAnimation(this, R.anim.alpha);  

  •      splash_root.startAnimation(aa); 

2、判断首次安装或首次版本更新,大伙第一反应是定义一个布尔值true,用持久化保存,再次进入时从持久化取出来,持久化默认值为false,进行判断,如果为false,则证明为第一次,否则里面存储的值为true。这个办法可以解决是否首次安装,却无法解决是首次版本跟新的问题,判断不出来。


为此,换个保存的值即可。可以根据版本号来进行存储判断,仍然使用持久化来进行数据存贮。默认值为0,进入该页面,就从持久化拿出存储的值,同时从配置清单中获取本次的版本值,进行比较是否相等,如果不相等,说明是首次安装或首次版本更新,此时把版本号存到持久化中,替换原数据; 如果相等,则说明不是首次安装,也不是首次版本跟新。

获取app的版本号  

public int getVersionCode(Context context)
{
try
{
PackageManager packageManager = context.getPackageManager();
PackageInfo packageInfo = packageManager.getPackageInfo(
context.getPackageName(), 0);
return packageInfo.versionCode;


} catch (NameNotFoundException e)
{
e.printStackTrace();
}
return 0;
}
private boolean judgeVer () {
int num = getVersionCode(Activity.this);
int oldNum = PrefUtil.getVersionCode(Activity.this); // 持久化中获取存贮的版本号,或是默认值
if (num <= oldNum) {
return false;
}PrefUtil.getVersionCode(Activity.this,num); // 更新持久化中版本号的值
return true;
}以此boolean值判断接下来的流程,是轮播图引导页面,还是主界面。
3、屏幕分辨率在项目中经常会被用到,没必要每次用的时候重新获取以此,可以刚开始就获取以此,然后缓存起来,项目后面直接使用,
定义一个工具类,
public class AppUti {
public static int mPreenWidth = 0;
public static int mPreenHeight = 0;
}
private void getPreenWH{
DisplayMetrics dm = new DisplayMetrics();
WindowManager wm = (WindowManager)Activity.this
.getSystemService(Context.WINDOW_SERVICE);
wm.getDefaultDisplay().getMetrics(dm);
AppUti.mPreenWidth = dm.widthPixels;
AppUti.mPreenHeight = dm.heightPixels;}

4、做一些辅助的功能。例如更新数据库里面的某个表格的字段等,或是复制一些文件。

一些其他的例如倒计时等功能,可以使用CountDownTimer 或 用 Handler来自定义,点击时进入主界面,此时记得取消 CountDownTimer  或 

handler.removeCallbacks(mRunnable);  or  handler.removeMessages(what);