android 基礎知識(一)

來源:互聯網
上載者:User

標籤:android   布局   控制項   listview   最佳化   

一、布局檔案實現步驟:
1、在res/layout目錄下建立一個demo_layout.xml布局檔案,
2、使用RelativeLayout嵌套一個LinearLayout來進行布局,往裡添加一個TextView和兩個Button,並設定屬性。
3、建立一個FirstLayoutActivity類,在onCreateView()方法中,使用findViewById()執行個體化組件。
4.Activity跳轉:
1.1建立一個Activity,並且註冊
1.2通過intent指定從哪個Activity跳轉到新的Activity
1.3再通過Activity的startActivity(Intent intent)方法來啟動

5.按鈕點擊監聽
1.1在布局檔案中,部署一個按鈕(Button)。
1.2為按鈕添加一個ID,用來在Activity中通過findViewById()來尋找到按鈕的執行個體。
1.3建立一個點擊監聽View.OnClickListener()
1.4調用按鈕的setOnClickListener()方法來為按鈕設定一個監聽器

二、布局類型:
1.AbsoluteLayout,絕對布局,使用座標系規範螢幕,原點在左上方,x向右是正方向,y向下是正方向。
1.1關鍵屬性:
layout_x,layout_y,在AbsoluteLayout中放置控制項時,這兩個屬性是AbsoluteLayout特有的,只能在AbsoluteLayout中的控制項才能使用。他們用來確定指定的控制項的擺放座標(控制項左上方的座標)。
1.2優缺點:
優點:使用AbsoluteLayout,能夠最自由地去擺放我們介面上的控制項。
缺點:由於AbsoluteLayout是使用座標系的方式來確定子控制項的擺放位置,但是由於Android平台螢幕的片段化,不能確定使用者的螢幕解析度,那麼貿然使用這種布局類型,可能讓使用者感受不一樣,影響使用者體驗。

2.LinearLayout,線性布局,所有的子控制項都排成一列整齊擺放。
2.1關鍵屬性:
LinearLayout屬性:
android:orientation="vertical"["horizontal"]
表示LinearLayout中的子控制項的擺放方向,vertical垂直擺放(從上到下)。horizontal水平擺放(從左至右)。

android:baselineAligned="true"["false"]
表示LinearLayout中的子控制項的擺放要依據基準來對齊。
true是對齊,false不對齊。

android:baselineAlignedChildIndex="childIndex"
表示以哪一個子控制項的基準來對齊。

android:gravity="center_horizontal"
表示子控制項對齊的方向,可以向左,右,上,下,置中...

子控制項屬性:
android:layout_weight="1.0"
這個屬性只有在LinearLayout中有效,他表示子控制項所需要佔據的大小,用於與其他的控制項分割父控制項的空間。

2.2優缺點:
優點:線性布局,受到螢幕解析度影響最小。子控制項排列整齊。
缺點:子控制項只能按照指定的幾種方式擺放,可能無法適應商業項目中部分花樣繁多的功能介面的需求。

3.FrameLayout,幀布局,放置在內部的所有控制項都會分層擺放,一個控制項一層。後放入的控制項會擺放在最上面的層裡。如果最上面的一層的控制項不夠大,也能夠看到他下面的其他控制項。

3.1關鍵屬性:
FrameLayout屬性:
android:foreground,可以使用這個屬性在整個布局的前面添加一個圖片或者顏色。
android:foregroundGravity,調整由android:foreground設定的圖片的對齊方向。

3.2優缺點
優點:有多重動畫控制項都由FrameLayout實現,說明FrameLayout很適合播放動畫的功能介面實現。
缺點:約束比較強,控制項擺放的方式只有這一種,對內部控制項操作的手段也比較少。

4.RelativeLayout,相對布局,通過父控制項的邊或者以前設定的控制項的位置,來確定現在放入的新的控制項的位置
4.1子控制項的屬性:
android:layout_alignParentTop
android:layout_alignParentBottom
android:layout_alignParentLeft
android:layout_alignParentRight,貼到指定的父控制項的邊緣。

android:layout_toLeftOf
android:layout_toRightOf
android:layout_toStartOf
android:layout_toEndOf,放置在指定id的控制項的指定方向上。

android:layout_above
android:layout_below,放置在指定id的控制項的上或下。

android:layout_alignLeft
android:layout_alignRight
android:layout_alignTop
android:layout_alignBottom,與指定id的控制項邊緣對齊。

android:layout_centerInParent,將我們的控制項放置在父控制項的中間。

4.2優缺點
優點:內部子控制項都是自己相對擺放,在螢幕解析度出現巨大變化的時候,他們之間的相對位置都不會變。這個布局類型可以很大的減少我們螢幕出現變化時,介面效果的差異性。
缺點:當我們的控制項之間的相對關係建立之後,不容易再做修改。

5.Tablelayout,表格布局,不過必須配合TableRow使用,否則就是一個垂直排列的線性布局。
5.1關鍵屬性:
TableLayout:
android:stretchColumns="0"展開列,列號從0開始。
android:collapseColumns="0"隱藏列,同上。
android:shrinkColumns="0"收縮列,同上。

TableRow:

android:weightSum="5",此屬性與控制項的 android:layout_weight="1"一起使用,用來設定一行的所有控制項的大小。(只有新版本可以使用,在4.0版本後可以使用)


6.GridLayout,網格布局,不需要TableRow這麼麻煩
6.1關鍵方法
android:columnCount="3"
android:rowCount="5"
可以通過上面兩個方法方便設定我們網格布局的行數和列數。
子控制項也可以使用android:layout_column="1"來設定子控制項想排在第幾個。

三、常用控制項:

