Android新手入門1
文章目錄
前言
本人從零開始學習安卓開發,在b站上看up主視訊,可搜尋“卓越工作室”,2020年安卓(Android)最新基礎知識詳解,一起學習!相關原始碼可見本人釋出的資源
開發文件
一、建立安卓專案
1.目錄結構
推薦使用Android APP 專案檢視
AndroidManifest.xml是專案全域性配置、註冊檔案
MainActivity是一個頁面,也是主頁面,並不是單一一個java檔案,而是由許多配置檔案組成的
activity_main.xml是MainActivity的佈局配置檔案,二者一一對應
二、Activity活動基本用法
1.建立活動
(有MainActivity可跳過此步,僅理解即可)在新建頁面activity時,使用模板建立,如下圖:
活動建立後,會在res->layout資料夾下生成佈局檔案,AndroidManifest.xml中也會生成對應配置語句
2.建立和載入佈局
在初始的新建專案中,有hello world的文字,可以作為參考。
在activity_main.xml中新新增Button元件,程式碼如下:
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<Button
android:id="@+id/button1"
android:text="Button1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
tools:ignore="MissingConstraints" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
敲出Button時會有自動補全,完善layout佈局屬性,其他屬性自行新增,id要求以“@+id/”形式編寫,text內容自定義,tools:ignore是忽略其佈局限制的語句,可不新增。
3.在AndroidManifest.xml註冊
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.androidstudy.myapplication">
<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=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
activity標籤為頁面註冊功能,intent-filter標籤內通常含有action和category標籤
- action中name屬性只能有唯一的MAIN作為主入口,在其他activity中可自定義
- category中name屬性為LAUNCHER,作為第一個開啟的頁面,其他頁面用DEFAULT
(目前理解如上,如有錯誤,還請指出,謝謝)
4.在活動中使用Toast
第二步中已經新增了按鈕的配置檔案,現在在activity中進行初始化,並且新增點選監聽。
package com.androidstudy.myapplication;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
//定義頁面中按鈕
private Button button1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
}
public void initView(){
//通過R類id找到配置中的按鈕
button1 = findViewById(R.id.button1);
//設定點選監聽器,用匿名內部類直接重寫
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(MainActivity.this, "SHOW ME", Toast.LENGTH_SHORT).show();
}
});
}
}
Toast類中,makeText函式可以顯示如上圖提示資訊,第二個引數為內容,第三個引數為資訊的顯示時間長度,可自行更改;
上午中Button按鈕的文字全是大寫,是由於頁面設定的問題。可通過如下方式解決:
- 開啟AndroidManifest.xml,按住ctrl,點選AppTheme,進入style.xml,進行設定。
- 在檔案中新增style標籤下新增
<item name="android:textAllCaps">false</item>
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="android:textAllCaps">false</item>
</style>
</resources>
重新執行即可。
5.在活動中使用Menu
這裡的Menu是指如下圖所示效果:
- 建立menu資料夾,且名字只能為menu
- 右鍵點選資料夾,新建menu.xml配置檔案,命名為menu,點選OK即可
3.新增item
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/add"
android:title="Add" />
<item
android:id="@+id/remove"
android:title="Remove" />
</menu>
4.在MainActivity中進行初始化,有專門的初始化onCreateOptionsMenu方法,以及點選時onOptionsItemSelected方法。
此處設定為點選時顯示Toast提示。
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu,menu);
return true;
}
@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()){
case R.id.add:
Toast.makeText(MainActivity.this, "Add",Toast.LENGTH_LONG).show();
break;
case R.id.remove:
Toast.makeText(MainActivity.this, "Remove",Toast.LENGTH_SHORT).show();
break;
}
return true;
}
這樣便可以了。
6.使用intent
Intent類可以完成頁面跳轉以及資料傳遞等功能,下面一一舉例說明。
頁面建立
- 新建頁面SecondActivity,新增按鈕Button2,操作方式如第一步所述。
兩個都勾選,然後點選finish。 - 修改AndroidManifest.xml,更改SecondActivity的Action和Category如下,name可以自定義,但不可以重複
<activity android:name=".SecondActivity">
<intent-filter>
<action android:name="com.androidstudy.myapplication.SEC_ACTION" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
頁面跳轉
- 顯式intent,在Button1的監聽器中新增Intent,完成兩個頁面的跳轉
public void initView(){
//通過R類id找到配置中的按鈕
button1 = findViewById(R.id.button1);
//設定點選監聽器,用匿名內部類直接重寫
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(MainActivity.this, "SHOW ME", Toast.LENGTH_SHORT).show();
//顯式Intent
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
startActivity(intent);
}
});
}
- 隱式intent,不指明特定Class
//隱式Intent
Intent intent = new Intent("com.androidstudy.myapplication.SEC_ACTION");
startActivity(intent);
活動之間資料傳遞
1. Main-資訊傳遞->Second
點選Main中Button1,跳轉到Second併傳送訊息。
- Main傳送方,在button按鈕的監聽器中
Intent intent = new Intent("com.androidstudy.myapplication.SEC_ACTION");
intent.putExtra("Data","Main to Second");
startActivity(intent);
- Second接收方
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
initView();
//接收Intent
Intent intent = getIntent();
String data = intent.getStringExtra("Data");
//日誌輸出
Log.d("Sec",data);
}
2. Main-跳轉->Second-資訊傳遞->Main
點選Main中Button1,跳轉到Second,點選Second中Button2,傳送訊息,關閉Second,Main接收訊息。
- Main接收方
public void initView(){
//通過R類id找到配置中的按鈕
button1 = findViewById(R.id.button1);
//設定點選監聽器,用匿名內部類直接重寫
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(MainActivity.this, "SHOW ME", Toast.LENGTH_SHORT).show();
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
//接收資訊 請求碼 識別請求和響應
startActivityForResult(intent,1);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
switch (requestCode){
case 1 :
if(resultCode == RESULT_OK){
String dataResult = data.getStringExtra("data_return");
Log.d("MainActivity",dataResult);
}
break;
}
}
- Second傳送方
public void initView(){
button2 = findViewById(R.id.button2);
button2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent();
intent.putExtra("data_return","Hello Main");
setResult(RESULT_OK, intent);
finish();//關閉視窗
}
});
}
總結
簡單學習了Android,感覺不太陌生了。下次會有新的學習內容。如果以上有哪裡值得討論或者有問題,都可以留言。希望與大家共同進步!
相關文章
- ACM入門之新手入門ACM
- **Git新手入門**Git
- Markdown新手入門
- Elance新手入門
- typer 新手入門
- 新手入門,webpack入門詳細教程Web
- linux新手入門――shell入門(轉)Linux
- Jmeter新手入門必看JMeter
- MongoDB 新手入門 - CRUDMongoDB
- React新手入門 教程React
- Vuex新手入門指南Vue
- Jwt的新手入門教程JWT
- Windows Terminal 新手入門Windows
- mysql新手入門隨筆MySql
- WebSphere 和 SOA 新手入門Web
- SOA and Web Services 新手入門Web
- 新手入門-LINUX(轉)Linux
- 新手入門 Git 開發Git
- 【Android】1:Android APP開發入門篇AndroidAPP
- 遊戲開發新手入門之DirectX入門(轉)遊戲開發
- Golang 新手教程:入門速成指南Golang
- web前端新手入門建議Web前端
- JavaScript新手入門學習系列JavaScript
- MongoDB 新手入門 - AggregationMongoDB
- Apache Kafka教程--Kafka新手入門ApacheKafka
- Django新手圖文入門教程Django
- Mac新手的入門教程(一)Mac
- mysql新手入門隨筆2MySql
- mysql新手入門隨筆4MySql
- JSON.parse 新手入門JSON
- Vue.js新手入門指南Vue.js
- 新手入門,如何快速理解JavaScriptJavaScript
- 樹莓派新手入門教程樹莓派
- 機器學習:新手入門概覽(一)機器學習
- HTML5新手入門指南HTML
- 九陰真經新手必看1-30級入門攻略 九陰真經新手攻略
- PHP 之 Composer 新手入門指南PHP
- 新手請教,遊戲入門程式 c遊戲