Android UI 學習記錄

 Android的UI界面設計在main_activity.xml文件中進行,其路徑如下圖所示。

 接下來我們進行UI界面的設計。

(1)首先創建一個空白應用。

(2)找到main_activity.xml文件所在位置,清空裏面的原有文件,我們來自己實現一個UI界面

   A .我們需要先創建一個Layout佈局,在android中支持幾種佈局,分別是:<LinearLayout>,<AbsoluteLayout >,<FrameLayout> ,<GridLayout >,<RelativeLayout> ,<TableLayout>。

在這裏我們創建一個<LinearLayout>並對佈局的長、寬以及排列方式進行設置。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical">

</LinearLayout>

其中,orientation屬性表示佈局的排列方式,在這裏我們使用垂直排列的方式來進行佈局。

   B .然後我們在已創建的佈局中加入一個TextView控件,接下來我們會了解一下控件中的相關屬性,但在此之前,我們需要先了解一下Android的R.java文件。

a.R.java簡介

R.java文件是編譯器自動生成的,它無需開發人員對其進行維護。R.java會自動收錄當前應用中所有的資源,並根據這些資源建立對應的ID,包括:佈局資源、控件資源、String資源、Drawable資源等。我們可以簡單的把R.java理解成是當前Android應用的資源字典。

在當前項目不能包含任何錯誤的前提下,手動刪除了R.java文件,編譯器會立即重新生成一個R.java文件;在res/目錄中增加了一個新的資源,編譯器也會立即把這個資源的ID收錄到R.java文件中。,但是都是有個前提的,就是當前項目不能包含任何錯誤。當發現在更新的資源後,R.java沒有對此資源進行收錄,那麼就需要檢查一下當前項目是否存在錯誤。

b.R.java所在路徑(如下圖所示)

在瞭解完R.java文件後,我們接着回到控件中相關屬性的介紹,我們重新看到main_activity.xml文件。

c.通常第一步,我們需要將控件加到索引庫裏

 <TextView
    android:id="@+id/text1"/>

其中@+表示將後面的內容作爲索引的變量名字加入到索引組庫當中,id表示將其加入到id當中,這裏表示將text1作爲變量名加入到索引庫的id中。

d .設置控件佈局的長和寬。

android:layout_width="wrap_content"
android:layout_height="wrap_content"

這裏layout_width和layout_height中可設置的屬性有:wrap_content、match_parent、fill_parent。

wrap_content:表示寬度或高度足以包含他們的內容即可
match_parent:表示與父元素的大小進行匹配(根據權重確定大小)
fill_parent:表示填充父元素

e.控件佈局的排列方式

android:layout_gravity="center_horizontal"

在這裏表示水平居中,值得注意的是,當你將整體佈局設置爲android:orientation="vertical"時,將layout_gravity設置爲center_vertical將是無效的,因爲整體佈局已經被確定爲垂直排列方式,因此無法進行垂直方向的居中。

除了水平和垂直居中外,layout_gravity還可以設置置頂,置底,靠左靠右等。

f.設置內容的高度

android:height="100dp"

g.設置控件的背景

android:background="@mipmap/ic_launcher"

在項目中,程序已經給我們提供了相關的應用圖片,例如博主所創建的Android項目在下圖目錄中有相應的圖片,在這裏我們可以加以利用。

值得注意的是,這裏面提供的相應圖片已經被程序加入到索引庫中,所以我們需要對其引用。

我們打開R.java文件,在文件結構中找到mipmap對應的地方,找到ic_lancher對應的索引值。

 接下來我們在main_activity.xml文件中進行引用。

@mipmap/ic_launcher

其中,@表示引用R.java中的資源,在這裏我們選定mipmap中的ic_launcher,並將其設置爲背景。

h.設置控件內容的排列方式

android:gravity="bottom"

這裏類似控件的佈局排列方式,代碼中我們將排列方式設置爲置底。

i.設置padding屬性,表示距離某個邊的距離,這裏涉及到的單位sp我們後面再進行介紹。

android:paddingBottom="100sp"

j.設置文本

首先,我們需要將文本字符串寫入資源R.java中,那麼應該怎麼寫呢?我們打開res中的values文件,會看到strings.xml文件,我們可以通過對該文件進行修改,從而達到將字符串寫入索引庫中的目的。

我們打開strings.xml文件並進行修改,將我們需要的字符串進行命名並設置對應的字符串內容。

<resources>
    <string name="app_name">Myapp</string>
    <string name="textViewName">This is a text veiw.</string>
</resources>

在該段代碼中,博主將變量textViewName設置爲”This is a text veiw.“。這樣我們就成功將該字符串變量加入到索引庫中,它會被放到R.java中的string中。我們回到main_activity.xml對其進行引用。

android:text="@string/textViewName"

k.設置字體、字體大小和字體樣式

android:textSize="20.6sp"
android:textStyle="bold|italic"
android:typeface="serif"

在設置字體樣式時,如果需要設置多種字體樣式時,需要加上“|”隔開。

最後我們整合一下main_activity.xml文件。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical">

    <TextView
        android:id="@+id/text1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:height="100dp"
        android:background="@mipmap/ic_launcher"
        android:gravity="bottom"
        android:paddingBottom="100sp"
        android:text="@string/textViewName"
        android:textSize="20.6sp"
        android:textStyle="bold|italic"
        android:typeface="serif" />
</LinearLayout>

這個文件將會在MainActivity.java文件中進行調用顯示,它被放在onCreate方法中,當然對於頁面的設計我們也可以用代碼來實現。我們看看MainActivity.java.

a.我們使用下列代碼來調用main_activity.xml文件。

setContentView(R.layout.main_activity);

b.設置控件的屬性

首先獲取控件的id,並對其屬性進行設置。

TextView tv = (TextView)  findViewById(R.id.text1);
tv.setBackgroundResource(R.mipmap.ic_launcher);

最後我們整合一下MainActivity.java文件。 

package com.example.myapp;

import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;

import com.example.myapp.ui.main.MainFragment;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main_activity);
        TextView tv = (TextView)  findViewById(R.id.text1);
        tv.setBackgroundResource(R.mipmap.ic_launcher);

    }
}

最終的結果如下圖。 

補充:屬性的相關單位

in(inch) --英尺
mm --毫米
dpi = dots per inch(每英尺中的像素點個數)
dp Density-Independent Pixels : 160dpi
(自動適配計算對應值,不會因爲屏幕大小而影響像素,用於設置控件大小)
sp scaled Pixels based on prefered font size(用於設置字體大小)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章