Android 第一課 Activity

以下說明基于Android Studio,簡稱AS。(紅色字體為自行添加,注在醒目)

具體包括:

  • 創建活動

  • ? ? 創建項目
  • ? ? 加載布局
  • ? ? 在AndroidManifest文件中注冊
  • 活動中使用(提醒)Toast
  • 在活動使用(菜單)menu
  • 銷毀活動

所謂活動(Activity):是一種包含用戶界面的組件,主要用于和用戶進行交互。

????????在Android Studio 內進行新建項目ActivityTest,項目報名默認為,com.example.ActivityTest,其余步驟默認即可。然后一個項目就創建完成。

  • 手動創建活動:

? ? 步驟:創建項目(可以勾選Generate Layout File),假如此時已經創建好一個活動,及其對應的一個布局文件,然后默認重寫onCreate()方法,->? ? 布局文件已經創建好,編輯布局xml文件(比如可以添加一個Button,但是然后要在對應的Activity文件加載這個Button.)->所有的活動都要在AndroidManifest.xml中進行注冊才能進行生效,但是AS已經自動將活動在AndroidManifest.xml中注冊了->配置主活動,添加<action android:name="android.intent.action.MAIN" />以及?<category android:name="android.intent.category.LAUNCHER" />表示主活動。

????

????找到com.example.activity包右擊新建Empty Activity,活動命名為FirstActivity,不要勾選Generate Layout File(會自動創建一個對應的布局文件Layout,在res目錄的Layout目錄下) 和Launcher Activity(會自動設置為當前項目的主活動),但要勾選Backwards Compatibility 表示選擇向下兼容模式。然后完成創建。

????? ? 項目中的任何活動都應該重寫Activity的onCreate()方法,這一步驟AS會幫我們自動完成,默認實現。代碼如下:

package com.example.activitytest;import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;public class FirstActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);//調用了父類的onCreate()方法}
}

Android程序講究邏輯和視圖分離,最好每個活動對應一個布局,所謂布局是指用來顯示界面內容的,因為上一步沒有勾選Generate Layout File,所以我們要手動創建一個布局文件。右擊res目錄的layout的目錄,新建Layout resource file,命名為first_layout,根元素默認為LinearLayout(線性布局)。

????在first_layout.xml文件下,Text通過XML文件的方式來編輯布局的,點擊Text,看到如下代碼:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical" android:layout_width="match_parent"android:layout_height="match_parent"></LinearLayout>

在創建布局時,選擇了以LinearLayout為根元素,因此現在布局文件中有了一個LinearLayout元素了,對布局文件進行編輯,添加一個按鈕,如下所示:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical" android:layout_width="match_parent"android:layout_height="match_parent"><Buttonandroid:id="@+id/button_1"//當前元素的唯一標識符android:layout_width="wrap_content"//當前元素的寬度android:layout_height="match_parent" //當前元素的高度android:text="Button 1"/>//當前元素中顯示的文字內容
</LinearLayout>

一個按鈕就成功的顯示出來了。接下來我們在活動中加載這個布局,返回到FirstActivity,在onCreat()方法中加入代碼。

package com.example.activitytest;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
public class FirstActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState); setContentView(R.layout.first_layout);//調用了setContenView()方法來給當前的活動加載一個布局,而在setContentView()方法中,我們一般會傳入一個布局文件的id(項目中添加的任何資源都會在R文件中生成一個相應的資源id,只需要調用R.layout.first_layout就可以得到first_layout.xml布局的id)}
}

所有的活動都要在AndroidManifest.xml中進行注冊才能進行生效,而FirstActivity已經在AndroidManifest.xml中注冊過了,打開AndroidManifest.xml文件,如下:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.example.activitytest"><applicationandroid: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>*/ 注釋符內先別在意。<activity android:name=".FirstActivity"></activity></application>
</manifest>

活動的注冊聲明要放<application>標簽內,這里時通過<activity>來對活動進行注冊。很明白:是AS自動完成了對FirstActivity的注冊。<activity>標簽中我們使用了android:name來指定具體注冊哪一個活動,這里填入.FirstActivity(com.example.activitytest.FirstActivity的縮寫)。這是由于最外層的<manifest>標簽中已經通過package屬性指定了程序的包名是com.example.activitytest。

