安卓開發:經期助手App

2022-01-01 17:00:03

開發工具:Android studio 3.5.2
使用到的第三方庫:calendarview
使用到的輕量級儲存:sharedPreferences/sqlite

1.1初始頁面

layout:activity_main.xml

java:MainActivity

頁面效果:
在這裡插入圖片描述

<LinearLayout><!--設定orientation=vertical,垂直佈局-->
	<ImageView/>
	<!--設定layout_gravity="center"裝中間的桃子;
	onclick="period"新增了點選事件,點選後執行period方法,跳轉到主頁面-->
	<TextView/><!--gravity="bottom"文字在桃子下面-->
</LinearLayout>

1.2 主頁面

佈局結構

佈局檔案:activity_period.xml

java檔案:PeriodActivity.java
在這裡插入圖片描述

1.2.1Toolbar導航欄

Toolbar導航欄=

<LinearLayout><!--垂直佈局-->
	<!--導航欄-->
	<androidx.appcompat.widget.Toolbar>
	<!--navigationIcon為左側返回的圖示,點選後返回到初始頁面-->
		<RelativeLayout>
			<TextView/><!--「經期日曆」四個字顯示的地方-->
			<ImageView/>
			<!--右側小日曆圖示,id:weekcalendar,點選後轉換成小日曆檢視,			底下的年月會隱藏,通過visibility=GONE屬性隱藏-->
			<TextView><!--點選日曆的某一天會顯示月和日-->
		</RelativeLayout>
		<!--使用relativeLayout的原因:設定佈局更靈活-->
	</androidx.appcompat.widget.Toolbar>
</LinearLayout>

1.點選小日曆圖示轉換成小日曆檢視功能實現

(1)在PeriodActivity.java檔案中,用ImageView型別的 mTextMonthDay用findViewById找到圖示weekcalendar(line:120)

(2)新增onclick監聽器(line:208)

		如果日曆不是展開的也就是說如果目前不是小日曆模式,那麼則轉換成小日曆模式
mcalendarLayout.expand();//轉換成小日曆模式
mCalendarView.showYearSelectLayout(mYear);//獲取當前年份所有月並顯示
mTextMonthDay1.setText(String.valueOf(mYear));//顯示年份的地方
tvMonth.setVisibility(View.GONE);//顯示年月的地方隱藏

在這裡插入圖片描述

1.2.2 顯示當前年月的TextView

id:tv_month

在PeriodActivity中tvMonth繫結控制元件tv_month,用對應方法獲取當前年當前月(line:272

1.2.3 日曆顯示

佈局結構:

<com.haibin.calendarview.CalendarLayout>
<!--第三方開源庫calendarview的佈局-->
	<com.haibin.calendarview.CalendarView/>
	<!--顯示日曆的地方;id=calendarView
	month_view=
	"com.example.periodrecords2.CustomMultiMonthView"-->
	<!--載入CustomMultiMonthView檔案,用該檔案實現UI的繪製-->
</com.haibin.calendarview.CalendarLayout>

在java檔案中,用一個Calendarview型別的mCalendarView繫結日曆,因為用到了日曆多選,所以在mCalendarView需要繫結第三方開源庫中的多選事件監聽器和檢視轉換監聽器以及選中事件監聽器/月份轉換(line:222),並給日曆限制了範圍為過去三年到當前下一個月,依然是calendarview庫裡的方法(line:277)

=給日期分類
方法:setDatas(line:305)

將日期分為六類:安全期/易孕期/排卵期/預測經期/經期/今天

不同的類別在日曆上的繪製樣式不同

onCalendarMultiSelect方法(line:450)

選中某一天後會在日曆上繪製成紅色,用getYear()等方法獲取選中的日期存入sqlite中

sqlite

包含三個檔案:CRDB(實現資料庫的增、刪)

						dateclass(定義了一個類,用來規定輸入的資料的格式)

						Datedb(建資料庫)

*=繪製日曆=====*

CustomMultiMonthView.java檔案

在onDrawSelected方法中(line:43),多選的繪製樣式,如果中間斷開了,那麼連線口會變成方的,如果沒斷則是圓的


1.2.4 新增注意事項

在這裡插入圖片描述
佈局:
在這裡插入圖片描述
原始碼連結:https://github.com/egg-71/android-studio-App