手機安全衛士項目是跟著黑馬的視頻做的。
splash是飛灑、飛濺的意思,主要是用于完成一個產品logo顯示,期間可以:
1. 后臺完成數據庫初始化的操作
1. 聯網訪問服務器,獲取服務器最新信息(升級提示)
1. 不同的日期顯示出來不同logo,判斷當前系統時間,素材一般從服務器上下載下來.
1. 判斷時間,根據不同時間顯示不同的加載頁面
### 布局文件:splash.xml
~~~
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/logo2"
android:gravity="center_horizontal"
android:orientation="vertical"
android:id="@+id/ll_splash_main"
>
<TextView
android:layout_marginTop="320dip"
android:id="@+id/tv_splash_version"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#FFff5f00"
android:textSize="20sp"
android:text="版本號"
/>
<ProgressBar
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="20dip"
/>
</LinearLayout>
~~~
### activity:SplashActivity
~~~
package com.liuhao.mobilesafe.ui;
import com.liuhao.mobilesafe.R;
import android.os.Bundle;
import android.app.Activity;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.view.Menu;
import android.view.Window;
import android.view.WindowManager;
import android.view.animation.AlphaAnimation;
import android.widget.LinearLayout;
import android.widget.TextView;
public class SplashActivity extends Activity {
private TextView tv_splash_version;
private LinearLayout ll_splash_main;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//取消標題欄
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.splash);
tv_splash_version = (TextView) this.findViewById(R.id.tv_splash_version);
ll_splash_main = (LinearLayout) this.findViewById(R.id.ll_splash_main);
String versiontext = getVersion();
tv_splash_version.setText(versiontext);
/* AlphaAnimation類:透明度變化動畫類
* AlphaAnimation類是Android系統中的透明度變化動畫類,用于控制View對象的透明度變化,該類繼承于Animation類。
* AlphaAnimation類中的很多方法都與Animation類一致,該類中最常用的方法便是AlphaAnimation構造方法。
*
* public AlphaAnimation (float fromAlpha, float toAlpha)
參數說明
fromAlpha:開始時刻的透明度,取值范圍0~1。
toAlpha:結束時刻的透明度,取值范圍0~1。
*/
AlphaAnimation aa = new AlphaAnimation(0.0f, 1.0f);
aa.setDuration(2000); //Animation類的方法,設置持續時間
ll_splash_main.startAnimation(aa); //設置動畫
//完成窗體的全屏顯示
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.splash, menu);
return true;
}
/**
* 獲取當前程序的版本號
* @return
*/
private String getVersion(){
// 獲取一個PackageManager的實例,從而可以獲取全局包信息
PackageManager manager = getPackageManager();
try {
// Retrieve overall information about an application package that is installed on the system.
PackageInfo info = manager.getPackageInfo(getPackageName(), 0);
// The version name of this package, as specified by the <manifest> tag's versionName attribute.
return info.versionName;
} catch (Exception e) {
e.printStackTrace();
return "版本號未知";
}
}
}
~~~
### 相關知識點:
在開發程序是經常會需要軟件全屏顯示、自定義標題(使用按鈕等控件)和其他的需求,今天這一講就是如何控制Android應用程序的窗體顯示.
首先介紹一個重要方法那就是requestWindowFeature(featrueId),它的功能是啟用窗體的擴展特性。參數是Window類中定義的常量。
一、枚舉常量
> 1.DEFAULT_FEATURES:系統默認狀態,一般不需要指定
> 2.FEATURE_CONTEXT_MENU:啟用ContextMenu,默認該項已啟用,一般無需指定
> 3.FEATURE_CUSTOM_TITLE:自定義標題。當需要自定義標題時必須指定。如:標題是一個按鈕時
> 4.FEATURE_INDETERMINATE_PROGRESS:不確定的進度
> 5.FEATURE_LEFT_ICON:標題欄左側的圖標
> 6.FEATURE_NO_TITLE:無標題
> 7.FEATURE_OPTIONS_PANEL:啟用“選項面板”功能,默認已啟用。
> 8.FEATURE_PROGRESS:進度指示器功能
> 9.FEATURE_RIGHT_ICON:標題欄右側的圖標
**效果圖:
**default: DEFAULT_FEATURES

progress:FEATURE_PROGRESS:進度指示器功能

no title:FEATURE_NO_TITLE:無標題

lefticon:FEATURE_LEFT_ICON:標題欄左側的圖標

fullscreen:

indeterminate_progress: FEATURE_INDETERMINATE_PROGRESS:不確定的進度

customtitle:FEATURE_CUSTOM_TITLE:自定義標題。

AlphaAnimation類是Android系統中的透明度變化動畫類,用于控制View對象的透明度變化,該類繼承于Animation類。AlphaAnimation類中的很多方法都與Animation類一致,該類中最常用的方法便是AlphaAnimation構造方法。
【基本語法】public AlphaAnimation (float fromAlpha, float toAlpha)
參數說明
fromAlpha:開始時刻的透明度,取值范圍0~1。
toAlpha:結束時刻的透明度,取值范圍0~1。
### 運行
[](http://img.blog.csdn.net/20140925143019612)
[](http://img.blog.csdn.net/20140925143020673)
運行效果:
[](http://img.blog.csdn.net/20140925143206534)
- 前言
- Appcompat_V7問題
- This Android SDK requires Android Developer Toolkit version 23.0.0 or above
- 創建Android項目不自動生成Activity,layout目錄為空
- 新建android項目gen目錄下未生成R文件
- 手機安全衛士02:splash界面ui
- 知識點:Android控件系列之Toast
- 手機安全衛士03:獲取更新的服務器配置,顯示更新對話框
- 異常處理:android.os.NetworkOnMainThreadException--多線程問題
- 知識點:Android控件系列之對話框AlertDialog.Builder
- 手機安全衛士04_01:界面(Activity)之間的切換,Activity和任務棧
- 知識點:Android控件系列之ProgressDialog與ProgressBar
- 手機安全衛士04_02:從服務器下載并安裝新版本安裝包
- 知識點:Intent
- 知識點:Adapter適配器
- 手機安全衛士05_1:程序主界面
- 手機安全衛士05_2:程序主界面,為每個條目添加事件
- 知識點:動態設置布局LayoutInflater
- 知識點:SharedPreferences
- 手機安全衛士06-手機防盜之自定義對話框
- 手機安全衛士07-手機防盜之進入限制
- 手機安全衛士08-一些布局和顯示的細節:State List
- 手機安全衛士09-手機防盜界面設置向導1
- 手機安全衛士10-設置向導之綁定SIM卡