Android學習筆記(四)View和Layout

來源:互聯網
上載者:User

標籤:

http://www.cnblogs.com/cxcco/archive/2011/12/09/2282701.html

二、本文

  所謂人靠衣裝馬靠鞍,一個要想吸引使用者的應用程式,光靠功能是沒有多大作用的,漂亮豐富的UI也是極其重要的。如何才能建立一個漂亮、可操作性強的應用程式?

1、 View介紹

  在Android中,所有的可視化組件都是繼承自View類,使用者通過View和ViewGroup或者擴充自他們的類來構建使用者介面。一個View對象處理它自己的測度、布局、繪圖、焦點改變、滾動、鍵/手勢等與螢幕上矩形地區的互動。作為使用者介面中的對象,View也是與使用者互動的互動事件接收器。

 

(來自官網)

  在Android中,類的繼承方式如上所示,Control用來實現相對比較簡單的功能,而Widget用來群組控制項和構建更加複雜的控制項(如使用者自訂群組件)。 Control也可以和widget相互轉換。

2、 Layout介紹

  在Android應用程式中,一個視圖有很多的控制項,如何才能控制這些控制項的位置和排列?在網頁中我們可以通過Html中的table,div來布局,在Android中我們通過Layout實現布局。

  在Android中主要有以下幾種Layout:

  •  LinearLayout

    LinearLayout線性布局,包含在LinearLayout裡面的控制項按順序排列成一行或者一列。

    主要介紹下他的兩個主要的屬性:

    •  Orientation——方向,當設定為Horizon時,Layout中的控制項將排成一行,當設定為Vertical時,Layout中的控制項將排成一行。
    •  FillMode——填充方式,即設定android:layout_width和android:layout_height,可以為三種值:具體的像素值、wrap_content, 表示按控制項中文本實際長度顯示 、 fill_parent, 表示填充剩下的所有可用空間。具體的例子可以在官網上查看,這裡就不在舉例了。
  • RelativeLayout

    RelativeLayout相對布局,它是依靠與父容器或同在一容器中其它控制項的相對位置來定位的。

         兩種情況下的共四種主要屬性:

    •  相對父容器:

        android:layout_alignParentTop: 控制項的頂部與父容器的頂部對齊。

        android:layout_alignParentBottom:控制項的底部與父容器的底部對齊。           

        android:layout_alignParentLeft:控制項左邊與父容器的左邊緣對齊。

        android:layout_alignParentRight:控制項右邊與父容器的右邊緣對齊。

    •  相對同一容器中的其它控制項:

  android:layout_above: 表示此控制項在另一控制項的上面。

  android:layout_below:表示此控制項在另一個控制項的下面。

  android:layout_toLeftOf:表示此控制項在另一個控制項的左邊。            

  android:layout_toRightOf:表示此控制項在另一個控制項的右邊。

                    android:layout_alignTop: 表示此控制項與另一控制項頂部對齊。

                    android:layout_alignBottom:表示此控制項與另一控制項底部對齊。

                    android:layout_alignLeft:表示此控制項與另一個控制項靠左對齊。

                    android:layout_alignRight:表示此控制項與另一個控制項靠右對齊。

          例子請查看官方網站的例子。

  • TableLayout

    表格版面配置,類似於HTML的Table。通過TableRow來定義一行,如果一個控制項佔用多列可以設定android:layout_span, 類似於HTML中Table的colspan。預設情況下一個控制項是按順序放置在每一列的(column 0, column 1….), 也可以通過android:layout_column指定放在哪一列。如果一列內容過長或者過短,可以通過android:stretchColumns和android:shrinkColumns來增加或者減少此列的寬度。

    例子請查看官方網站的例子。

  • AbsoluteLayout

    絕對布局,就是Android不提供任何布局控制,而是由我們自己通過X座標,Y座標來控制組件的位置,在這個容器裡面的組件位置、大小都需要我們自己來控制。

         layout_x :制定該子組件的x座標。

         layout_y:制定該子組件的y座標

         非常不建議使用AbsoluteLayout來進行控制項布局,因為使用者手機螢幕尺寸有大有小,如果使用這個來布局,那麼你想想你自己的工作量吧。

3、 Widget介紹

   Widget分為系統提供和使用者自訂兩部分,對於使用者自訂部分將在後面的筆記中介紹。在Android系統中為我們提供了一個標準的View工具箱,我們只需要調用這些工具就可以建立出外觀一致的應用程式。

  下面是Android系統為我們提供的部分控制項:

  ? TextView

      標準的唯讀文本label。它支援多行顯示、字串格式化和文本自動換行。

  ? EditText

     可編輯的文本輸入框。它支援多行輸入和文字換行。

  ? ListView

     一個ViewGroup,以列表的方式建立和管理一組顯示項目。標準的ListView使用TextView來顯示每一個字串數組內的值。

  ? Spinner

     群組控制項,顯示一個TextView和一個關聯的ListView,用來從一個列表中選擇一項並顯示選擇項在TextView中。它還有一個button,當按下時顯示一個選擇框。

  ? Button

     標準的按鈕。

  ? CheckBox

     兩種狀態的button,代表checked或unchecked。

  ? RadioButton

     選項按鈕。

  更多的可以查看官方協助文檔。

4、 建立一個Menu

  當你開啟一個應用程式時,點擊手機的Menu鍵,這個時候彈出來的那麼菜單選項就是Menu。

  如果要建立一個Menu菜單,需要重寫onOptionsItemSelected(響應Menu選擇),onCreateOptionsMenu(建立Menu菜單)這兩個方法。

 1 package LiB.Demo;
2
3 import android.app.Activity;
4 import android.os.Bundle;
5 import android.view.Menu;
6 import android.view.MenuItem;
7 import android.widget.TextView;
8
9 public class Android_demoActivity extends Activity {
10 /** Called when the activity is first created. */
11 TextView tv=null;
12 @Override
13 public void onCreate(Bundle savedInstanceState) {
14 super.onCreate(savedInstanceState);
15 setContentView(R.layout.main);
16 tv=(TextView)findViewById(R.id.textView1);
17 }
18
19 @Override
20 public boolean onCreateOptionsMenu(Menu menu) {
21 // TODO Auto-generated method stub
22 //第一個參數為該子項屬於哪個組
23 //第二個參數是該子項的唯一ID
24 //第三個參數是該子項在Menu菜單中顯示的序號
25 //第四個參數為該子項的顯示名稱
26 menu.add(0, 1, 1, "Exit");
27 menu.add(0, 2, 2, "About");
28 return super.onCreateOptionsMenu(menu);
29 }
30
31 @Override
32 public boolean onOptionsItemSelected(MenuItem item) {
33 // TODO Auto-generated method stub
34 if(item.getItemId()==1)
35 {
36 finish();
37 }
38 if(item.getItemId()==2)
39 {
40 tv.setText(item.getTitle());
41 }
42 return super.onOptionsItemSelected(item);
43 }
44
45 }
三、總結

  今天學習了View和Layout,並在結束的時候舉了一個建立Menu的例子。Layout作為布局控制,對我們以後的開發及其重要,在以後的開發中必定會經常接觸到。在筆記五中將詳細介紹幾個常用控制項。

Android學習筆記(四)View和Layout

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.