Android入門(七) | 常用控件

文章目錄

  • TextView 控件:文本信息
  • Button 控件:按鈕
  • EditText 控件:輸入框
  • ImageView 控件:圖片
  • ProgressBar 控件:進度條
  • AlertDialog 控件:提示框
  • ProgressDialog 控件:帶有進度條的提示框


TextView 控件:文本信息

TextView 是 Android 中較常用的一個控件。主要用于在界面上顯示一段文本信息,配置在每個活動的 xml 文件中。除了之前用到的 android:idandroid:layout_widthandroid:layout_height 三種屬性,下面三種屬性也比較常用:

  • android:gravity :文字對齊方式,可選值有 topbottomleftrightcenter 等,可以用 | 來同時指定多個值。
  • android:textSize :文字大小,以 sp 為單位。
  • android:textColor:文字顏色。

Button 控件:按鈕

此前我們可能經常困擾于 Button 上的英文字母總是全部大寫,這是由于默認配置會對所有英文字母自動進行大寫轉換,如果不想要我們可以使用這樣的配置:

<Button android:textAllcaps="false"/>

以往的博客里通常使用匿名類來注冊監聽器:

Button button = (Button) findViewById(R.id.button_1);
button.setOnClickListener(new View.OnClickListener() { // 匿名類 new View.OnClickListener()@Overridepublic void onClick(View v) {//添加邏輯}
});

如果不想用匿名類來注冊,也可以用實現接口的方式來注冊:

// implements 繼承 View.OnClickListener 接口
public class MainActivity extends AppCompatActivity implements View.OnClickListener{@Overrideprotected void onCreate(Bundle savedInstanceState) {//...Button button = (Button) findViewById(R.id.button_1);button.setOnClickListener(this);// this 即 implements View.OnClickListener 的具體實現}@Overridepublic void onClick(View v){switch (v.getId()){case R.id.button_1://添加邏輯break;default:break;}}
}

EditText 控件:輸入框

EditText 允許用戶在控件里輸入和編輯內容,并且可以在程序中對這些內容進行處理:

<EditTextandroid:id="@+id/edit_text"android:layout_width="match_parent"android:layout_height="wrap_content"android:hint="Type Something Here"android:maxLines="2" />

運行結果:
在這里插入圖片描述

  • android:hint :在文本框中出現的提示文字。一旦用戶輸入,提示就會消失。
  • android:maxLines :限制文本框的最大行數。當輸入內容增多時,EditText 會不斷拉長,界面就會非常難看。本例中,輸入超過兩行,文本就會向上滾動,EditText 就不會再繼續拉伸。

還可以結合 EditTextButton 來完成一些功能,比如點擊按鈕來獲取 EditText 中輸入的內容:

public class MainActivity extends AppCompatActivity {private Button button;private EditText editText;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);button = (Button) findViewById(R.id.button_1);editText = (EditText) findViewById(R.id.edit_text); button.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {String inputText = editText.getText().toString();Toast.makeText(FirstActivity.this, inputText, Toast.LENGTH_SHORT).show();}});}
}
  • 首先通過 findViewById() 方法得到 EditText 的實例;
  • 然后在 Button 的點擊事件里調用 EditTextgetText() 方法獲取到輸人的內容;
  • 再調用 toString() 方法轉換成字符串;
  • 最后使用 Toast 將輸入的內容顯示出來。

運行結果:

在這里插入圖片描述


ImageView 控件:圖片

ImageView 是用于在界面上顯示圖片的一個控件,使用這個控件需要在 drawable 目錄中預置一些圖片。

xml 文件中添加 ImageView

<ImageViewandroid:id="@+id/image_view"android:layout_width="wrap_content"android:layout_height="wrap_content" android:src="@drawable/cmy1" >
</ImageView>
  • 由于圖片的寬和高都是未知的,所以將 ImageView 的寬和高都設定為 wrap_content,這樣就保證了不管圖片的尺寸是多少,圖片都可以完整地展示出來。
  • android:src :指定引用哪張圖片,本例中是 drawable 系目錄下的名為 cmy1 的圖片。

運行結果:

在這里插入圖片描述
實現點擊 Button 切換圖片的功能:

