Android開發之基本控制項和詳解

Android中的控制項的使用方式和iOS中控制項的使用方式基本相同,都是事件驅動。給控制項添加事件也有介面回調和委託代理的方式。今天這篇博客就總結一下Android中常用的基本控制項以及布局方式。說到布局方式Android和iOS還是區別挺大的,在iOS中有Frame絕對布局和AutoLayout相對布局。而在Android中的布局方式就比較豐富了,今天博客中會介紹四種常用的布局方式。先總結一下控制項,然後再搞一搞基本方式,開發環境還是用的Mac下的Android Studio。開始今天的正題, 雖然Android的控制項和布局方式都可以拖拽實現,今天為了更詳細的了解控制項和布局,我們就用純代碼的形式來進行實現和介紹。

一、常用基本控制項

1.TextView

看到Android中的TextView, 我不禁的想到了iOS開發中的UILabel。從字面意思上看,TextView就是文本視圖,只是用來顯示文字的。在iOS中就叫做標籤,即為UILabel。要想在Activity中顯示TextView, 我們需要在相應的布局文件,也就是Activity對應的layout.xml文件去添加相應的控制項標籤。這些xml標籤可以確定控制項的位置,大小,顏色等屬性。下方是在Activity中顯示一個TextView。布局代碼如下:

<TextView
android:id="@+id/name_text_view"
android:layout_width_="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:textSize="30sp"
android:textColor="#be0e0a"
android:text="My name is ZeluLi"/>

標籤<TextView/>代表著我們要在Activity中添加一個個TextView, 標籤中可以設置一些屬性。

  1. android:id屬性代表著TextView的Id,也就是TextView的唯一標示,在java代碼中我們可以通過findViewById()方法來通過Id獲取控制項。上述控制項的唯一id為name_text_view。
  2. android:layout_width屬性代表著控制項的寬度,該屬性的值是match_parent, 表示該控制項的寬度與父視圖的寬度相同。
  3. android:layout_height屬性代表著控制項的高度,該屬性的值是wrap_content,表示控制項的高度根據內容的高度進行改變。
  4. .android:gravity屬性代表著TextView中文字對齊方式,有多種方式,我們在此選的是center,居中顯示。
  5. .android:textSize屬性代表著TextView中文字的型號,也就是文字的大小。
  6. android:textColor屬性設置的是TextView中文字的顏色,屬性值是16進位的色值。
  7. android:text屬性就是用來設置TextView顯示的值的。

我們如何在Java類,也就是Activity中獲取上述控制項呢,下方的代碼就是使用findViewById()方法通過id獲取上述控制項,並獲取TextView中的值以及設置TextView中的值。具體代碼如下。

TextView myTextView = (TextView) findViewById(R.id.name_text_view);
String myText = myTextView.getText().toString();
myTextView.setText(myText+" Add");

經過上面的屬性的設置,運行工程,你會在Activity中看到如下效果:

2.Button

在Android中的按鈕就叫Button, 而在iOS中則叫UIButton。其兩者的用法極為相似。還是和上面類似,我們需要在Activity對應的布局文件layout.xml中添加一個Button, 具體的xml代碼如下所示。<Button/>標籤就是代表著Button, 其中的屬性和屬性值就不做過多的贅述了,上面已經提到了。

<Button
android:id="@+id/click_button"
android:layout_width_="match_parent"
android:layout_height="wrap_content"
android:text="點我"/>

在Activity的類中也是使用findViewById來通過Id獲取該按鈕,獲取按鈕後我們需要給按鈕綁定點擊事件。也就是點擊按鈕要做的事情,下方給出了兩中方式,一種是塊的形式,一種是委託代理的形式。

(1).介面回調的形式綁定點擊事件

Button button = (Button) findViewById(R.id.click_button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//點擊按鈕要做的事情
}
});

(2)委託代理

button.setOnClickListener(this);

//重寫委託回調的方法
/**
* Called when a view has been clicked.
*
* @param v The view that was clicked.
*/
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.click_button:
//點擊按鈕後要做的事情
break;
default:
break;
}
}

經過上面的步驟就會在TextView下面添加了一個按鈕,運行效果如下所示

3.EditText

接下來要為Activity添加一個輸入框,在Android中輸入框的類型和標籤都是EditText。iOS中的輸入框就是UITextField了,其實兩者用法類似,其功能都是接收用戶輸入的數據的。下方是其xml布局方式.

<EditText
android:id="@+id/edit_text"
android:layout_width_="match_parent"
android:layout_height="wrap_content"
android:hint="placeHoder: type something here"
android:maxLines="3"/>

