一、目标。
1、启动时全屏显示,并获得当前应用版本号;
2、美化字体:颜色和文字阴影;
3、添加一个ProgressBar以增加用户体验。
效果如图
二、编写过程。
1、布局。在布局文件中增加一个TextView和一个ProgressBar,并根据要求进行布置(本例采用RelativeLayout进行布置)。
①.在RelativeLayout中的android:background属性通过@id的方法找到drawable文件下的布局文件。
②.在TextView中通过android:shadowColor="RGB颜色"(设置阴影颜色)、android:shadowDx="int"(设置阴影X轴偏移量)、android:shadowDy="int"(设置阴影Y轴偏移量)、android:shadowRadius="int"(设置阴影半径)。设置字体颜色为白色,默认内容为“版本1.0”,位于RelativeLayout正中间。
③.在TextView下方放置一个ProgressBar。
布局代码如下:
1 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 xmlns:tools="http://schemas.android.com/tools" 3 android:layout_width="match_parent" 4 android:layout_height="match_parent" 5 android:background="@drawable/launcher_bg" 6 tools:context=".SplashActivity" > 7 8 <TextView 9 android:id="@+id/tv_version" 10 android:layout_width="wrap_content" 11 android:layout_height="wrap_content" 12 android:layout_centerInParent="true" 13 android:shadowColor="#00ffff" 14 android:shadowDx="1" 15 android:shadowDy="1" 16 android:shadowRadius="1" 17 android:text="版本1.0" 18 android:textColor="#ffffff" 19 android:textSize="22sp" /> 20 21 <ProgressBar 22 android:layout_width="wrap_content" 23 android:layout_height="wrap_content" 24 android:layout_below="@id/tv_version" 25 android:layout_centerHorizontal="true" /> 26 27 </RelativeLayout>
2、启动样式。程序启动时全屏显示。
在程序配置文件(AndroidManifest.xml)中,在application节点下的activity节点里面增加android:theme属性,其值=“@android:style/Theme.NoTitleBar.Fullscreen”。其中Theme.后还有很多样式可选择。
样式代码如下:
1 <activity 2 android:name="com.example.mobilesafe.SplashActivity" 3 android:label="@string/app_name" 4 android:theme="@android:style/Theme.NoTitleBar.Fullscreen" >
3、代码实现版本号的显示。
①.在主代码中新建一个返回值类型是String的private方法,取名为getVersionNumber();
②.在getVersionNumber()方法中,通过getPackageManager()方法获得PackageManager类型的返回值,取名pm;
③.通过PackageManager类型对象(pm)的getPackageInfo(packageName, flags)方法获得PackageInfo类型的返回值,取名packageInfo。在getPackageInfo(packageName, flags)方法中的参数packageName是指想要获取包信息的包全名,如(com.google.apps.contacts),如果想获取本程序对应的包的全名,可用getPackageName()方法;flags是指int类型的标签,目前可用0代替。同时,该方法会产生异常,采用try{...}catch{...}模块捕获。
④.通过PackageInfo类型对象(packageInfo)的versionName方法可以获得String类型的返回值,该返回值就是packageName的版本号。其实就是程序配置文件(AndroidManifest.xml)中manifest节点下的android:versionName中的值。
⑤.最后通过TextView的setText(“text”)方法更改其中的文本内容。
实现代码如下:
1 package com.example.mobilesafe; 2 3 import android.os.Bundle; 4 import android.app.Activity; 5 import android.content.pm.PackageInfo; 6 import android.content.pm.PackageManager; 7 import android.content.pm.PackageManager.NameNotFoundException; 8 import android.view.Menu; 9 import android.widget.TextView; 10 11 public class SplashActivity extends Activity { 12 private TextView tv_version; 13 14 @Override 15 protected void onCreate(Bundle savedInstanceState) { 16 super.onCreate(savedInstanceState); 17 setContentView(R.layout.activity_splash); 18 tv_version = (TextView) findViewById(R.id.tv_version); 19 tv_version.setText("版本"+getVersionNumber()); 20 } 21 22 /* 23 * 得到应用程序版本号 24 */ 25 26 private String getVersionNumber() { 27 //用于管理手机的APK 28 PackageManager pm = getPackageManager(); 29 //得到指定APK的功能清单文件(即AndroidMainfest.xml) 30 try { 31 PackageInfo packageInfo = pm.getPackageInfo(getPackageName(), 0); 32 return packageInfo.versionName; 33 } catch (NameNotFoundException e) { 34 e.printStackTrace(); 35 return ""; 36 } 37 } 38 }
三、校验。
通过更改程序配置文件(AndroidManifest.xml)中manifest节点下的android:versionName中的值可以改变启动时的版本号。