
通過對Android的學習,這次demo實作一個星座的查詢,想看自己是哪個的星座的,不妨可以來看看該文章
建立一個 Android 項目,實作星座查詢功能,功能要求如下:
該應用由 2 個界面組成,分别為星座查詢主界面(如圖 1 所示)、查詢結果界面(如圖 4所示)。
在圖 1 界面中設定生日輸入框不能進行輸入,隻能點選彈出日期對話框進行選擇(如圖3 所示),并将選擇的日期顯示在生日框中(如圖 2 所示)。
在圖 1 界面中輸入姓名、選擇出生日期後,點選“查詢星座”按鈕能夠跳轉到查詢結果界面(如圖 4 所示)。
若圖 1 界面中的生日為空,則點選“查詢星座”按鈕時使用 Toast 給出提示資訊“出生日期為空,請選擇您的生日!”
在圖 4 界面中,顯示在圖 1 界面中輸入的姓名和出生日期,并根據出生日期計算出所屬星座,在圖 4 界面中顯示出該星座對應的星座圖檔和星座特點的描述(讀檔案file1~file12),同時将圖 4 界面的标題設定為該星座的名稱。
素材:
通過上述的要求,我們可以确定的的思路:
通過設計要求,我們需要兩個頁面實作跳轉,第一個首頁面需要包含姓名和出生日期,通過點選事件将該資訊傳遞到第二個頁面,通過對出生日期的對比,找到符合的内容(圖檔和文字描述)等。
首先我們先實作第一個頁面,
拆分布局,紅色邊框框住的都是TextView,基本沒什麼好說的,主要是下面生日輸入框,這裡我們采用的月曆選擇方式。
如圖所示:
首先我們需要設定下生日輸入框的屬性:
通過設定,取消輸入框的擷取焦點的功能,然後給他綁定一個點選事件:
這時候進入主方法區(MainActivity),new一個DatePickerDialog,重寫裡面的onDateSet方法,實作日期選擇器:
這裡日期選擇的是Calendar類,Java原來的Date類,在JDK9已經被廢棄了。
根據我們剛開始的分析的,第二個頁面需要兩個資料,名字和生日,這裡我把這兩個屬性封裝成對象傳遞:
注意這裡的對象需要序列化,這是因為在傳遞的時候putExtra需要的
屬性封裝好了以後在點選Button觸發點選事件,實作資料傳遞。
這裡做了一下處理:當日期的資料為空的話,則使用Toast實作提醒并不跳轉。
先看頁面:
從标題、使用者名、出生日期和星座特點都是由第一頁傳遞的資料顯示的。
是以我們需要動态的處理資料。
先擷取資訊,設定姓名 出生日期等資訊:
接下來對日期的處理來獲得相應的資料。
提取了names,days,imgs,fileNames多個數組,星座名稱,對應開始日,星座圖檔,星座檔案等;
以days[]來說,處理成以下格式:
補零友善後續的下标計算友善;
處理日期和标題的設定:
設定星座圖檔:
星座特點的處理在不同的檔案是不同的,這裡是Assets檔案夾的處理。
對應方法:
最後效果圖:
原來想傳GIF的,但是Gitee好像把它和諧了,隻能放圖檔了。如果想擷取素材和代碼可以評論留言。
如果你看到這裡或者正好對你有所幫助,希望能點個👍或者⭐感謝;
有錯誤的地方,歡迎在評論指出,作者看到會進行修改。