最近趁著學習安卓開發,順便將去年暑假就想寫的Loan項目快速構建一下。想寫個菜單界面。決定用網格佈局試一試,但是網友普遍對網格佈局不看好。可能是因爲早期的網格佈局不支持權重的原因吧?總之今天就記錄一下我的踩坑過程。
首先看一下xml佈局文件
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MenuActivity"
android:orientation="horizontal"
android:background="#EEEEEE">
<GridLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:columnCount="3">
<Button
android:id="@+id/contract_btu"
android:layout_width="0dp"
android:layout_columnWeight="1"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:layout_marginTop="20dp"
android:background="@drawable/selector_contract" />
<Button
android:id="@+id/invoice_btu"
android:layout_width="0dp"
android:layout_columnWeight="1"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:layout_marginTop="20dp"
android:background="@drawable/selector_invoice" />
<Button
android:id="@+id/record_btu"
android:layout_width="0dp"
android:layout_columnWeight="1"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:layout_marginTop="20dp"
android:background="@drawable/selector_record" />
<TextView
android:layout_width="0dp"
android:layout_columnWeight="1"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:gravity="center"
android:text="我的合同" />
<TextView
android:layout_width="0dp"
android:layout_columnWeight="1"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:gravity="center"
android:text="借據詳情" />
<TextView
android:layout_width="0dp"
android:layout_columnWeight="1"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:gravity="center"
android:text="還款記錄" />
<Button
android:id="@+id/planning_btu"
android:layout_width="0dp"
android:layout_columnWeight="1"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:layout_marginTop="20dp"
android:background="@drawable/selector_planning" />
<Button
android:id="@+id/software_btu"
android:layout_width="0dp"
android:layout_columnWeight="1"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:layout_marginTop="20dp"
android:background="@drawable/selector_software" />
<Button
android:id="@+id/more_btu"
android:layout_width="0dp"
android:layout_columnWeight="1"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:layout_marginTop="20dp"
android:background="@drawable/selector_more" />
<TextView
android:layout_width="0dp"
android:layout_columnWeight="1"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:gravity="center"
android:text="還款計劃" />
<TextView
android:layout_width="0dp"
android:layout_columnWeight="1"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:gravity="center"
android:text="軟件信息" />
<TextView
android:layout_width="0dp"
android:layout_columnWeight="1"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:gravity="center"
android:text="更多工具" />
</GridLayout>
</FrameLayout>
如左圖所示,采用三列的網格,行數沒有固定,其中圖標和圖標下面的文字是等價的,都屬於網格裏面的元素。其中的關鍵點就是將所有網格中的元素列權重全部設置為1,讓它們權重一隻。還有就是設置
android:layout_width="0dp"
此屬性是將控件的佈局寬度設置為0,這樣網格佈局就可以等距自適應的排列内部的控件了。
———分割綫————-
順便提一下,在寫還貸計劃這個子Actively的時候發現Android沒有什麽好用的表格控件,看了幾個github上面的開源項目感覺有點複雜。這是我突然想到了上次折騰小説項目使用的WebView,正好我從銀行下載了計劃的csv文件,於是直接用csv2html將計劃轉成了html的table表格。然後使用Android的assets將其存儲,最終通過webview展示出來,感覺顯示效果還是蠻不錯的。
這次App和服務器之間的數據傳輸我封裝了一個API,數據格式是JSON,還加了一個TOKEN作爲簡單的校驗,不過論安全性還是RSA,AES來的舒服啊。
再説還準備改進的地方就是okhttp的多綫程問題,還有就是從服務器獲取的數據持久化本地sqlite數據庫的問題有待解決。最後一個目前能想到的容易實現的就是檢查升級功能。