工程項目結構
- java:寫Java代碼的地方,業務功能都在這裏實現
- res:存放各種資源文件的地方,有圖片,字符串,動畫,音頻等,還有各種形式的XML文件
res目錄下所有的資源文件都會在R.java文件下生成對應的資源id(文件名),可通過id直接資源,即R.xx這樣的方式
res下主要包括:
drawable:存放各種位圖文件,(.png,.jpg,.9png,.gif等)除此之外可能是一些其他的drawable類型的XML文件
mipmap:存放各種位圖文件,(.png,.jpg,.9png,.gif等),使用mipmap會在圖片縮放在提供一定的性能優化,分辨率不同系統會根據屏幕分辨率來選擇hdpi,mdpi,xmdpi,xxhdpi下的對應圖片
layout:該目錄下存放各種佈局文件
values目錄:
- demens.xml:定義尺寸資源
- string.xml:定義字符串資源
- styles.xml:定義樣式資源
- colors.xml:定義顏色資源
- arrays.xml:定義數組資源
- attrs.xml:自定義控件時用的較多,自定義控件的屬性!
- theme主題文件,和styles很相似,但是會對整個應用中的Actvitiy或指定Activity起作用,一般是改變窗口外觀的!可在Java代碼中通過setTheme使用,或者在Androidmanifest.xml中爲<application...>添加theme的屬性!
res資源使用
在java下可通過R.xx.xx這樣的方式使用,R可看做res,下面的文件可看做包,例:
txtName.setText(getResources().getText(R.string.name));
imgIcon.setBackgroundDrawableResource(R.drawable.icon);
txtName.setTextColor(getResouces().getColor(R.color.red));
在xml文件下可通過@xxx/xx這樣的方式使用,相當於引用,例:
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
app主配置文件AndroidManifest.xml
(來源:https://www.runoob.com/w3cnote/android-tutorial-project-src-analysis.html)
Activity跳轉及消息傳遞
在java目錄下對應的package建立一個新的Activity(右鍵-->New-->Activity),名爲DisplayMessageActivity
Android Studio 會自動執行三項操作:
- 創建
DisplayMessageActivity
文件。- 創建對應的
activity_display_message.xml
佈局文件。- 在
AndroidManifest.xml
中添加必需的<activity>
元素。
在xml下選擇Design,拖一個TextView上去用於顯示信息
在主(Main)Activity下寫對應的按鈕(button)的事件響應方法,然後可以通過Design時選擇Button組件的Attribute選擇onClick()屬性設置對應的方法,組件是最基本的顯示控制單元,可由id唯一標識,無論其位於哪一個Activity中,都可以通過R.id.xx進行獲取
public class MyFirstActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void sendMessage(View view){
Intent intent=new Intent(this,DisplayMessageActivity.class);//意圖,將兩個Activity進行綁定,用於Activity間的消息傳遞
EditText editText=(EditText)findViewById(R.id.editText);//獲取某個組件
intent.putExtra("message",editText.getText().toString());//參數爲name,value,即key-value,跳轉後的Activity可通過key獲取value
startActivity(intent);//通過意圖intent跳轉到綁定的Activity上並附加傳遞消息
}
}
sendMessage()就相當於自定義事件,在對應的xml下選擇組件通過配置屬性onClick()進行響應,Activity之間傳遞消息及跳轉可通過Intent,intent初始時就綁定兩個Activity,通過putExtra(name,value)方法存儲信息,通過getStringExtra("name")方法獲取value。這樣很好的實現了控制與顯示的分離
另一個Activity--DisplayMessageActivity
package com.example.myfirstapp;
import android.content.Intent;
import android.os.Bundle;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
public class DisplayMessageActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_display_message);
/*獲取意圖Intent,獲取信息*/
Intent intent=getIntent();
TextView textView=findViewById(R.id.textView);
textView.setText(intent.getStringExtra("message"));
}
}
加載佈局--view
內部通過Intent獲取信息並實時顯示--control
運行效果爲:
Activity之間添加向上導航功能
向上導航即可Activity間互相返回,在主配置文件下配置Activity的parentActivity即可
<activity android:name=".DisplayMessageActivity"
android:parentActivityName=".MyFirstActivity">
<!-- The meta-data tag is required if you support API level 15 and lower -->
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".MyFirstActivity" />
參考:
https://developer.android.com/training/basics/firstapp/starting-activity#java
https://www.runoob.com/w3cnote/android-tutorial-project-src-analysis.html