Android基礎(2)-工程項目結構、Activity跳轉及消息傳遞

工程項目結構

  • 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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章