您好,我是碼農(nóng)飛哥,感謝您閱讀本文,歡迎一鍵三連哦。 本文會(huì)重點(diǎn)介紹如何創(chuàng)建第一個(gè)Android應(yīng)用,以及如何使用Android Studio進(jìn)行調(diào)試
干貨滿滿,建議收藏,需要用到時(shí)常看看。小伙伴們?nèi)缬袉?wèn)題及需要,歡迎踴躍留言哦~ ~ ~。
前言
上一篇文章我們介紹了Android Studio的安裝以及Android SDK的目錄結(jié)構(gòu)。這篇文章將介紹如何使用Android Studio創(chuàng)建第一個(gè)Android應(yīng)用,重點(diǎn)介紹Android Studio的目錄結(jié)構(gòu)。
創(chuàng)建第一個(gè)Android應(yīng)用
首先,讓我們來(lái)創(chuàng)建第一個(gè)Android應(yīng)用。在歡迎頁(yè)面點(diǎn)擊New Project按鈕。進(jìn)入下一個(gè)界面之后選中Basic Activity 按鈕,創(chuàng)建一個(gè)基本視圖的Android應(yīng)用。
接著進(jìn)入下一個(gè)界面,在這個(gè)界面中可以填寫(xiě)項(xiàng)目名,包名等等。這里我新建了一個(gè)名為HelloWorld項(xiàng)目。
設(shè)置完成之后點(diǎn)擊Finish 按鈕。即可完成第一個(gè)Android項(xiàng)目的創(chuàng)建。應(yīng)用加載完成之后項(xiàng)目HelloWorld的目錄結(jié)構(gòu)如下圖所示:
程序加載沒(méi)問(wèn)題之后,就可以設(shè)置一個(gè)模擬器,操作步驟如下圖所示,這里我設(shè)置了Nexus S API 30和Pixel2 API 30 兩個(gè)模擬器,每個(gè)模擬的尺寸都不相同。
設(shè)置好模擬器之后,如果只需要運(yùn)行項(xiàng)目的話則點(diǎn)擊下圖左邊的按鈕,如果要對(duì)代碼進(jìn)行調(diào)試(debug模式)的話則需要點(diǎn)擊下圖右邊的按鈕。
運(yùn)行結(jié)果如下圖所示:
Android應(yīng)用的目錄結(jié)構(gòu)
說(shuō)完了Android應(yīng)用程序的創(chuàng)建之后,接下來(lái)就來(lái)看下這個(gè)HelloWold 應(yīng)用程序的目錄結(jié)構(gòu)吧。如果Project窗口沒(méi)有出現(xiàn),則依次選擇 View->Tool Windows->Project。選擇好窗口之后,從該窗口的下拉列表中選擇Android視圖。然后,你就能看到如下文件。
- app-> java->com.jay.helloworld->MainActivity這是主Activity。它是應(yīng)用的入口,當(dāng)您構(gòu)建和運(yùn)行應(yīng)用時(shí),系統(tǒng)會(huì)啟動(dòng)此Activity的實(shí)例并加載其布局,
public class MainActivity extends AppCompatActivity {
private AppBarConfiguration appBarConfiguration;private ActivityMainBinding binding;@Overrideprotected void onCreate(Bundle savedInstanceState) {
// 調(diào)用父類(lèi)的onCreate方法 super.onCreate(savedInstanceState);
binding = ActivityMainBinding.inflate(getLayoutInflater());
// 調(diào)用setContentView方法顯示視圖界面 setContentView(binding.getRoot());// 設(shè)置對(duì)工具欄ToolBar的支持 setSupportActionBar(binding.toolbar);
NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment_content_main); appBarConfiguration = new AppBarConfiguration.Builder(navController.getGraph()).build(); NavigationUI.setupActionBarWithNavController(this, navController, appBarConfiguration);
// 點(diǎn)擊事件 binding.fab.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG) .setAction("Action", null).show(); } }); } ·······省略部分代碼 }
MainActivity 繼承于AppCompatActivity,并重寫(xiě)了onCreate方法,AppCompatActivity類(lèi)是Android Studio中默認(rèn)的構(gòu)建自定義Activity的模板類(lèi)。這里其實(shí)還涉及到FirstFragment和SecondFragment兩個(gè)Fragment。它們兩個(gè)是用來(lái)控制圖7中的點(diǎn)擊按鈕的。4. **app->res->layout->activity_main.xml** 此XML文件定義了activity界面(UI)的布局,整體布局都是采用CoordinatorLayout布局,這個(gè)布局是support v7系統(tǒng)新增的布局,具有便于協(xié)調(diào)子布局的特點(diǎn),該布局是增強(qiáng)版的FrameLayout布局,它通常與ToolBar和FloatingActionButton合用。```xml<?xml version="1.0" encoding="utf-8"?><androidx.coordinatorlayout.widget.CoordinatorLayout 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"> <com.google.android.material.appbar.AppBarLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:theme="@style/Theme.HelloWorld.AppBarOverlay"> <androidx.appcompat.widget.Toolbar android:id="@ id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="?attr/colorPrimary" app:popupTheme="@style/Theme.HelloWorld.PopupOverlay" /> </com.google.android.material.appbar.AppBarLayout> <include layout="@layout/content_main" /> <com.google.android.material.floatingactionbutton.FloatingActionButton android:id="@ id/fab" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="bottom|end" android:layout_marginEnd="@dimen/fab_margin" android:layout_marginBottom="16dp" app:srcCompat="@android:drawable/ic_dialog_email" /></androidx.coordinatorlayout.widget.CoordinatorLayout>
其中ToolBar是圖7中顯示HelloWorld的藍(lán)色工具欄,具有承載系統(tǒng)菜單的功能。FloatingActionButton是圖7中右下側(cè)的郵箱圖標(biāo)的按鈕。<include layout="@layout/content_main" />
這行代碼將content_main.xml 的布局嵌入activity_main布局中。content_main.xml的代碼為:
<?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" android:layout_width="match_parent" android:layout_height="match_parent" app:layout_behavior="@string/appbar_scrolling_view_behavior"> <fragment android:id="@ id/nav_host_fragment_content_main" android:name="androidx.navigation.fragment.NavHostFragment" android:layout_width="0dp" android:layout_height="0dp" app:defaultNavHost="true" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent" app:navGraph="@navigation/nav_graph" /></androidx.constraintlayout.widget.ConstraintLayout>
- app->manifests->AndroidMainifest.xml 清單文件描述了應(yīng)用的基本特性并定義了每個(gè)應(yīng)用組件,是整個(gè)項(xiàng)目的配置資源,里面配置的內(nèi)容包括當(dāng)前應(yīng)用程序所在的包,應(yīng)用程序中的Activity,應(yīng)用程序的訪問(wèn)權(quán)限等等。
- Gradle Scripts -> build.gradle這里是gradle構(gòu)建項(xiàng)目的文件,一個(gè)針對(duì)項(xiàng)目Project:HelloWorld,一個(gè)針對(duì)應(yīng)用模塊Project:HelloWorld.app。每個(gè)模塊均有自己的build.gradle文件。但此項(xiàng)目當(dāng)前僅有一個(gè)模塊,所以只有一個(gè)針對(duì)應(yīng)用模塊。
Android Studio的調(diào)試
學(xué)會(huì)用Android Studio進(jìn)行代碼調(diào)試是開(kāi)發(fā)者的一項(xiàng)必備技能。
設(shè)置斷點(diǎn)
雙擊需要添加斷點(diǎn)的代碼行的左側(cè)。出現(xiàn)如下紅點(diǎn)說(shuō)明斷點(diǎn)設(shè)置成功。
調(diào)試
斷點(diǎn)設(shè)置好之后,還需要在調(diào)試模式下運(yùn)行,才能是斷點(diǎn)生效。點(diǎn)擊下圖的小烏龜進(jìn)入調(diào)試模式。
運(yùn)行之后可以看到Debugger和Console兩個(gè)tab頁(yè)面,Debugger頁(yè)面主要是用來(lái)記錄方法的調(diào)用棧以及查看運(yùn)行時(shí)的變量的值。Console則是控制臺(tái)。
總結(jié)
本文首先詳細(xì)介紹了如何創(chuàng)建第一個(gè)Android應(yīng)用程序,接著介紹了如何用Android Studio進(jìn)行調(diào)試。
我是碼農(nóng)飛哥,再次感謝您讀完本文。
全網(wǎng)同名【碼農(nóng)飛哥】。不積跬步,無(wú)以至千里,享受分享的快樂(lè) 我是碼農(nóng)飛哥,再次感謝您讀完本文。
版權(quán)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶(hù)自發(fā)貢獻(xiàn),該文觀點(diǎn)僅代表作者本人。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如發(fā)現(xiàn)本站有涉嫌抄襲侵權(quán)/違法違規(guī)的內(nèi)容, 請(qǐng)發(fā)送郵件至 舉報(bào),一經(jīng)查實(shí),本站將立刻刪除。