public class FirstActivity extends AppCompatActivity {private ImageView imageView;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.first_layout);Button button_normal = (Button)findViewById(R.id.button_normal);imageView = (ImageView)findViewById(R.id.image_view);button_normal.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {switch (v.getId()){case R.id.button_normal:imageView.setImageResource(R.drawable.cmy2);break;default:break;}}});}
}

ProgressBar 控件:進度條

用于在界面上顯示一個進度條,表示程序正在加載一些數據:

    <ProgressBarandroid:id="@+id/progress_circular"android:layout_width="match_parent"android:layout_height="wrap_content" ></ProgressBar>

有個問題,如上實現的進度條會一直旋轉:

在這里插入圖片描述

可以通過可見屬性 visibility,來在加載完成時停止進度條旋轉:

  • visible :表示可見,為默認值。
  • invisible :表示不可見,但依然存在,只是透明。
  • gone :表示不可見,并且不再占用屏幕空間。

可以通過 setVisiblity 方法來設定這三種值,舉個例子,通過點擊 Button 來切換 ProgressBarGONE 還是 VISIBLE

public class FirstActivity extends AppCompatActivity {private ProgressBar progressBar;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.first_layout);Button button_normal = (Button)findViewById(R.id.button_normal);progressBar = (ProgressBar)findViewById(R.id.progress_circular);button_normal.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {switch (v.getId()){case R.id.button_normal:if(progressBar.getVisibility() == View.GONE){ // 原本不可見則設為可見progressBar.setVisibility(View.VISIBLE);}else{ // 原本可見則設為不可見progressBar.setVisibility(View.GONE);}break;default:break;}}});}
}

默認的進度條形式是圓形,可以通過 style 屬性將進度條形式設為條形,并且給它設置一個最大值,從而達到動態改變進度條進度的目的:

<ProgressBarandroid:id="@+id/progress_bar"android:layout_width="match_parent"android:layout_height="wrap_content" style="?android:attr/progressBarStyleHorizontal"android:max="100"/>

實現 每點擊一次按鈕就能獲取進度條的當前進度,然后在現有進度條上加10作為更新后的進度 的功能:

public class FirstActivity extends AppCompatActivity {private ProgressBar progressBar;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.first_layout);Button button_normal = (Button)findViewById(R.id.button_normal);progressBar = (ProgressBar)findViewById(R.id.progress_circular);button_normal.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {switch (v.getId()){case R.id.button_normal:int progress = progressBar.getProgress();progress = progress + 10;progressBar.setProgress(progress);break;default:break;}}});}
}

AlertDialog 控件:提示框

在當前界面彈出一個置頂于有界面元素之上的對話框,能夠屏蔽掉其他控件的交互能力。因此一般用于提示一些非常重要的內容或者警告信息。比如防誤刪等。

添加 AlertDialog

public void onClick(View v) {AlertDialog.Builder dialog = new AlertDialog.Builder(FirstActivity.this);dialog.setTitle("Warning");dialog.setMessage("Are you sure?");dialog.setCancelable(false);// setCancelable 默認為 true,表點擊彈窗外或BACK鍵可以取消彈窗,false則表示不可以取消dialog.setPositiveButton("YES", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {// 可以自定義點擊后的事件,比如跳轉到其他 ActivityIntent intent = new Intent(FirstActivity.this, DialogActivity.class);startActivity(intent);}});dialog.setNegativeButton("NO", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {}});dialog.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {}});dialog.show();
}

setPositiveButtonsetNegativeButtonsetNeutralButton 三者都是封裝好的 Button,只是顯示位置不同,通常分別用來對應確定事件、否定事件、中立事件。但也可以按行為習慣進行更改,比如我偏要 setPositiveButton 對應否定事件別人也拿我沒辦法……只是對應事件和方法的意思不一樣可能在交接時誤導隊友……
在這里插入圖片描述


ProgressDialog 控件:帶有進度條的提示框

可以在界面上彈出一個帶有進度條的提示框,能夠屏蔽掉其他空間的交互能力。一般是用于表示當前操作比較耗時,讓用戶耐心等待:

public void onClick(View v) {switch (v.getId()){case R.id.button_normal:ProgressDialog dialog = new ProgressDialog(FirstActivity.this);dialog.setTitle("ProgressDialog");dialog.setMessage("Loading……");dialog.setCancelable(false);dialog.setButton3("CANCEL", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) { }});dialog.setButton2("YES", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) { }});dialog.setButton("NO", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) { }});dialog.show();break;}
}