? ? 不過,僅僅注冊了活動,程序是不能運行的,還沒有為程序配置主活動,程序運行先從主活動開始。配置主活動的方法是在<activity>標簽的內部加入<intent-filter>標簽,并在這個標簽中添加<action android:name="android.intent.action.MAIN" />以及<category android:name="android.intent.category.LAUNCHER" />這兩句的聲明即可。
這部分就是我們上面用注釋符/**/注解掉的部分。除此之外,我們還可以是使用android:lable指定活動中標題欄的內容,標題欄是顯示在活動最頂部的,給主動指定的lable不僅會成為標題欄的內容,還會成為啟動器(Launcher)中應用程序顯示的名稱。再次打開AndroidManifest.XML文件,代碼如下:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.example.activitytest"><applicationandroid: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=".FirstActivity"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity></application>
</manifest>

不出所料,現在程序無bug,已經可以開始運行。

  • 在活動中使用Toast

? ? Toast是一種非常好的提醒方式,在程序中可以使用它將一些短小的消息通知給用戶,過一段時間會自動消失。在活動中使用Toast。首先定義一個彈出Toast觸發點,正好界面有一個按鈕,我們就讓點擊這個按鈕的時候彈出一個Toast吧,在onCreat()方法中添加如下代碼:

package com.example.activitytest;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;public class FirstActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.first_activity);Button button1 = (Button)findViewById(R.id.button_1);button1.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {Toast.makeText(FirstActivity.this,"You clicked Button 1",Toast.LENGTH_SHORT).show();}});}
}

????在活動中通過findViewById()方法獲取到在布局文件中定義的元素,這里傳入的為R.id.button_1,來得到這個按鈕的實例,這個值是在first_layout.xml中通過android:id指定的。findViewById()方法返回是一個View對象,我們將它向下轉型為Button對象。得到按鈕對象實例后,通過調用setOnClickListener()方法為按鈕注冊一個監聽器,點擊按鈕就會執行監聽器中的onClick()方法。因此,彈出Toast的功能當然是在OnClick()中編輯

????Toast的用法灰常簡單,用過靜態方法makeText()創建出一個Toast對象,然后調用show()將Toast顯示出來就可以了。

? ? makeText()方法需要傳入3個參數,第一個參數是Context,就是Toast要求的上下文,由于活動本身就是一個Context對象,因此這里這要傳入FirstActivity.this就行了。第二個參數是Toast顯示的內容。第三個參數是Toast顯示的時長,有兩個內置常量可以選擇Toast.LENGTH_SHORT和Toast.LENGTH_LONG。

重新運行,并點擊按鈕,如下圖:


  • 在活動中使用menu

菜單(menu)作用節省空間。

右擊res目錄下new一個Directory,輸入文件名menu。然后右擊menu文件new一個Menu resource file 命名為main。點擊完成。

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"><itemandroid:id="@+id/add_item"android:title="Add"/><itemandroid:id="@+id/remove_item"android:title="Remove"/>
</menu>

這里創建了兩個菜單項,其中<item>標簽就是用來創建具體的菜單項,然后通過android:id給這個菜單項指定一個唯一的標識符,通過android:title給這個菜單項指定一個名稱。

然后回到FirstActivity來重寫onCreatOptionMenu()方法,重寫方法使用Ctrl+O,然后在onCreatOptionMenu()方法中編寫如下代碼:

public boolean onCreateOptionsMenu(Menu menu) {getMenuInflater().inflate(R.menu.main,menu);return true;
}

通過getMenuInflater()方法能夠得到MenuInflater對象,在調用它的inflate()方法,就可以給當前活動創建菜單了。inflate()方法接受兩個參數,第一個參數用于指定我們通過哪一個資源文件來創建菜單,這里傳入R.menu.main,可以理解為就是所在的目錄地址。第二個參數用于指定我們的菜單項將添加到哪一個Menu對象當中,這里直接使用onCreateOptionsMenu()方法中傳入的menu參數。然后給這個方法返回true,表示允許創建的菜單顯示出來,如果返回false,表示創建菜單無法顯示。

