Android实例-手机安全卫士(一)-启动界面

一、目标。

  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>
View Code

  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" >
View Code

 

  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 }
View Code

 

三、校验。

  通过更改程序配置文件(AndroidManifest.xml)中manifest节点下的android:versionName中的值可以改变启动时的版本号。

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。