上方EditText標籤中比之前多了兩個屬性:

(1).android:hint屬性後邊是一個字元串,其實就是用來佔位用的字元串,功能是提示用戶該輸入框是幹嘛的,在iOS開發中叫做Placeholder。

(2).android:macLines 用來設置輸入框的最大行數。

在Activity中獲取EditText對象,也是通過Id方式,下方代碼是獲取通過id實例化EditText對象,並獲取其中的文本在Toast上顯示。

EditText myEditText = (EditText) findViewById(R.id.edit_text);
String inputText = myEditText.getText().toString();
Toast.makeText(MainActivity.this, inputText, Toast.LENGTH_SHORT).show();

輸入框如下所示:

4.AlterDialog(警告框)

Toast用來顯示提示內容,而AlterDialog是警告框,上面可以有一些控制項,比如按鈕等。AlterDialog其實就是iOS中的AlterView(在iOS8後有增加了UIAlterController)。下面的代碼是初始化AlterDialog並且進行顯示的代碼,下方的代碼是放在點擊按鈕所觸發的方法當中。

(1)AlterDialog通過AlterDialog的Builder進行創建,在創建的時候會指定該AlterDialog在那個Activity上進行顯示。

(2)通過setTitle方法給AlterDialog設置標題,通過setMessage給AlterDialog設置內容。

(3)setCancelable()方法,我們在這兒設置的時false,表示彈出的AlterDialog在用戶點擊返回鍵是不消失,該值默認是true。

(4)setPositiveButton()方法是設置點擊「確定」按鈕時的事件, setNegativeButton是設置點擊「取消」按鈕的事件。通過Toast來展示事件的點擊。

AlertDialog.Builder alterDialog = new AlertDialog.Builder(MainActivity.this);
alterDialog.setTitle("提示框");
alterDialog.setMessage("提示內容");
alterDialog.setCancelable(false);
alterDialog.setPositiveButton("好的", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, "好的", Toast.LENGTH_SHORT).show();
}
});
alterDialog.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, "取消", Toast.LENGTH_SHORT).show();
}
});
alterDialog.show();

下面就是上面AlterDialog顯示後的效果。

5.ProgressBar(進度條)

進度條,就是平時下載東西常見到表示下載進度的控制項。ProgressBar和iOS中的UIProgressView類似,用法也是非常類似的。首先需要在Activity對應的Xml文件中對ProgressBar進行布局和樣式的設定。下方是ProgressBar的布局和樣式。

<ProgressBar
android:id="@+id/my_progress_bar"
android:layout_width_="match_parent"
android:layout_height="wrap_content"
stylex="?android:attr/progressBarStyleHorizontal"
android:max="200"/>

我們可以通過android:max來設定ProgressBar的進度最大值,而style可以給ProgressBar設定不同的樣式。ProgressBar有多種樣式,可以根據不同的場景來選擇不同的樣式,下方是可選樣式。

在xml中配置好ProgressBar之後就可以在代碼中通過ID獲取,對ProgressBar進行一系列的操作了。下方的代碼也是放在按鈕的點擊事件中,每點擊一次進度條的進度就增加10,直到增到最大值時ProgressBar就會變成不可見。變為不可見後,接著就會把進度設置成0。

ProgressBar myProgressBar = (ProgressBar) findViewById(R.id.my_progress_bar);
myProgressBar.setProgress(myProgressBar.getProgress()+10);

if (myProgressBar.getProgress() == myProgressBar.getMax()) {
myProgressBar.setVisibility(View.GONE);
myProgressBar.setProgress(0);
} else {
myProgressBar.setVisibility(View.VISIBLE);
}

6.ProgressDialog(進度提示框)

ProgressDialog說白了就是在AlterDialog上添加Progress, ProgressDialog不需要在xml中進行配置,直接在代碼中進行生成即可。下方是在按鈕點擊的委託代理方法中添加的ProgressDialog,點擊按鈕時就顯示ProgressDialog。

/**
* Called when a view has been clicked.
*
* @param v The view that was clicked.
*/
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.click_button:

ProgressDialog myProgressDialog = new ProgressDialog(MainActivity.this);
myProgressDialog.setTitle("ProgressDialog");
myProgressDialog.setMessage("Loading……");
myProgressDialog.setCancelable(true);
myProgressDialog.show();

break;
default:
break;
}
}

運行效果如下:


推薦閱讀:

TAG:Android開發 | Android | AndroidStudio |