Android學習筆記——基礎入門

来源:https://www.cnblogs.com/xiaobaiLX/archive/2022/07/24/16514592.html
-Advertisement-
Play Games

Android 入門 Gradle 安裝配置 Linux下安裝gradle 構建文件和創建任務 預設構建文件為 build.gradle, 構建是可使用 -b 替代 --build gradle -b <fileName> .gradle 文件夾存放的是 Gradle 的構建信息 Gradle 採用 ...


Android 入門

Gradle

安裝配置

Linux下安裝gradle

構建文件和創建任務

  1. 預設構建文件為 build.gradle, 構建是可使用 -b 替代 --build
gradle -b <fileName>
  1. .gradle 文件夾存放的是 Gradle 的構建信息

  2. Gradle 採用領域對象模型,每個Project 維護一個TaskContain 類的task 屬性,Taskl代表需要執行的任務,允許指定依賴的任務、任務類型,可通過configure()方法配置任務,提供了doFirst()doLast() 方法來添加ActionActionClosure對象都可代表Closure對象都可以是Action

  3. Gradle構建文件創建Task的常用方法

    1. 調用 project.task()
    2. 調用 TaskContainer.crate()

    無論使用哪種方式創建Task,通常都可為 Task指定以下3種屬性:

    1. dependsOn:指定Task所依賴的其它Task

    2. type:指定該Task的類型

    3. 通過傳入的代碼塊參數配置

  4. Gradle構建過程

    1. 配置階段
    2. 按依賴關係執行指定Task
  5. Gradle編譯過程

//應用名為java的插件,主要是為了引入JavaCompile、JavaExec兩個任務
apply plugin: 'java'
task compile(type:javaCompile){
    source = filetree('src/main/java')
    classpath = sourceSets.main.compileClassPath
    destinationDir = file('build/classes/main')
    options.fork = true
    options.incremental = true
}
//指定任務類型為JavaExec
task run(type:JavaExec,dependsOn:'compile'){
    classPath = sourceSets.main.runtimeClassPath
    //指定主類為lee.HelloWorld
    main = 'lee.HelloWorld'
}

編譯運行

gradle run

Gradle的屬性定義

1. 為屬性指定屬性值

//為Project內置屬性指定屬性值
version = 1.0.0
task showProps{
	description = 'task'
}

Project 常用的屬性

  1. name:項目名稱
  2. path:項目絕對路徑
  3. description:項目描述路徑
  4. buildDir:項目的構建結果的存放路徑
  5. version: 項目版本號

2. 通過 ext 添加屬性

//使用ext方法傳入代碼來設置屬性
ext{
	prop1 = 'prop1'
	prop2 = 'prop2'
}
task showAddPros{
	ext{
		prop3 = 'prop3'
		prop4 = 'prop4'
	}
}

3. 通過-P選項添加屬性

gradle -P prop='prop-value' <task-name>

4. 通過JVM參數添加屬性

gradle -D org.gradle.project.prop= 'prop-value' <task-name>

增量式構建

Gradle通過任務的輸入、輸出部分是否發生改變來判斷該任務是否需要重新執行,Task使用TaskInputs類型inputs屬性來代表輸入,使用TaskOutputs類型outPuts屬性來代表輸出。

task fileContentCopy{
	//定義代表source目錄的文件集
	def sourceTxt = fileTree("source")
	def dest = file('dest.txt')
	//定義任務的輸入和輸出
	inputs.dir sourceTxt	//指定輸出目錄為sourceTxt
	outputs.file dest		//指定輸出目錄為dest
}

Gradle 插件機制

應用插件相當於引入了該插件包含的所有任務類型、任務、屬性等,這樣Gradle就可以執行插件種預定義的任務。

apply plugin: <plugin-name>
#查看構建文件支持的所有任務
apply tasks --all

通過resource項目添加第三方或額外的依賴源碼

//配置被依賴的源代碼路徑
sourceSets{
	fkframework
}