以上步驟,僅僅是讓菜單顯示出來,但是并不能真正的使用。因此還要定義菜單響應事件,在FirstActivity中重寫onOptionsItemSelected()方法,代碼如下:

public boolean onOptionsItemSelected(MenuItem item) {switch (item.getItemId()){case R.id.add_item:Toast.makeText(this,"You clicked Add",Toast.LENGTH_SHORT).show();break;case R.id.remove_item:Toast.makeText(this,"You clicked Remove",Toast.LENGTH_SHORT).show();break;default:}return true;}

在onOptionsItemSelected()方法中,通過調用item.getItemId()來判斷我們點擊的是哪一個菜單項,然后給每一個菜單項一個邏輯處理,彈出一個Toast。運行之后,如下圖,




  • 銷毀一個活動

如何銷毀一個活動呢?按一下back鍵就可以銷毀當前的活動了,也可以使用另一種方法,Activity類提供了一個finish()方法,在活動中調用一下這個方法就可以銷毀當前活動了。代碼如下:

button1.setOnclickListener(new View.OnClickListener){@overridepublic void onClick(View v){  finish();  }
}



注:此次一系列android 文章,均有參考郭霖書籍《第一行代碼》,再一次無法抑制對大牛的崇敬。








本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/274142.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/274142.shtml
英文地址,請注明出處:http://en.pswp.cn/news/274142.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

figma設計_一種在Figma中跟蹤設計迭代的簡單方法

figma設計As designers, telling a good story is always part of the job. A great story engages the client with the journey of decision making; it shows your team the breadth and depth of the exploration; it also encourages us to reflect on our own design pro…

Android 第二課 Intent

上一節&#xff0c;掌握了活動的創建&#xff0c;但是在啟動器中點擊應用的圖標只會進入到該應用的主活動&#xff0c;那么&#xff0c;如何從主活動跳轉到其他活動呢&#xff1f;顯式IntentIntent有多個構造函數&#xff0c;其中一個是Intent(Context packContext,Class<?…

ok~加油!

你有夢想&#xff0c;放手去做&#xff01;轉載于:https://www.cnblogs.com/the-one/p/3217124.html

latex 插圖 上下放_專輯插圖中上下文中的文本

latex 插圖 上下放Especially if, like me, you’re not properly educated in the world of visual design, typography, and all those other things that a formal education can bring. We’re kind of playing around until something fits right, and doesn’t feel jarr…

亡羊補牢,為時不晚?

亡羊補牢&#xff0c;為時不晚 人總是想著第二次比第一次做的好&#xff0c;可是會一直有第二次機會嗎&#xff1f;當你思考好&#xff0c;決定做一件事情的時候&#xff0c;為什么不堅持下去呢&#xff1f;當你思考好&#xff0c;記住堅持到底就會勝利。祝福自己&#xff0…

2013年7月份第4周51Aspx源碼發布詳情

大型企業通用管理ERP源碼 2013-7-26 [VS2010]2013.7.4更新內容&#xff1a;1.修復決策模式-客戶等級不能保存問題。2.修復企業知識庫有報錯問題。3.修復運營模式-人力資源分析模塊-在部分模塊點擊查詢后&#xff0c;水晶報表顯示無法加載文件問題&#xff0c;4.修復行政辦公模…

視覺感知_產品設計中的視覺感知

視覺感知The role of the UX designer has evolved immensely over time, but at its core, it remains the same- UX設計人員的角色隨著時間的流逝而發生了巨大的變化&#xff0c;但從本質上講&#xff0c;它保持不變- to deliver information to users in an effective mann…

Android 第三課 Activity的生命周期

新建項目ActivityLifeCycleTest&#xff0c;創建主活動后&#xff0c;再新建兩個子活動--NormalActivity和DialogActivity。 現在活動及其對應布局文件創建完畢。 編輯normal_layout.xml文件&#xff0c;代碼如下&#xff1a; <?xml version"1.0" encoding"…

轉載:Apache commons開源工具簡介

Apache Commons是一個非常有用的工具包&#xff0c;解決各種實際的通用問題&#xff0c;下面是一個簡述表&#xff0c;詳細信息訪問http://jakarta.apache.org/commons/index.html BeanUtilsCommons-BeanUtils 提供對 Java 反射和自省API的包裝 BetwixtBetwixt提供將 JavaBean …

