標籤:android style blog http color io os 使用 ar
---恢複內容開始---
結果如下:
第一張圖是程式主介面,主要是顯示記事列表的一些個事件。旁邊的側拉框是自己登陸用的。可以設定密碼。可以查看反饋與關於等資訊。
點擊第一張圖片下方的表徵圖,會顯示不同的內容,分別如下:
這四張圖分別是添加心情,統計心情記錄,設定鬧鈴,開啟音樂。分別對應 添加心情模組、統計心情記錄模組、鈴聲提醒模組、音樂播放器模組
按我的想法,此款app主要用來記錄心情,而且可以邊播放音樂邊寫日誌。而且,還可以通過鬧鈴提醒我們寫日誌。而且,還可以統計我們最近的心情狀態,為及時調整工作狀態提供參考的依據。
當然,此款app還有些其他一些小功能,比如日誌的刪除,編輯,等等。不再說了。
下面我說說缺點:
經過測試我發現:
1、在第四個功能模組中,也就是音樂播放器上,暫停按鈕用不了,邏輯上不好實現,因為底層是用service做的,所以,不太好實現。
2、音樂播放器模組中,現在還只是簡單的載入手機當中的音樂,沒有實現線上音樂播放。
3、在側拉介面,由於時間問題,沒有把分享好友這個功能整合上去,按我的思路,可以借用友盟的社會化組件整合一下,不過這個需要到不同的平台申請appkey,感覺很麻煩,就沒有做了,假如後期有時間的話,這個有必要開發一下。
4、對於第三個功能模組----鈴聲提醒模組,沒有做鈴聲選擇功能,按理說,響鈴是可以使用者佈建的,感覺此款app的主要功能不在於此,所以就沒做了。
5、對於第二個功能模組----統計心情記錄模組,我們可以查看心情軌跡,但沒有添加相應的建議,比如當你一個月當中bad的居多,沒有加一些鼓舞人心的詞語。
6、對於第一個功能模組----添加心情模組,此模組可能可以添加的笑臉等表徵圖太少,沒有給出很多。後期可能會添加一些其他搞笑點的表徵圖進去。
缺點說完了,我現在扯一下,可以實現的功能:
主要來說,此款app由5個介面組成:主介面+4個功能介面組成。
主介面:主要用於顯示心情記錄的一些個資訊,左邊側拉框可以設定密碼,退出等一些小的功能。
添加心情模組:主要用於記錄當日的心情狀態,下面的笑臉可以增減,當然也可以添加表情。
統計心情記錄模組:主要用於統計心情軌跡,一個是長條圖展示,一個是折線圖展示。
鈴聲提醒模組:主要用於提醒使用者什麼時候記錄心情,當然,也可以當鬧鐘使用。
音樂播放器:主要用於邊寫日誌,邊聽音樂。音樂都是後台播放。
介面設計:
只舉一個例子來做介紹:
拿主介面來做介紹:
整個介面有一個大的LinearLayout線性布局+一個include(其實這個是一個嵌套的布局,就是實現上面的標題效果)+一個listview+嵌套一個LinearLayout(用此線性布局的原因是因為用它可以來實現下面這四個小表徵圖的對齊)+四個ImageButton.
具體就這麼多。代碼如下:(摺疊按鈕可以開啟)
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@drawable/background" android:orientation="vertical" > <include layout="@layout/common_title_bg" /> <ListView android:id="@+id/mood_note_list" android:layout_width="fill_parent" android:layout_height="400dp" android:cacheColorHint="#00000000" android:divider="@drawable/line" android:dividerHeight="1dp" android:drawSelectorOnTop="false" android:fadingEdge="none" android:fastScrollEnabled="true" android:scrollbars="vertical" > </ListView> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" > <ImageButton android:id="@+id/addMoodButton" android:layout_width="match_parent" android:layout_weight="1" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:src="@drawable/write" /> <ImageButton android:id="@+id/mood_tendency" android:layout_width="match_parent" android:layout_weight="1" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:src="@drawable/tongji" /> <ImageButton android:id="@+id/clock" android:layout_width="match_parent" android:layout_weight="1" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:src="@drawable/clock" /> <ImageButton android:id="@+id/music" android:layout_width="match_parent" android:layout_weight="1" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:src="@drawable/music" /> </LinearLayout></LinearLayout>
View Code
介面不多講,本人審美能力有限,沒辦法。
對於介面設計這塊,歸納起來就是 活用背景,以及各個組件之間的關係,最好多嵌套,方便布局。總的原則就是,看起來直觀,靈活性強。關注組間與組內的聯絡即可。
作品實現、特色和痛點分析:
下面我選擇性的講解其中一部分功能的實現機制,篇幅有限。其他沒介紹到的我就點到為止。
開啟app,首先顯示3s的延遲,然後進入主介面。主介面是一個FragementActivity,日記顯示部分,主要用到了資料庫的查詢操作,然後將查詢到的內容,通過適配器顯示在listview中。當然,按住某一欄不動,還會出現刪除、查看等menu選項。主要就是資料庫的增刪改查操作。對於設定初始密碼,由AlertDialog實現。如果沒有設定密碼,點擊Menu中選項會啟動該對話方塊。兩次密碼輸入一致時,對輸入字串 經由MD5加密後儲存在SharedPreference中,密碼添加成功。左邊側拉菜單也是一個fragment,裡面其他的都是通過xml實現的,不多講。
點擊主介面的第一個imagebutton按鈕,此模組功能主要是添加新的心情記錄。使用者輸入心情內容,選擇心情圖片並為心情打分。通過activity實現的,當然此activity也是查看記事的activity,如果從查看記事轉向過來,則直接顯示相應的記事內容。這樣的話,就會涉及到資料庫的一些個操作,通過遊標cursor實現。
下面講講資料庫的設計:
此資料庫的實現在com.hlb.app 包中的MoodLogProvider類中實現。資料庫的名稱為MoodLogDB.db,總共就一張表:欄位如下:
_ID:表示第幾條心情記錄 資料類型 int
MOODITEM: 心情內容 String
TIMESTAMP:心情記錄的時間戳記 long
ICON_ID:心情的圖片列名 int
RATING: 心情的分數列名 float
對於第二個功能模組,主要也是一個Activity,名稱為ChartTabActivity,功能是統計分析心情的主Activity,繼承了TabActivity,並添加LineChartActivity和BarChartActivity。其中,LineChartActivity主要功能是將資料庫中儲存的對應月份所有心情記錄得分繪成曲線圖,向使用者顯示該月份的心情走勢。圖表的繪製主要通過GraphicalView等類實現的。
對於第三個功能模組,主介面是一個activity,鬧鐘的設定用到了系統內建的AlarmManager類實現的。它可以專門用來設定一個時間去完成指定的動作或者事件。單機“定製鬧鐘”按鈕,調用TimePickerDialog來設定時間,然後提示使用者佈建完成,當鬧鐘到設定的時間點時,提示使用者時間到。當然,這裡面用到了BroadcastReceive服務,系統是廣播的發出者,此app為廣播接收者,時間一到,此app開始響應此事件。然後完成響應的動作。當時想著,時間到了,應該用鈴聲來提示使用者,所以時間一到,就開始播放音樂,10s後停住。代碼如下:
package com.hlb.alarm;import com.hlb.R;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.media.MediaPlayer;import android.widget.Toast;public class TimeReceive extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { MediaPlayer alarmMusic = MediaPlayer.create(context,R.raw.test); alarmMusic.start(); Toast.makeText(context, "你的時間到了!!!", 10).show(); try { Thread.currentThread().sleep(10000); //延時10s } catch (InterruptedException e) { e.printStackTrace(); } alarmMusic.stop(); }}View Code
對於第四個功能模組,同樣也是一個activity,思路就是先通過遍曆使用者資料庫,載入音樂資源檔資訊到一個list集合當中,每個元素為一個Mp3Info類的執行個體化,然後自訂MyMusicAdapter適配器,將list當中的資料載入到listview當中。對於listview當中的每一個元素,只要點擊就可以播放,當然也可以通過下方的播放按鈕實現。點擊停止按鈕停止播放。
對於特色:
個人覺得:
1、可以實現自訂式的心情記錄
2、可以繪製心情軌跡,統計一個月或者近幾個月的心情。這會方便我們工作於生活的需要。
3、我們可以一邊聽音樂一邊寫日記。
4、隱私工作做得好,我們可以設定密碼,防止別人偷看你的日記。
5、我們還可以定時提醒自己寫日記,謹防自己忘記。
6、第三與第四個功能模組,可以單獨使用。簡單,方便,快捷。
對於痛點有很多,下面僅舉幾個小痛點:
1、繪圖。之前,這一塊沒怎麼接觸,後來,慢慢看別人的小demo,慢慢實現。
2、如何後台播放音樂。第一版程式沒有實現此功能,好來發現,然後通過service終於實現之。
3、響鈴。如何選擇自己有個性的響鈴,到現在還沒實現,只能播放一種我預先設定好響鈴。
4、自訂配接器。之前都是用的系統提供的適配器,在此app中,音樂播放器模組貌似不行。
5、背景。如何選擇好的背景圖片,自然,協調,有創意,這是個痛點。
6、切圖。圖片選擇不太完好,網上的圖片都不太符合規範,縮小之後又失真,這是個問題。
最後,介紹下本項目的基本情況,沒有用到第三方程式碼程式庫,都是Android裡面的庫。
參考文檔:http://158067568.iteye.com/blog/941338 TabActivity實現多頁顯示效果
http://www.eoeandroid.com/forum.php?mod=viewthread&tid=205314 使用Android Lint Checks使你的應用更健壯
http://www.cnblogs.com/angeldevil/p/3725358.html 清除Android工程中沒用到的資源
http://blog.csdn.net/a7a9a68/article/details/7778752 textview字型顏色設定
http://blog.csdn.net/sutaizi/article/details/6537330 Android學習筆記(三) 開發自己的簡易MP3播放器
http://www.it165.net/pro/html/201404/12667.html Android音樂播放器(2)從SD卡中讀取音樂
http://www.apkbus.com/forum.php?mod=viewthread&tid=42937&highlight=%E9%9F%B3%E4%B9%90%E6%92%AD%E6%94%BE%E5%99%A8 Android音樂播放器資源
心情日記app總結 資料存放區+服務+廣播+listview+布局+fragment+intent+imagebutton+tabactivity+美工