2017Google Study Jams之1A對(duì)View和ViewGroup的認(rèn)識(shí)

此次活動(dòng)的舉辦方:Google Study Jams活動(dòng)官網(wǎng)

我的博客(同步此次活動(dòng)筆記):CSDN博客、我的簡(jiǎn)書(shū)

Google Developers

一、1A 認(rèn)識(shí)View的筆記

1、初識(shí)Android

  • Android是一款開(kāi)源的基于Linux的操作系統(tǒng),主要用于移動(dòng)設(shè)備(手機(jī)和平板),也用于汽車(chē),家電等設(shè)備上來(lái)進(jìn)入物聯(lián)網(wǎng)時(shí)代。
  • 開(kāi)發(fā)的硬件設(shè)備:Windows,Mac等
  • 開(kāi)發(fā)的操作系統(tǒng):Windows,Linux,Ubuntu等
  • 測(cè)試設(shè)備:Android手機(jī)、平板或其他Android系統(tǒng)設(shè)備
  • 集成開(kāi)發(fā)環(huán)境:IDE(Android studio(推薦), Eclipse(Google目前不再維護(hù)更新))
  • Android Studio:Android Studio 是一個(gè)Android集成開(kāi)發(fā)工具,基于IntelliJ IDEA。Android Studio 提供了集成的 Android 開(kāi)發(fā)工具用于開(kāi)發(fā)和調(diào)試。
  • 國(guó)內(nèi)比較好的一個(gè)中文鏡像網(wǎng)站

2、認(rèn)識(shí)Android的View(視圖)

  • View:View是屏幕上的一個(gè)矩形區(qū)域,是布局組件的基本組成元素。
  • Layout:所有的View視圖拼起來(lái)就是屏幕上的Layout。
  • View有TextView(文本視圖),ImageView(圖像視圖), Button(按鈕)等。

3、認(rèn)識(shí)XML

  • 使用Android studio來(lái)編寫(xiě)并預(yù)覽
  • 編寫(xiě)屏幕上的layout,layout由之前認(rèn)識(shí)的View組成
  • XML:Extensible Markup Language 可拓展標(biāo)記語(yǔ)言,用來(lái)編寫(xiě)布局Layout
  • View的命名規(guī)則:采用駝峰規(guī)則(Camel-Case),也就是將每個(gè)單詞的首字母大寫(xiě),中間不加任何符號(hào)和空格
  • 標(biāo)簽:雙標(biāo)簽或者自閉標(biāo)簽(例:<TextView> </TextView>或<TextView />)
  • 屬性:“=”左邊是屬性名,右變屬性值,每個(gè)屬性都有默認(rèn)值
  • 一個(gè)在線的視圖預(yù)覽工具

4、開(kāi)啟View的第一個(gè)控件:TextView(文本視圖)

<TextView
        android:id="@+id/title_text_view"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/my_photos"
        android:textAppearance="?android:textAppearanceLarge"
        android:textColor="#4689C8"
        android:textStyle="bold" />
  • 單位:
  • dp:用于設(shè)置控件的寬高 (與手機(jī)像素密度無(wú)關(guān))
  • sp:用于設(shè)置文本字體的大小 (與手機(jī)像素密度無(wú)關(guān))
  • px :與手機(jī)像素有關(guān)(不推薦作為控件的寬高)
  • wrap_content:根據(jù)內(nèi)容的大小決定控件的大小
  • android:textAppearance="?android:textAppearanceLarge" 可以設(shè)置系統(tǒng)的屬性,采用大中小字體樣式
  • 顏色:引用系統(tǒng)或者本地資源(@color/white)或者采用16進(jìn)制“#FFFFFF”
  • Common Android Views 常用基礎(chǔ)控件模板供參考使用

5、ImageView (圖像視圖)

<ImageView
      android:id="@+id/photo_image_view"
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      android:src="@drawable/icon"
      android:scaleType="centerCrop"/>
  • android:src:加載本地圖片資源(Android studio對(duì)圖片資源有一定的要求,建議使用.png的文件資源)
  • android:scaleType:對(duì)圖片進(jìn)行一定的裁剪,縮放和位置擺放的操作

6、通過(guò)看Android開(kāi)發(fā)文檔幫助開(kāi)發(fā)

  • https://developer.android.com/index.html Android開(kāi)發(fā)官網(wǎng),有Android的API,APP的開(kāi)發(fā)介紹,Material Design語(yǔ)言的介紹等,供開(kāi)發(fā)者查閱學(xué)習(xí)。

二、1B 認(rèn)識(shí)ViewGroup的筆記

1、認(rèn)識(shí)ViewGroup

  • ViewGroup相當(dāng)于一個(gè)放置View的容器,并且我們?cè)趯?xiě)布局xml的時(shí)候,會(huì)告訴容器(凡是以layout為開(kāi)頭的屬性,都是為用于告訴容器的),例如寬度(layout_width)、高度(layout_height)、對(duì)齊方式(layout_gravity)等;當(dāng)然還有后面要說(shuō)的layout_margin、layout_padding等;所以一個(gè)ViewGroup是一個(gè)可以包含子View的容器,是布局文件和View容器的基類。

