面向福士的移動技術:簽名,封裝和發布Android app
面向大從的移動打樁其它四篇文章地址校對添加):
一)、android簡介;
二)、輕輕一划,在android中為手勢編碼;
三)、Android 應用程式生命週期中的活動與表徵圖;
四)、Overheard Word 的單詞和手勢。
添加一個多選擇quiz到你的Android手機app,然後用一個安全數位憑證簽名
用網路邏輯,內容為王。但是對與手機使用者來說,互動規則才是王道。對移動app靜態資訊設計在減少,並且遊戲化正在增多。這個月 Andrew Glover決定通過將一個多選擇的quiz特性加入到一個樣本appOverheard Word,前一篇介紹的。) 中來介紹 Android移動開發。之後他將展示給你如何產生一個數位憑證和如何發布和如何提升你的在Google Play或者Amazon Appstore上 已經簽名的app。
目前為止在這個Mobil for the masses系列中,我們已經使用Android作為學習怎樣做移動開發的一個執行個體,其中包括 《Android應用程式生命週期》教程,在你的Android apps中實現《手勢滑動功能》。並且《與第三方庫工作》來簡化開發並且增強app功 能。當我不確定做Android時候,我對瀏覽其它的手機環境和技術感興趣。所以這個月我們來 通過添加一個quiz特性到Overheard Word 樣本app 總結我們的 Android-intensive(加強安卓)文章 並且準備部署它到兩個流行的 Adroid app stores:Google Play和Amazon Appstore。所有的這些將是下一節的基礎:HTML5侵襲移動開發!
遊戲化我的app
在我們簽名Overheard Word並且把它推送到Google Play和Amazon Appstore的Android市場同數百萬的其 它apps競爭前,我想要確定它是最好的Overheard Word app(對我們的Overheard Word app不熟悉嗎?回顧下介紹這 個 樣本 的文章)。如你所知,遊戲是當前推動移動生態系統的強勁動力,並且一系列的apps都被期望有高效的互動。移動apps即使當他們的目標是提供 資訊價值的時候,點燃好奇心和獲勝的慾望的行動裝置 App也做的很好。那也是為什麼Overheard Word 不僅僅只是一個頁面上的單字清單;相反,它被 設計用來煽動讀者來挖掘詞彙量,接著獎勵他們來堅持學習它!(順便說下Gamification 遊戲化 是一個正在開始流行的設計技術的術語)
在我們簽名Overheard Word並且把它推送到Google Play和Amazon Appstore的Android市場同數百萬的其它 apps競爭前,我想要確定它是最好的Overheard Word app(對我們的Overheard Word app不熟悉嗎?回顧下介紹這 個 樣本 的文章)。如你所知,遊戲是當前推動移動生態系統的強勁動力,並且一系列的apps都被期望有高效的互動。移動apps即使當他們的目標是提供 資訊價值的時候,點燃好奇心和獲勝的慾望的行動裝置 App也做的很好。那也是為什麼Overheard Word 不僅僅只是一個頁面上的單字清單;相反,它被 設計用來煽動讀者來挖掘詞彙量,接著獎勵他們來堅持學習它!(順便說下Gamification 遊戲化 是一個正在開始流行的設計技術的術語)
在我們簽名Overheard Word並且把它推送到Google Play和Amazon Appstore的Android市場同數百萬的其它 apps競爭前,我想要確定它是最好的Overheard Word app(對我們的Overheard Word app不熟悉嗎?回顧下介紹這 個 樣本 的文章)。如你所知,遊戲是當前推動移動生態系統的強勁動力,並且一系列的apps都被期望有高效的互動。移動apps即使當他們的目標是提供 資訊價值的時候,點燃好奇心和獲勝的慾望的行動裝置 App也做的很好。那也是為什麼Overheard Word 不僅僅只是一個頁面上的單字清單;相反,它被 設計用來煽動讀者來挖掘詞彙量,接著獎勵他們來堅持學習它!(順便說下Gamification 遊戲化 是一個正在開始流行的設計技術的術語)
Overheard Word探詢
我們將啟動正定義的一個新的布局來使Overheard Word的測試檢視保持一致,接下來我們定義一個來展示布局的Activity。正如前文所說,我正使用Eclipse的ADT作為我的開發環境,我假設你也是使用它。
我們將啟動正定義的一個新的布局來使Overheard Word的測試檢視保持一致,接下來我們定義一個來展示布局的Activity。正如前文所說,我正使用Eclipse的ADT作為我的開發環境,我假設你也是使用它。
Figure 1. Creating a new layout in Eclipse
我們將啟動正定義的一個新的布局來使Overheard Word的測試檢視保持一致,接下來我們定義一個來展示布局的Activity。正如前文所說,我正使用Eclipse的ADT作為我的開發環境,我假設你也是使用它。
下一步,拷貝下面的XML到你的新檔案。
Listing 1. Quiz layout for Overheard Word
- <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"
- tools:context=".OverheardWord" >
-
- <LinearLayout
- android:id="@+id/widget33"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:layout_marginLeft="20dp"
- android:orientation="vertical" >
-
- <TextView
- android:id="@+id/quiz_definition"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginBottom="20dp"
- android:layout_marginLeft="13dp"
- android:layout_marginRight="10dp"
- android:layout_marginTop="48dp"
- android:text="Definition"
- android:textSize="18sp" />
-
- <RadioGroup
- android:id="@+id/quiz_answers"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginLeft="17dp" >
-
- <RadioButton
- android:id="@+id/quiz_answer_1"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="Answer 1" />
-
- <RadioButton
- android:id="@+id/quiz_answer_2"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="Answer 2" />
-
- <RadioButton
- android:id="@+id/quiz_answer_3"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="Answer 3" />
- </RadioGroup>
-
- <TextView
- android:id="@+id/quiz_result"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginBottom="10dp"
- android:layout_marginLeft="40dp"
- android:layout_marginTop="20dp"
- android:lines="2"
- android:text="Result"
- android:textSize="18sp" />
-
- <TextView
- android:id="@+id/quiz_number"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:layout_marginRight="10dp"
- android:layout_marginTop="30dp"
- android:gravity="right"
- android:text="1/10" />
- </LinearLayout>
-
- </RelativeLayout>
Overheard Word的存在的布局檔案定義了學習指南的UI,此布局定義了一系列UI元素範例文本,目的是你們能夠得到一個想法 當你的 app上線時東西是怎麼樣的。這測試的布局包括一個儲存詳細定義的TextView和一個用來各種適合那個定義單詞的RadioGroup。當使用者選擇一 個單詞,提交一個新問題或再試一次的機會時候,app將立即通知一個事件並相應,也有通過這個小測試跟蹤使用者進程的計數器。
我們下一步是建立一個新的Activity類。這個類應該繼承Activity類且提供一個onCreate方法,如Listing2所示。注意, setContentView指定那個Listing1建立的新布局檔案)
Listing 2. New Activity class: OverheardQuiz
- import android.app.Activity;
- import android.os.Bundle;
-
- public class OverheardQuiz extends Activity {
-
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_overheard_quiz);
- }
- }
我們下一步是執行個體一個新Activity,這將最終顯示Overheard word的測試布局。不僅僅建立一個可選功能表項目,讓我們嘗試用手勢滑動功能來啟動一個測試。稍後我們也會把app菜單加到測試中。
Intents編程
正如我們之前討論的,一個Android裝置極其受電池時間周期、執行能力和記憶體的約束,大多數個人裝置也有許多像電話和文本特性的apps,所以 同時他們有多個啟用的程式運行。Android平台通過給作為開發人員的你在任何時間使你的app應用處於某些約束中來管理程式。例如,你不能強迫一個 Activity類啟動並且顯示它的視圖。而是,你要通過給activity發送給平台一個intent來啟動。平台會在能啟動Activity的時候啟 動它。
想象一個Intent是一個非同步執行任務的機制。從使用者角度看,你建議平台應該做一些事情並且它能做的時候它立刻做了。
所以不能僅僅啟動我們的Activity,我們需要把它封裝在一個Intent裡。之後Android將為我們啟動Activity。由於我們正在 用手勢啟動一個新的測試Activity,我們將把intent插到一個GestureDetector執行個體。這系列中