2.1 活動是什麼?
活動(Activity),包括用戶界面的組件,主要用於跟用戶交互。個人理解,就是展示給用戶看的東西。一個程序可以有零個或多個活動(正常展示給用戶的app至少有一個活動)。
2.2 Android Studio創建活動
-
創建活動在app/scr/main/java下面的包下,->New->Activity->Empty Activity,會彈出創建活動。我們命名爲FirstActivity,注意不要勾選Generate Layout File與Launcher Activity。rate...表示會自動給我們FirstActivity創建一個佈局文件,Launcher Activity會自動將當前活動(FirstActicity)設置爲主活動。因爲我們現在要體驗文件之間關係,因此這些自動創建的就不要勾選。然後點擊finish。這裏,需要知道的一點是:項目的任何活動都需要重寫OnCreate方法。Studio已經幫我們完成了:
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.first_layout); }
-
創建佈局
在app/src/main/res目錄->New -> Directory,創建一個目錄,取名layout。然後對着layout ->Layout resource file,彈出對話框中,將佈局文件命名爲first_layout,根元素默認選擇LinearLayout,點擊OK。
在佈局中添加一個Button:
<?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"> <Button android:id="@+id/button_1" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Button_1" /> </LinearLayout>
其中,Button代表我們添加的是一個Button按鈕。android:id是給這個控件指定一個唯一的標識符,之後可以在代碼對這個元素進行操作。後面android:layout_width指定了button的寬度,match_parent說與父元素一樣寬,android:layout_height指定了button高度,wrap_content則代表剛好能展示裏面文字的高度。text則爲button按鈕顯示的文字。 -
活動中加載這個佈局
接下來,需要在活動中(FirstActivity)加載這個佈局:
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.first_layout); }
可見,只需要setContentView()方法,則可以完成。項目的任何資源文件都會在R文件中生成一個對應資源的id,因此只需要調用R.id.first_layout就可以得到佈局的id,然後傳入setContentView方法中。 -
在AndroidManifest中註冊
fffffff
<application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".FirstActivity" android:label="This is my first APP"> <intent-filter> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity> </application>
其實,studio已經幫我們註冊過了,我在裏面又按照自己情況添加了一點代碼:
首先,設爲主活動的代碼(即告訴軟件,啓動這個項目的時候,那個活動是第一個加載的活動),<intent-filter/>中的代碼完成這個功能。
l另外,label的功能是,顯示這個頁面的時候,標題欄的內容,個人認爲類似與瀏覽器的標籤欄。
至此,我們已經完成一個最簡單的安卓項目了,啓動運行看一下吧。
2.3 活動中使用Toast
這個比較簡單,當然也比較實用。
首先介紹一下Toast。這是安卓系統中比較好的一種提醒方式,在系統中,以短小的信息通知給用戶,而且過段時間就會消失,不佔用屏幕資源。個人感覺比較使用,比如我們可以借用這個來判斷點擊某個按鈕是否有效果,是否返回了資源等等。
用法也比較簡單,類似與java的System.out.println()一樣,我們在需要顯示的地方敲入代碼,例如:
String resultData = data.getStringExtra("data");
Toast.makeText(FirstActivity.this, resultData, Toast.LENGTH_SHORT).show();
主要是第二行,通過makeText靜態方法創建出一個Toast對象,然後調用show方法顯示出來就可以了。
makeText需要三個參數:第一個參數是Context,上下文,活動本身就是一個上下文,因此這裏我直接傳入FirstActivity.this。第二個參數是Toast要顯示的內容。第三個參數是顯示時長,有幾個內置常量可以選擇:Toast.LENGTH_SHORT和Toast.LENGTH_LONG。
運行結果就不粘了。
2.4 使用Menu菜單
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/add_item"
android:title="add"
/>
<item
android:id="@+id/remove_item"
android:title="remove"
/>
</menu>
安卓中,菜單項可以用<item>標籤創建,然後id中指定一個id,通過text設置這個選項的內容。 @Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
getMenuInflate方法可以得到MenuInfalte對象,然後調用inflate就可以創建菜單了。這裏需要傳入兩個參數:第一個參數是告訴系統,需要通過那個資源文件夾來創建菜單;第二個參數是指定我們的菜單項添加到哪一個Menu對象當中,這裏我們使用方法中傳入的參數menu。然後讓方法返回true,表示創建的菜單顯示出來,如果返回false則不會顯示出來了。 @Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.add_item:
Toast.makeText(this, "Add", Toast.LENGTH_SHORT).show();
break;
case R.id.remove_item:
Toast.makeText(FirstActivity.this, "Remove", Toast.LENGTH_SHORT).show();
break;
default:
}
return true;
}
代碼比較簡單,通過抵用item.getItemId()方法判斷我們點擊的是哪個菜單,然後做出相應的動作。這裏我用了之前的Toast。