pb 插入報列在此處不_獲取有關[在此處插入問題]的事實

pb 插入報列在此處不Twitter’s recent move to put notices on tweets themselves is one of the most controversial social media features during our times. As a design technologist, I can’t help but wonder the decision-making process behind it. It’s a perfect…

設計模式_單實體模式

Singleton 三要素&#xff1a;private 構造函數、 public 靜態方法、 public 靜態變量 單實例模式的三種線程安全實現方式&#xff08;&#xff23;&#xff0b;&#xff0b;&#xff09; &#xff11; 懶漢模式&#xff1a;即第一次調用該類實例的時候才產生一個新的該類實例…

Android 第四課 活動的啟動模式

啟動模式分為4種&#xff0c;分別為standard&#xff0c;singleTop&#xff0c;singleTask&#xff0c;和singleInstance我們可以在AndroidManifest.xml中通過給<activity>標簽指定android:launchMode屬性來選擇啟動模式。standard standard是活動默認的啟動模式。在stan…

c++編寫托管dll_教程:如何編寫簡單的網站并免費托管

c編寫托管dll本教程適用于誰&#xff1f; (Who is this tutorial for?) This tutorial assumes no prior knowledge and is suitable for complete beginners as a first project 本教程假定您沒有先驗知識&#xff0c;并且適合初學者作為第一個項目 您將需要什么 (What you w…

淺述WinForm多線程編程與Control.Invoke的應用

在WinForm開發中&#xff0c;我們通常不希望當窗體上點了某個按鈕執行某個業務的時候&#xff0c;窗體就被卡死了&#xff0c;直到該業務執行完畢后才緩過來。一個最直接的方法便是使用多線程。多線程編程的方式在WinForm開發中必不可少。本文介紹在WinForm開發中如何使用多線程…

Android 第五課 常用控件的使用方法(TextView、Button、EditView、 ImageView、 ProgressBar、 ProgressDialog等)

總結&#xff1a;見名知意 TextView&#xff1a; Button: EditView: ImageView: ProgressBar: ProgressDialog和AlertDialog有些類似&#xff0c;都可以再界面彈出對話框&#xff0c;都能夠屏蔽其他控件的交互能力&#xff0c;用法也類似。 我們還發現ProgressDialog和AlertDia…

設計 色彩 構圖 創意_我們可以從時尚的創意方向中學到色彩

設計 色彩 構圖 創意The application of fashion as a form of aesthetic expression is a notion familiar to many. Every day, we curate ourselves with inspiration from rising trends, a perception of our personal preferences, and regards to practicality in the c…

Android 第六課 4種基本布局之LinearLayout和Relativelayout

看完控件&#xff0c;緊接著看布局&#xff0c;布局是可以來放置控件&#xff0c;管理控件的。布局里也可以嵌套布局。我們新建項目UILayoutTest項目&#xff0c;活動名和布局名選擇默認。加入活動及其對應的布局已經創建完成。線性布局(LinearLayout)android:layout_gravity屬…

如何在UI設計中制作完美陰影

重點 (Top highlight)Shadows are everywhere in modern UI Designs. They are one of the most essential part of the UI elements right behind the fill, stroke, and cornder radius. &#x1f609;現代UI設計中到處都有陰影。 它們是UI元素中最重要的部分之一&#xff0c…

微軟2013年校園實習生招聘筆試題及答案

原文&#xff1a; http://www.wangkaimin.com/2013/04/07/%e5%be%ae%e8%bd%af2013%e5%b9%b4%e6%a0%a1%e5%9b%ad%e5%ae%9e%e4%b9%a0%e7%94%9f%e6%8b%9b%e8%81%98%e7%ac%94%e8%af%95%e9%a2%98%e5%8f%8a%e7%ad%94%e6%a1%88/#more-195 1. Which of following calling convension(s)…

Android 第七課 4種基本布局之FrameLayout和百分比布局

FrameLayout&#xff08;幀布局&#xff09;&#xff0c;她沒有方便的定位方式&#xff0c;所有的控件都會默認擺放在布局的左上角。 修改activity_main.xml中的代碼&#xff0c;如下&#xff1a; <?xml version"1.0" encoding"utf-8"?> <Frame…