Gradle自動為為每個新建的sourceSets創建相應的Task,包括compilexxxJavaprocessxxxResourcexxxClasses這三個Task

//配置compileJava任務依賴compilexxxJava任務
compileJava.dependsOn compilexxxJava
//將第三方項目位元組碼的存儲路徑添加到系統編譯時、運行時的類路徑中
sourceSets{
    main{
        compileClassPath = compileClassPath + files(xxx.output.classesDir)
    }
    test{
        //將xxx生成的位元組碼文件的存儲路徑添加到運行時的類路徑中
        runtimeClassPath = runtimeClassPath + files(xxx.output.classDir)
    }
}

依賴管理

Gradle 配置依賴步驟:

  1. Gradle配置倉庫
//定義倉庫
reposities{
	//使用Maven預設的中央倉庫
	mavenCentral()
	//使用遠程倉庫
	url "http://repo2.maven.org/maven2"
	//顯示指定本地磁碟路徑作為maven倉庫url
	url "g:/abc"
}
  1. 為不同組配置依賴的jar
//使用configurations配置組
configrations{
    //配置名為xxx的依賴組
    xxx
}
dependencies {
    //配置依賴的jar包
    //為xxx依賴組添加了commons-logging 1.2的jar包
    xxx group: 'commons-logging',name:'commons-logging',version:'1.2'
    //簡寫
    xxx 'commons-logging:commons-logging:1.2'
}

ADB

常用命令:

 #查看當前運行的模擬器
 abd devices
 #電腦與手機之間文件的相互複製
 abd push <file-path> <targer-path>
 #啟動模擬器的shell視窗
 adb shell
 #安裝、卸載APK程式
 adb install [-r] [-s] <file>
 #卸載APK程式
 adb uninstatll [-k] <file>

開發Android應用

開發流程

  1. 創建項目
  2. 編寫佈局文件
  3. 編寫java邏輯代碼

項目結構

AndroidMainfest.xml 文件主要內容:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="com.topwisesz.helloworldapp">
    
    <application
        android:allowBackup="true"
        android:dataExtractionRules="@xml/data_extraction_rules"
        android:fullBackupContent="@xml/backup_rules"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/Theme.HelloWorldApp"
        tools:targetApi="31">
        <!--定義一個Android應用的一個組件-->
        <activity android:name=".MainActivity"
            android:exported="true">
            <intent-filter>
                <!--制定該Activity是程式入口-->
                <action android:name="android.intent.action.MAIN" />
                <!--制定運行時載入該應用時運行該Activity-->
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

Android基本組件

常用組件:VIew、Activity、Service、BroadcastReceiver、ContentProvider、Intent、IntentFilter

四大組件:Activity、Service、BroadcastReceiver、ContentProvider

View和Activity

View是所有UI控制項的基類,Activity用於顯示View

//創建一個線性佈局管理器
LinearLayout linearLayout = new LinearLayout(this);
//設置該Activity顯示線性佈局
setContentView(linearLayout);
//設置該Activity顯示在main.xml定義的view
setContentView(R.layout.main);

BroadcastReceiver

BroadcastReceiver類似於一個全局監聽器,用於接受廣播消息

使用BroadcastReceiver接受消息步驟:

  1. 繼承BroadcastReceiver重寫OnReceive()方法
public class DefineBroadcastReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        System.out.println("接受消息");
    }
}
  1. 發送廣播消息
sendBroadcast();
sendstickBroadcast();
sendOrderedcast();
  1. 通過Intentfilter配置BroadcastReceiver需接受的消息
  2. 註冊BroadcastReceiver
    • 通過代碼Context.registReceiver()方法註冊BroadcastReciver
    • AndroidMainfest.xml文件中使用<receiver.../>元素完成註冊

ContentProvider

ContentProvider 可以實現不同應用之間的數據交換

