安卓開發--新建工程,新建虛擬手機,按鍵事件響應
- 1.前言
- 2.運行一個工程
- 2.1布局一個Button
- 2.2 button一般點擊事件
- 2.2 button屬性點擊事件
- 2.2 button推薦點擊事件(含:Android中使用switch-case遇到case R.id.xxx報錯)
本篇博客介紹安卓開發的入門工程,通過使用按鈕Buton來了解一個工程的運作機制。前面已經介紹了環境搭建,這里就默認大家環境都已經搭建好了。環境搭建看這里安卓開發–環境配置
1.前言
這里必須說明,我們平時開發APP的時候,實際上都是再虛擬設備上先進行調試,然后在下載到手機上進行安裝的。當然,你也可以一直手機直接下載調試。我試過,下載卸載千百遍,有點廢C口。
所以這里介紹如何新建虛擬設備。其實在APP開發中,是需要對所有不同屏幕大小的手機進行布局開發的,所以一開始就要選擇一個目標屏幕大小,我屬于個人開發者,就新建一個自己手機屏幕大小進行開發。新建一個設備如圖:

代碼配置 | 手機信息 |
---|---|
![]() | ![]() |
點擊 Finish之后,會出現自定義的手機型號,點擊next

選擇安卓13 | 下載安卓13 (1.4G) |
---|---|
![]() | ![]() |
下載完成后,點擊next,點擊Finish。
可以看到頂部啟動欄有一個新建的設備,我們可以直接啟動看看效果,體驗一個虛擬手機。
后續的開發都會在這個虛擬手機中完成。

2.運行一個工程
新建一個空白工程,參考這里:安卓開發–環境配置
新建好一個工程以后,需要修改布局代碼res/layout/activity_main.xml
將其替換為以下全部內容:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"></LinearLayout>
上面是一個空白布局,后續開發的布局都從這里開始。
修改運行代碼java/com/example/myfirstapp/MainActivity.java
,將其全部替換為以下內容:
package com.example.myfirstapp;
import androidx.appcompat.app.AppCompatActivity;public class MainActivity extends AppCompatActivity {}
上面是一個空白邏輯,后續開發的代碼流程都從這里開始。
記住了,一個空白工程就是本小節的流程,所有的開發都從一個空白工程開始。
2.1布局一個Button
先在res/layout/activity_main.xml
文件中布局一個 Button,注意其id號為 btn1
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"><Buttonandroid:id="@+id/btn1"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="按鍵1"android:textSize="50dp"/></LinearLayout>
此時的預覽布局出現布局效果,如圖中1、2分別為其代碼以及對應的布局 :

好了,現在布局完成,我們探索如何使用按鍵。
2.2 button一般點擊事件
在文件java/com/example/myfirstapp/MainActivity.java
,寫入以下代碼,完成按鍵函數的一般調用:
package com.example.myfirstapp;
import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.Button;public class MainActivity extends AppCompatActivity {private Button mBt1;//申明組件@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mBt1=findViewById(R.id.btn1); // 讀ID,與布局id號對應//監聽函數mBt1.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {//你要處理的內容Log.d("btn1", "點擊按鈕了");}});}
}
我們將其下載到虛擬手機中,打開Logcat輸出端口,可以看到點擊被響應。效果如圖:

這里1表示代碼,2是虛擬手機界面,3是Logcat窗口,4是點擊后的log信息。
2.2 button屬性點擊事件
按鈕是自帶被點擊的屬性的,可以利用其屬性完成點擊事件的檢測。
布局文件res/layout/activity_main.xml
代碼,為其增加了android:onClick="showToast"
:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"><Buttonandroid:id="@+id/btn1"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="按鍵1"android:textSize="50dp"android:onClick="showToast"/></LinearLayout>
邏輯文件java/com/example/myfirstapp/MainActivity.java
代碼:
package com.example.myfirstapp;
import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.Button;public class MainActivity extends AppCompatActivity {private Button mbt01;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mbt01=findViewById(R.id.btn1);}public void showToast(View view){Log.d("btn1", "點擊按鈕了");}
}
效果如圖:

這里1表示代碼,2是虛擬手機界面,3是Logcat窗口,4是點擊后的log信息。
2.2 button推薦點擊事件(含:Android中使用switch-case遇到case R.id.xxx報錯)
這個方法特別推薦在項目中使用,項目里面使用這中方式最合理,因為這個方法可以同時檢測多個按鍵而不會邏輯沖突。
布局文件res/layout/activity_main.xml
代碼,為其新加了一個按鍵:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><Buttonandroid:id="@+id/btn1"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="按鍵1"android:textSize="50dp"/><Buttonandroid:id="@+id/btn2"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="按鍵2"android:textSize="50dp"/></LinearLayout>
邏輯文件java/com/example/myfirstapp/MainActivity.java
代碼:
package com.example.myfirstapp;
import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.Button;public class MainActivity extends AppCompatActivity {private Button mbt01;private Button mbt02;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mbt01=findViewById(R.id.btn1);mbt02=findViewById(R.id.btn2);setListeners();//調用方法}//寫一個方法private void setListeners(){OnClick onclick=new OnClick();//實例化onclickmbt01.setOnClickListener(onclick);mbt02.setOnClickListener(onclick);}private class OnClick implements View.OnClickListener{@Overridepublic void onClick(View v) {switch (v.getId()){case R.id.btn1://跳到按鈕界面Log.d("btn1", "按鈕1被點擊了");break;case R.id.btn2://跳到文本框界面Log.d("btn2", "按鈕2被點擊了");break;}}}
}
這里有個會遇到一個問題,Android中使用switch-case遇到case R.id.xxx報錯
運行效果如圖:

這里1表示代碼,2是虛擬手機界面,3是Logcat窗口,4是點擊后的log信息,可以看到按鍵1 2點擊均有相應的反應。