由于 setCancelable() 中傳入了 false,因此 ProgressDialog 不能被取消,所以在加載完成之后一定要用 dismiss() 方法來關閉對話框,否則 ProgressDialog 會一直存在。

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/443709.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/443709.shtml
英文地址,請注明出處:http://en.pswp.cn/news/443709.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Android入門(八) | 常用的界面布局 及 自定義控件

文章目錄LinearLayout &#xff1a;線性布局android:layout_gravity &#xff1a;控件的對齊方式android:layout_weight&#xff1a;權重RelativeLayout &#xff1a;相對布局相對于父布局進行定位相對于控件進行定位邊緣對齊FrameLayout &#xff1a;幀布局Percent &#xff1…

Android入門(九)| 滾動控件 ListView 與 RecyclerView

文章目錄ListView內置類型的簡單運用定制數據類型提升效率點擊事件RecyclerView布局管理器點擊事件ListView 內置類型的簡單運用 由于手機屏幕空間有限&#xff0c;能夠一次性在屏幕上顯示的內容不多&#xff0c;當我們的程序有大量數據需要顯示的時候就可以借助 ListView 來…

關于“三門問題”的一些想法

三門問題&#xff08;Monty Hall problem&#xff09;亦稱為蒙提霍爾問題、蒙特霍問題或蒙提霍爾悖論&#xff0c;大致出自美國的電視游戲節目Let’s Make a Deal。問題名字來自該節目的主持人蒙提霍爾&#xff08;Monty Hall&#xff09;。參賽者會看見三扇關閉了的門&#xf…

Android入門(10)| Fragment碎片詳解

文章目錄為什么要使用碎片&#xff08;Fragment&#xff09;實例布局文件FragmentActivity動態添加碎片布局文件FragmentActivity碎片通信Fragment布局文件Activity生命周期為什么要使用碎片&#xff08;Fragment&#xff09; 我們在手機上看新聞可能是這樣的&#xff1a; Re…

Android開發(1) | Fragment 的應用——新聞應用

文章目錄Item&#xff1a;標題子項布局文件Java代碼標題碎片布局文件Java代碼新聞內容碎片布局文件Java代碼新聞內容活動布局文件Java代碼首界面布局文件Java代碼Item&#xff1a;標題子項 布局文件 news_item.xml&#xff1a; <TextViewxmlns:android"http://schema…

Java Web整體異常處理

在實際的J2EE項目中&#xff0c;系統內部難免會出現一些異常&#xff0c;就如StrutsSpringHibernate項目&#xff1a;通常一個頁面請求到達后臺以后&#xff0c;首先是到action&#xff08;就是MVC中的controller&#xff09;&#xff0c;在action層會調用業務邏輯層service&am…

Android入門(11)| 全局廣播與本地廣播

文章目錄廣播概念接收廣播動態注冊實例靜態注冊實例發送廣播發送標準廣播廣播的跨進程特性發送有序廣播本地廣播廣播概念 Android 中的每個應用程序都可以對自己感興趣的廣播進行注冊&#xff0c;這樣該程序就只會接收到自己所關心的廣播內容&#xff0c;這些廣播可能是來自系…

Android開發(2) | 廣播 Broadcast 的應用——強制下線功能

文章目錄功能簡介關閉所有活動登陸界面發送強制下線的廣播廣播接收器AndroidManifest.xml運行結果功能簡介 強制下線功能只需要彈出一個對話框&#xff0c;讓用戶只能點擊確定按鈕&#xff0c;回到登錄界面。 如果在每一個活動中添加一個對話框的話太過繁瑣&#xff0c;用廣播…

Android入門(12)| 數據持久化

文章目錄數據持久化文件存儲將數據存儲進文件實例從文件中讀取數據實例SharedPreferences存儲將數據存儲進文件實例從文件中讀取數據實例實現記住密碼的功能SQLite數據庫存儲創建自己的幫助類調用自己的幫助類補全 onUpgrade() 方法增刪查改增&#xff1a;SQLiteDatabase.inser…

Android入門(13)| Android權限 與 內容提供器

文章目錄普通權限與危險權限運行時申請權限內容提供器運用安卓封裝好的內容提供器自實現的內容提供器概念實現普通權限與危險權限 主要用于不同應用程序之間在保證被訪數據的安全性的基礎上&#xff0c;實現數據共享的功能。 在 Android 6.0 開始引入了運行時權限的功能&…