//插入數據
insert(url,contentValues)
//刪除指定數據
delete(url,contentValues)
//更新指定數據
update(url,contentValues,String,String[])
//查詢數據
query(url,String[],String,String[],String)

Intent和IntentFilter

Intent作為Android應用內不同之間通信的載體,ActivityServiceBroadcastReceiver三種組件都是以Intent作為通信主題;

//啟動Activity
context.startActivity(Intent intent);
context.startActivityForResult(Intent intent, int requestCode);
//啟動Service
context.startService(Intent intent);
bindService(Intent service,ServiceConnection conn,int flags);
//啟動BroadcastReceiver
sendBroadcast(Intent intent);
sendStickyBroadcast(Intent intent);
  • 顯式Intent:明確指定需要啟動或觸發的組件應滿足的類名
  • 隱式Intent:只是指定需要啟動或觸發的組件應滿足的條件

IntentFilter用於聲明Intent所滿足的條件。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 喜歡收集和整理數字音樂的朋友們快來看啦!今天為大家帶來的是數字音樂收藏庫:Bliss mac版,這是一款專業組織數字音樂軟體,Elsten Software Bliss中文版下載評估您的音樂收藏是否符合您配置的規則,然後它修複問題或要求您確認修複。專輯圖稿自動下載,整理。Bliss mac版是一個簡 ...
  • HE琥珀虛顏破解自由安裝程式教程(001) 前言 自從狗尾草跑路後,HE琥珀就沒法用了,當前APP還沒法破解,但是筆者找到了HE琥珀存在的一些漏洞,可以實現安裝自己的APP。 所需工具 | 所需工具 | | | | : | | 1. | OTG線 | | 2. | 鍵鼠 | | 3. | 電腦等智能 ...
  • 4K TokKit是一款跨平臺的桌面應用程式,用於大規模TikTok視頻下載。它使您能夠備份TikTok帳戶,保存來自其他TikTok配置文件和哈希標記的視頻。此應用程式非常適合那些想要創建最喜愛的短片段的數字畫廊、一次抓取多個TikTok視頻以及自動從各種TikTok創建者和主題下載新內容的人。 ...
  • Httpd 1.httpd簡介 httpd是Apache超文本傳輸協議(HTTP)伺服器的主程式。被設計為一個獨立運行的後臺進程,它會建立一個處理請求的子進程或線程的池。 通常,httpd不應該被直接調用,而應該在類Unix系統中由apachectl調用,在Windows中作為服務運行。 2.htt ...
  • MySQL實戰45講 12 為什麼我的MySQL會“抖”一下? 你的 SQL 語句為什麼變“慢”了 什麼情況會引發資料庫的 flush 過程 InnoDB 刷臟頁的控制策略 ...
  • 聚合函數 聚合函數是對一組數據進行彙總輸出的函數。 輸入:一組數據集合 輸出:單個值 舉例:返回一組數據的最大值、平均數、最小、方差等操作。 常見函數舉例: 1,AVG函數:返回一組數據的平均值 2,SUM函數:返回一組數據的總和 3,MAX、MIN函數:返回一組數據的最大、最小值 4,COUNT函 ...
  • 分享嘉賓:劉冰冰 亞馬遜雲科技 編輯整理:張了了 聚水潭 出品平臺:DataFunTalk **導讀:**資料庫經過了幾十年的發展,目前已經是一項非常成熟的技術,然而隨著當今互聯網的極速增長,我們進入到雲時代,企業亟需構建現代化的應用,因此資料庫有了更大的挑戰。今天結合當前時代的發展和趨勢,分享未來 ...
  • 1.初識資料庫 資料庫(DB,database) 概念:數據倉庫,安裝在操作系統上的一款軟體 作用:存儲管理數據 分類: 關係型資料庫(SQL): MySQL,Oracle,Sql Server,DB2,SQLlite 通過表和表之間,行和列之間的關係進行數據的存儲 非關係型資料庫(NoSQL no ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...