2、初識(shí)布局(Layout)-線性布局(LinearLayout)

  • 水平布局 horizontal
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
     <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="按鈕1"/>   
     <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="按鈕2"/>   
     <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="按鈕3"/>   
</LinearLayout>
  • 垂直布局 horizontal
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
     <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="按鈕1"/>   
     <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="按鈕2"/>   
     <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="按鈕3"/>   
</LinearLayout>
  • 兩種方式效果對(duì)比
水平布局
垂直布局
  • 概念: LinearLayout是線性布局控件,它包含的子控件將以橫向或豎向的方式排列。

  • 屬性:android:gravity:指定如何在該對(duì)象中放置此對(duì)象的內(nèi)容(x/y坐標(biāo)值)
    android:orientation:設(shè)置它內(nèi)容的對(duì)其方向(橫向/豎向)
    ps:gravity :這個(gè)英文單詞是重心的意思,在這里就表示??课恢玫囊馑?。

  • 當(dāng) android:orientation="vertical" 時(shí), 只有水平方向的設(shè)置才起作用,垂直方向的設(shè)置不起作用。即:left,right,center_horizontal 是生效的。

  • 當(dāng) android:orientation="horizontal" 時(shí), 只有垂直方向的設(shè)置才起作用,水平方向的設(shè)置不起作用。即:top,bottom,center_vertical 是生效的。

  • 延伸:android:layout_gravity 和 android:gravity 的區(qū)別
    從名字上可以看到,android:gravity是對(duì)元素本身說(shuō)的,元素本身的文本顯示在什么地方靠著換個(gè)屬性設(shè)置,不過(guò)不設(shè)置默認(rèn)是在左側(cè)的。
    android:layout_gravity是相對(duì)與它的父元素說(shuō)的,說(shuō)明元素顯示在父元素的什么位置。 比如說(shuō)button: android:layout_gravity 表示按鈕在界面上的位置。 android:gravity表示button上的字在button上的位置。

  • 可選值 :
    這兩個(gè)屬性可選的值有:top、bottom、left、right、center_vertical、fill_vertical、center_horizontal、fill_horizontal、center、fill、clip_vertical。

3、相對(duì)布局(RelativeLayout)

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:orientation="vertical">
    <ImageView
        android:id="@+id/image_center"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:src="@mipmap/ic_launcher"/>
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerVertical="true"
        android:layout_toLeftOf="@id/image_center"
        android:text="我在左邊"/>
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_above="@id/image_center"
        android:text="我在上邊"/>
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerVertical="true"
        android:layout_toRightOf="@id/image_center"
        android:text="我在右邊"/>
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_below="@id/image_center"
        android:text="我在下邊"/>
</RelativeLayout>
  • 概念:RelativeLayout是一個(gè)允許子視圖相對(duì)于其他兄弟視圖或是父視圖顯示的視圖組(通過(guò)ID指定)。每個(gè)視圖的位置能夠指定它相對(duì)于兄弟(比如在其他視圖的左邊或是下邊)或是父視圖(這里是指相對(duì)布局容器,比如底部對(duì)齊、中間偏左)的位置。
  • 屬性:
  • android:layout_toLeftOf:位于相對(duì)控件的左方
  • android:layout_above:位于相對(duì)控件的上方
  • android:layout_toRightOf:位于相對(duì)控件的右方
  • android:layout_below:位于相對(duì)控件的下方
  • android:layout_centerVertical:在父布局中垂直居中
  • android:layout_centerHorizontal:在父布局中水平居中
  • android:layout_centerInParent:在父布局正中
相對(duì)布局效果圖

4、優(yōu)化布局-設(shè)定布局的內(nèi)外邊距(Paddding、Margin)

  • 簡(jiǎn)單概述:
  • android:layout_margin就是設(shè)置view的上下左右邊框的額外空間
  • android:padding是設(shè)置內(nèi)容相對(duì)view的邊框的距離。
    通俗來(lái)說(shuō),一個(gè)設(shè)置內(nèi)邊距,一個(gè)設(shè)置外邊距。
  • ps:在LinearLayout、RelativeLayout、TableLayout中,這2個(gè)屬性都是設(shè)置都是有效的
    在FrameLayout中,android:layout_margin是無(wú)效的,因?yàn)镕rameLayout里面的元素都是從左上角開(kāi)始繪制的在AbsoluteLayout中,沒(méi)有android:layout_margin屬性。
內(nèi)外邊距說(shuō)明

OK,關(guān)于View和ViewGroup的認(rèn)識(shí)就記到這里了。感覺(jué)各位的閱讀!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容