Java實現身份證號碼的驗證,JAVA后臺驗證身份證號碼

代碼如下&#xff1a; package cn.gov.csrc.util;/*** 18 位身份證驗證器* * author admin* */ public class IDCard {final int[] wi { 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1 };final int[] vi { 1, 0, X, 9, 8, 7, 6, 5, 4, 3, 2 };private int[] ai n…

Android入門(14)| 通知

文章目錄創建通知點擊效果其它小功能實例創建通知 創建通知的步驟&#xff1a; 管理通知的 NotificationManager&#xff0c;通常通過當前 Context 的 getSystemService() 獲取實例。它接受一個字符串參數用于確定獲取系統的什么服務。Android 8.0(O) 版本后需要通知通道&…

Android開發(3) | 權限和內容提供器的應用——調用相機和相冊

文章目錄拍照并保存到 ImageView 控件布局文件 notice_layout.xml按鈕 button_takePhoto 的點擊操作隱式 Intent 啟動后的回調AndroidManifest.xml從相冊選取照片并在 ImageView 控件中顯示布局文件 notice_layout.xml按鈕 button_takePhoto 的點擊操作自定義打開相冊的方法 op…

Android開發(4) | 系統權限、MediaPlayer類 和 VideoView類 的應用——播放多媒體文件

文章目錄MediaPlayer類播放音頻的實例VideoView類播放視頻的實例MediaPlayer類 對多種格式的音頻文件提供了全面的控制方法&#xff1a; 如何獲得MediaPlayer實例&#xff1f; 通過構造函數&#xff1a; MediaPlayer mp new MediaPlayer();調用 MediaPlayer.create() 方法&…

Android入門(15)| 網絡

文章目錄WebViewHTTP使用HttpURLConnection使用OkHttp封裝網絡操作封裝HttpURLConnection封裝OkHttpWebView WebView 可以在 應用程序中&#xff08;而不是瀏覽器&#xff09; 展示一些網頁。 布局文件 web_layout.xml&#xff1a; <LinearLayoutxmlns:android"http…

Java-單例模式

單例模式相信大家都不陌生&#xff0c;在JAVAEE應用中&#xff0c;單例模式是一種應用非常廣泛的設計模式&#xff0c;應用中許多組件都只需要單個實例&#xff0c;下面介紹單例模式。 使用單例模式的優點&#xff1a; 1.減少創建JAVA實例所帶來的系統開銷。 2.便于系統跟蹤單…

Android入門(16)| 服務

文章目錄概念Android 多線程繼承 Thread繼承 Runable 接口匿名類異步消息處理AsyncTask使用服務框架啟動/停止服務綁定/解綁服務服務的生命周期前臺服務IntentService完整版下載示例下載過程的回調接口&#xff1a;DownloadListener繼承 AsyncTask 實現下載功能&#xff1a;Dow…

2020德勤面試開始了嗎_2020國考面試開始,近期面試公告匯總,附結構化小組面試流程...

2020年國家公務員考試面試環節逐步恢復考試&#xff0c;各個招錄部門已經發布面試考察公告&#xff0c;對于進入面試環節的國考考生來說&#xff0c;有必要了解近期國考面試的招錄動態&#xff0c;提前做好面試準備。2020國考國家統計局機關面試面試確認&#xff1a;請進入面試…

項目積壓需求項目計劃_需求變更頻繁,項目經理如何做好需求管理?

項目實施過程中&#xff0c;項目經理常常面臨一個重大挑戰——需求變更。需求變更無處不在&#xff0c;市場條件變化、新業務出現、戰略目標調整、客戶需求修改、資源限制等&#xff0c;都會造成需求變更。需求變更會影響項目的時間、成本和質量&#xff0c;對整個項目和團隊成…

Android | Sensor.TYPE_ORIENTATION被廢棄后的解決辦法

文章目錄概述getOrientation 方法根據 旋轉矩陣R 獲取 設備旋轉弧度getRotationMatrix 方法根據 地磁場、加速度傳感器對象 獲取 旋轉矩陣R代碼參考資料概述 Sensor.TYPE_ORIENTATION 常數在 API 8 中已棄用&#xff0c;官方推薦使用 SensorManager.getOrientation() 替代。關…