活動的基本用法 1、新建Android項目,項目名叫做ActivityTest,選擇Add No Activity,點擊Finish,等待Gradle構建完成,項目就創建成功。 2、手動創建活動 項目結構轉換成Project模式,此時app/src/main/java/com.example.adm ...
活動的基本用法
1、新建Android項目,項目名叫做ActivityTest,選擇Add No Activity,點擊Finish,等待Gradle構建完成,項目就創建成功。
2、手動創建活動
項目結構轉換成Project模式,此時app/src/main/java/com.example.administrator.activitytest目錄應該是空的,現在右擊com.example.administrator.activitytest包->New->Activity->Empty Activity,彈出一個創建活動的對話框,將活動命名為MainActivity,不勾選Generate Layout File和 Launcher Activity這兩個選項,然後點擊Finish。此時MainActivity中已經重寫了onCreate()方法,這是由Android Studio自動完成的。
3、創建和載入佈局(Android程式的設計講究邏輯和視圖的分離)
首先手動創建一個佈局文件,右擊app/src/main/res目錄->New->Directory,會彈出一個新建目錄的視窗,先創建一個名為layout的目錄。然後對著layout目錄右鍵->Layout resource file,又會彈出一個新建佈局資源文件的視窗,將這個佈局文件命名為first_layout,根元素就預設選擇LinearLayout,點擊OK完成佈局的創建,這時會看到佈局編輯器。視窗的最下方有兩個切換卡,左邊是Design,右邊是Text。Design狀態時拖動一個Button至手機屏幕,切換到Text,添加一個按鈕。
1 <?xml version="1.0" encoding="utf-8"?>
2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
3 android:orientation="vertical"
4 android:layout_width="match_parent"
5 android:layout_height="match_parent">
6
7 <Button
8 android:text="Button"
9 android:layout_width="match_parent"
10 android:layout_height="wrap_content"
11 android:id="@+id/button" /> //對當前元素定義一個唯一標識符
12 </LinearLayout>
在活動中載入這個佈局,重新回到MainActivity,在onCreate()方法中加入如下代碼:
1 public class MainActivity extends AppCompatActivity {
2 @Override
3 protected void onCreate(Bundle savedInstanceState){
4 super.onCreate(savedInstanceState);
5 setContentView(R.layout.first_layout); //傳入一個佈局文件的id
6 }
7 }
4、在AndroidManifest文件中註冊
所有活動都要在AndroidManifest.xml中進行註冊才能生效,實際上MainActivity已經註冊過了,打開app/src/main/Androidmanifest.xml文件瞧一瞧,除了原有的代碼,
還需加上入口Activity(13至16行),用來指定首先啟用哪個活動。
1 <?xml version="1.0" encoding="utf-8"?>
2 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
3 package="com.example.administrator.activitytest">
4
5 <application
6 android:allowBackup="true"
7 android:icon="@mipmap/ic_launcher"
8 android:label="@string/app_name"
9 android:supportsRtl="true"
10 android:theme="@style/AppTheme">
11 <activity android:name=".MainActivity"> //android:name用來指定具體註冊哪一個活動
12
13 <intent-filter>
14 <action android:name="android.intent.action.MAIN" />
15 <category android:name="android.intent.category.LAUNCHER" />
16 </intent-filter>
17
18 </activity>
19 </application>
20 </manifest>
5、在活動中使用Toast(一種提醒方式,在程式中可以使用它將一些短小的消息通知給用戶,這些信息會在一段時間後自動消失)
首先需要定義一個彈出Toast的觸發點,正好界面上有個按鈕,我們就讓點擊這個按鈕的時候彈出一個Toast。
1 protected void onCreate(Bundle savedInstanceState){
2 super.onCreate(savedInstanceState);
3 setContentView(R.layout.first_layout);
4
5 Button button1=(Button)findViewById(R.id.button); //findViewById()方法獲取到在佈局文件中定義的元素
6 button1.setOnClickListener(new View.OnClickListener(){ //調用setOnClickListener()為按鈕註冊一個監聽器
7 @Override
8 public void onClick(View v){
9 Toast.makeText(MainActivity.this,"You clicked Button",
10 Toast.LENGTH_SHORT).show();
11 }
12 });
13 }
Toast用法:通過靜態makeText()創建一個Toast對象,然後調用show()將Toast顯示出來。makeText()方法需要傳入3個參數。第一個參數是Context,也就是Toast要
求的上下文。第二個參數是Toast顯示的文本內容。第三個參數是Toast顯示的時長。
5、在活動中使用Menu(展示菜單的同時不占用任何屏幕空間)
首先在res目錄下新建一個Menu文件夾,右擊res目錄->New->Directory,輸入文件夾名menu,點擊OK。然後在這個文件夾下再新建一個名叫main的菜單文件,右擊menu
文件夾->New->Menu resource file。文件名輸入main,點擊OK。然後在main.xml中添加如下代碼:
1 <?xml version="1.0" encoding="utf-8"?>
2 <menu xmlns:android="http://schemas.android.com/apk/res/android">
3
4 <item //<item>標簽用來創建具體的某一個菜單項
5 android:id="@+id/add_item" //菜單標識符
6 android:title="Add"/> //菜單名稱
7 <item
8 android:id="@+id/remove_item"
9 android:title="Remove"/>
10 </menu>
接著重回MainActivity中重寫OnCreateOptionMenu()方法(重寫方法可以使用Ctrl+O快捷鍵)
然後在OnCreateOptionMenu()方法中編寫如下代碼:
1 public boolean onCreateOptionsMenu(Menu menu) {
2 getMenuInflater().inflate(R.menu.main,menu); //給當前活動創建菜單
3 return true;
4 }
inflate()方法接收兩個參數,第一個參數用於指定通過哪個資源文件來創建菜單。第二個參數用於指定菜單項將添加到哪一個Menu對象中。
定義菜單響應事件,在MainActivity中重寫onOptionItemSelected()方法:
1 public boolean onOptionsItemSelected(MenuItem item) {
2 switch (item.getItemId()) { //通過調用item.getItemId()判斷點擊的哪個菜單項
3 case R.id.add_item:
4 Toast.makeText(this, "You clicked Add", Toast.LENGTH_SHORT).show();
5 break;
6 case R.id.remove_item:
7 Toast.makeText(this, "You clicked Remove", Toast.LENGTH_SHORT).show();
8 break;
9 default:
10 }
11 return true;
12 }
帶菜單按鈕的活動 彈出菜單項的界面