項目聯系
這次的項目我在前端組,負責UI,下面簡略講下學到的內容和使用AS過程中遇到的一些問題及其解決方法。
常見UI控件的使用
1.TextView
在TextView中,首先用android:id給當前控件定義一個唯一標識符。在活動中通過這個標識符對控件進行事件注冊。android:layout_width和
android:layout_height指定了控件的寬度和高度。Android中所有控件都有這兩個屬性,可選值有match_parent和wrap_content。match_parent表示讓當前控件和父布局大小一樣,wrap_content表示讓當前控件的大小能夠剛好包含住里面的內容,也可以通過xxdp來自定義大小。通過android:text可以指定當前文本內容,android:textColor可以指定文字的顏色,android:textSize可以指定文字的大小,android:gravity可以指定文字的對齊方式,這里用的是center,表示水平和垂直方向都居中對齊。
以上是TextView的常用屬性。還有android:textStyle可以指定文字的字體,可選值有bold加粗,italic斜體,normal常規,也可以從外部導入自己下載的酷炫字體,不過要在活動里寫,這里就不詳細說了。
2.Button
Button是程序和用戶進行交互的重要控件。Button可配置的屬性和TextView差不多,主要是Button里的android:text設置的文字會把所有英文自動進行大寫轉換,如果我們不想要全部大寫,可以通過android:textAllCaps="false"來禁用這個默認特性
3.EditText
EditText是程序和用戶進行交互的另一個重要控件,它允許用戶在控件里輸入和編輯內容,并可以在程序中對這些內容進行處理。我們可以使用android:hint屬性指定提示文本,當我們輸入任意內容時,提示文本會自動消失。在這里EditText指定的高度時wrap_content,它總能包含住里面的內容,但是隨著內容的增多EditText會被不斷拉長,當內容過多時界面就會很難看,這時候我們可以使用andriod:maxLines屬性來指定EditText的行數。當輸入的內容超過兩行時,文本就會向上滾動,而EditText則不會繼續拉伸。
4.ImageView
ImageView是用來在界面上展示圖片的控件。需要使用的圖片要先放到drawable目錄里,然后使用android:src屬性指定我們要用的圖片。
5.ProgressBar
ProgressBar用于在界面上顯示一個進度條,表示我們的程序正在加載一些數據。
我們可以通過style屬性將進度條指定成水平進度條,然后我們還可以通過android:max屬性給進度條設置一個最大值。然后在代碼中動態地更改進度條進度。
6.AlertDialog
AlertDialog可以在當前界面彈出一個置于所有界面元素之上的對話框,能夠屏蔽掉其他控件的交互能力,一般用來提示一些重要的內容或者警告信息,比如防止用戶誤刪重要內容,在刪除前彈出一個確認框。
常用布局
1.線性布局Linearlayout
- 線性布局是一種很常用的布局,它會將它所包含的控件在線性方向上依次排列,方向有垂直vertical和水平honrizontal兩種。方向通過android:orientation屬性來設定,如果不指定,默認的排列方式就是horizontal。
在線性布局里我們通過android:layout_gravity指定控件在布局中的對齊方式,可選值和android:gravity差不多。
線性布局里有個屬性非常重要————android:layout_weight(權重),通過它我們可以使用比例的方式來指定控件的大小。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/LinearLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" > <TextView android:layout_weight="1" android:layout_width="wrap_content" android:layout_height="fill_parent" android:text="one" android:background="#98FB98" /> <TextView android:layout_weight="2" android:layout_width="wrap_content" android:layout_height="fill_parent" android:text="two" android:background="#FFFF00" /> <TextView android:layout_weight="3" android:layout_width="wrap_content" android:layout_height="fill_parent" android:text="three" android:background="#FF00FF" />
2.相對布局Relative
相對布局和線性布局相比顯得比較隨意,控件可以出現在任意的位置,所以它的屬性非常的多,這里貼張菜鳥教程里的學習圖
其實layout_marginLeft、 layout_marginStart 、 layout_marginTop三個屬性搭配基本就可以任意指定控件的位置了
遇到的錯誤及解決
1.
有些機子3.0版本的as會出現這個錯誤,項目剛創建完就報錯。具體的原因還不太清楚,網上有人是說圖片的合法性檢測,可這個項目是空的。。。
Error:java.util.concurrent.ExecutionException: com.android.tools.aapt2.Aapt2Exception: AAPT2 error: check logs for details
Error:Execution failed for task ':app:mergeDebugResources'.> Error: java.util.concurrent.ExecutionException: com.android.tools.aapt2.Aapt2Exception: AAPT2 error: check logs for details
解決很簡單,只要在項目的gradle.properties中加入這句代碼即可:
android.enableAapt2=false
2.
重新打開我們的項目時,有時候會有莫名報錯或者模擬器運行跑不起來,經過檢查如果不是語法錯誤之類的可以先clean project 再rebuild project ,這個方法解決了許多看不懂的報錯。。。
收獲
通過這個項目接觸了as,算是初步認識了一個新工具,還有GitHub的使用。最重要的收獲還是因為這個項目真正體驗了軟件開發的過程,對軟件工程有了一個大致的認識。