1.  Button ,按鈕
常用Button有3中:
1.1當你只需要在按鈕上放置文字資訊時,可以使用Button。
1.2當你只需要在按鈕上放置圖片時,可以使用ImageButton。
1.3當你需要在按鈕上同時放置文字和圖片時,可以使用Button。
只有文字資訊的按鈕:
<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/button_text"
    ... />
只含有圖片的按鈕:
<ImageButton
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/button_icon"
    ... />
同時含有文字和圖片的按鈕:
<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/button_text"
    android:drawableLeft="@drawable/button_icon"
    ... />

1.4常用屬性:

1.使用android:onClick屬性,方便地響應按鈕的單擊事件。
1.1.在XML檔案中的Button標籤中加入android:onClick屬性。
1.2.在載入這個XML檔案的Activity中加入一個固定格式的方法:
public  void  回應程式法名(View view){}

1.3.將回應程式法的名字填入android:onClick的值中。


使用android:backgroud來設定一個新的外觀。

新的外觀圖片製作一個selector:

<selector xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:state_pressed="true" android:drawable="@drawable/pic1"></item>
    <item android:state_pressed="false" android:drawable="@drawable/pic2"></item>

</selector>


1.5 onClickListener
1,5.1  擷取Button對象。
1.5.2. 建立View.OnClickListener的對象。
1.5.3. 然後將View.OnClickListener的對象交給Button對象。

2.  EditText:可輸入文字框,這個控制項可以讓使用者輸入文本資訊。
<EditText
    android:id="@+id/email_address"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" />
2.1屬性:
android:hint="@string/email_hint"屬性:編輯框加入一個提示資訊。

android:inputType="textEmailAddress" 調整軟鍵盤樣式,得到只有數字或者方便輸入郵箱地址的軟鍵盤。

android:imeOptions="actionSend"自訂軟鍵盤中確認按鈕。

android:password="true"以密文形式輸入資訊。改回false之後,以明文形式輸入。

我們加入了IMEOptions屬性後,我們需要一個監聽器來監聽這個按鈕的響應:
EditText editText = (EditText) findViewById(R.id.search);
editText.setOnEditorActionListener(new OnEditorActionListener() {
    @Override
    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
        boolean handled = false;
        if (actionId == EditorInfo.IME_ACTION_SEND) {
            handled = true;
        }
        return handled;
    }
});
除EditText外,我們還有AutoCompleteTextView作為文字資訊輸入的控制項

3.  TextView,文字框。
3.1常用屬性:
android:text 文本資訊
android:textSize 字型大小(單位sp)
android:textColor 字型顏色
android:autoLink 能使文字中的電話號碼,網址,郵箱變成類似於超連結的樣子。
android:lines 行數
android:maxLength 最大字數

4.  CheckBox,多選框。
4.1可以使用設定onClick的方式加入一個寫在Activity中的點擊響應
方法。
4.2我們可以使用多選框的監聽器:OnCheckedChangeListener
4.3自訂樣式:

在android:button屬性上設定Selector。


5.  RadioButton,單選框。
這個控制項不能單獨使用,需要與RadioGroup一起使用。給RadioGroup加入一個OnCheckedChangeListener來監聽我們的選擇監聽。
一定要注意這個監聽器和多選框的可不是一個,注意他們的包名!


6.DatePicker,TimePicker 日期和時間
    在布局檔案中定義DatePicker和TimePicker,然後通過Canlendar類獲得系統時間,通過init方法將日期傳給DatePicker,
    並設定OnDateChangedListener來監聽日期改變,當時間被改變時需要設定setOnTimeChangedListener監聽來設定時間。
 <DatePicker 
      android:id= "@+id/datePicker"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
     />
     <TimePicker 
      android:id= "@+id/timerPicker"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
     />

7. ListView,清單控制項,實現一個資料列表,方便修改資料,同時影響介面。
<ListView
        android:id="@+id/listview"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:entries="@array/Cities" >
</ListView>
7.1 常用屬性
android:divider="@color/mycolor" 間隔線的圖片或者顏色

android:dividerHeight="3dip"間隔線的寬度用於修改ListView中每個item之間的間隔線。

android:stackFromBottom="true"從列表最下方開始。

android:transcriptMode="alwaysScroll"一直顯示新來的資料。

android:cacheColorHint="@android:color/transparent" 滑動時,背景透明。

7.2 使用適配器的方式顯示ListView:
1.在布局檔案中,定義一個簡單的ListView標籤。
2.在Activity中實現一個我們自己擴充的BaseAdapter子類對象。
3.通過findViewById在Activity中找到布局檔案中的ListView對象。
4.將配接器物件設定給我們的ListView對象。
ListView,只能通過適配器,載入他的子控制項。

7.3 ListView動態內容的動態添加
1.由使用者或伺服器擷取的資料,更新我們的資料容器。
2.然後調用Adapter.notifyDataSetChanged();來提醒ListView資料已經更新,
介面需要重新整理。

7.4 ListView效能最佳化:
1.複用convertView
在getView的參數列表中,提供給我們了一個convertView,這個視圖對象提供了一種效能最佳化的手段:複用剛推出螢幕範圍的那個convertView。

2.減少findViewById的使用次數
在convertView中有一個Object類型的tag屬性,可在這個屬性上儲存一個對象。利用這個對象存一個定義的內部類對象,這個對象儲存
convertView的子控制項對象。這樣複用convertView的時候也就可以複用以前取出的子控制項對象了。

8.AdapterView
Adapter是適配器,適配器是用來串連兩個不相干的事物的橋樑。同時,適配器是用來串連我們的AdapterView和資料。

AdapterView中我們常用的有:ListView(清單控制項),GridView(網格控制項),
Gallery(畫廊)。

android 基礎知識(一)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.