android入门知识,android基础知识学习笔记
該筆記主要是通過學習《第一行代碼》中的各種知識點以及實例,進行的個人學習記錄,感謝圖書作者郭霖大神
android:label 指定活動中標題欄的內容,標題欄是顯示在活動最 頂部的* 標題欄隱藏 ——在onCreate中使用 requestWindowFeature(Window.FEATURE_NO_TITLE)的意思就是不在活動中顯示標題欄,注意這句代碼一定要在 setContentView()之前執行Activity生命周期,結束當前活動用finish
新學控件
AlertDialog(主要屬性:標題Title,內容Message,按鈕事件positive/negative,是否可以返回Cancelable)需要代碼中用show顯示到屏幕
ProgressBar(主要屬性:圓形或長條style,進度值max,可見性visible)不需要代碼中用show顯示到屏幕
ProgressDialog與AlertDialog相似,但是xuyongD調用dismiss關閉
布局復習 * LinearLayout(2個重要屬性)
layout_gravity 根據LinearLayout的水平/垂直屬性,再決定控件的垂直/水平位置
layout_weight 可以去除layout_width的依賴,規范做法是將控件的width設置為0dp,然后對控件的layout_weigth設置即可,當然也可以width weight一起使用在不同控件中
RelativeLayout
主要是align為前綴的屬性,相對位置可以是相對于父控件的位置,也可以是同級控件的位置,主要有這些:alignParentLeft/Right/Bottom,centerInParent,align_toRightOf/toLeftOf/below/above
FrameLayout
只是將所有控件放置在布局左上角,在討論碎片時將使用到,其他情形下很少用
TableLayout
使用表格的方式排列控件,主要是行列的設置,通常對不同行,列數不同時,通過合并單元格的方式解決
TableLayout中每個TableRow代表一行。TableRow中每加一個控件,就是添加一列。使用屬性layout_span=2,可以合并2列,這樣就對齊了。為了填補一行的其余空白位置,使用strechColumns屬性,將某個行內控件拉伸自適應屏幕。strechColumns = 0表示拉伸從左往右的第0個控件
引入布局到其他布局,自定義控件
在需要引入的布局文件中添加即可將目標布局放入其中
自定義控件的一個優點是,避免在其他代碼中重復實現布局中控件的某些功能 * 單位問題 > px表示像素,pt用于文字大小的表示
android中的對應單位按比例可以適用于不同的屏幕dpi,dp=dip(px的升級版),sp(pt的升級版,用于文字大小配置)
聊天功能的界面實現
首先需要用sdk自帶的drawPatch將圖片配置成拉伸合理的素材圖片
基本由一個listview,一個textview和一個button組成,需要注意的是“如何自動更新信息同時看到最新發出或收到的信息”,對listview進行實時更新——利用適配器所帶函數notifyDataChanged()通知listview數據產生變化,使用listView的setSelection(dataCollection.size)函數,將顯示的數據定位到最后一行
Fragment(總是依附activity存在)
不同一般控件,它的添加需要一般控件作為內容,同時需要一個java類完成fragment控件的自定義繪制,因此接下的學習才能體會到fragment具有類似自定義控件的性質
生命周期
運行,暫停,停止,銷毀
進入停止狀態的所有fragment都是不可見的,使用addtoBackStack能夠使fragment進入停止,但也可能被系統回收 * 靜態加載fragment
首先需要針對每一個fragment設置f.xml布局文件,之后再對應fragment布局文件對應新建Fragment類F.java > * 該Fragment類繼承自android.app.Fragment,重寫onCreateView方法,在方法中通過調用LayoutInflate.inflate方法將定義的fragment布局文件f.xml作為參數傳遞進來,相當于類與布局的綁定,在個人看來這種做法與自定義控件十分相似
最后,在需要加載fragment控件的主xml中,用以下代碼方式將fragment加載入主xml的布局中加以顯示,需要留意的是android.name屬性,必須對控件fragment的該屬性指定包名+類名才能夠找到并加載對應的fragment布局對象
android:id="@+id/fragment"
android:layout_width="match_parent"
android:name="com.example.young.***"
android:layout_height="match_parent" />
動態加載fragment
必要步驟與靜態加載相同,新建f.xml并新建F.java
在需要動態加載/替換不同fragment的位置,添加 FrameLayout 標簽,因為該標簽特性是所有控件都覆蓋在左上角,這樣就使得新加載的控件能夠覆蓋之前的控件,達到替換不同fragment的作用,演示代碼如下:
android:id="@+id/right_layout"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1">
android:id="@+id/right_fragment"
android:layout_width="match_parent"
android:name="包名+fragment類名"
android:layout_height="match_parent" />
```> * 動態加載說明需要根據輸入來改變界面顯示,因此使用一個按鈕點擊按鈕的方式替換加載不同fragment作為實例,說明如何動態加載fragment,具體只需要在button的監聽事件中編寫fragment相關邏輯
```java
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
AnotherRightFragment fragment = new AnotherRightFragment();
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction transaction =
fragmentManager.beginTransaction();
transaction.replace(R.id.right_layout, fragment);
transaction.addToBackStack(null);
transaction.commit();
}
});
分析動態加載過程,使用到的對象有:fragment布局對應的類實例fragment,FragmentmanagerFragmentTransaction 需要先得到一個新fragment實例(目的是用于之后的加載),然后得到FragmentManager實例(Activity中可直接調用getFragmentManager()獲取),之后的操作就是利用manager開始一次事物操作,manager實例調用beginTransaction()得到一個事物transaction實例對象(個人感覺該操作類似數據庫一次事物),通過transaction進行需要的操作(replace,remove等),記得需要提交conmmit。這里提交之前的一句addToBackStack(null)是為了保存懂動態加載之前的一個狀態,模擬activity返回棧的操作,使得動態加載之后,點擊back鍵就能返回上一次的狀態,而不是直接退出(這一步經過實踐并沒實現預期結果,還未找到問題暫時擱置)
Bundle對象實例,可用于保存恢復某些數據(2.4.5 小節)
Bundle對象能夠保存多種對象,例如bundle.putString(String key,String value),bundle.putInt(String key,int value),在內存不足可能回收停止狀態的活動時,重寫onSaveInstanceState(Bundle bundle)能夠將數據保存在bundle中,再次啟動活動時,通過onCreate的Bundle參數獲取相關數據
Bundle可以通過intent在不同活動中傳遞,將數據保存在Bundle中,再將Bundle保存在intent中傳遞也是一種傳遞數據的方式
限定符(作用是自動判定該如何顯示fragment,雙頁還是單頁顯示)
新建不同大小的適配的文件夾(這里有統一的格式規定),例如在res目錄下新建layout-large文件夾(用于適配雙頁)放置顯示雙頁格式的布局xml文件
最小限定符(Smallest-width Qualifier):靈活適配不同寬度大小的屏幕,單位是dp,舉例layout-sw600dp表示屏幕寬度大于600dp的時候就使用該文件夾中的布局xml文件,小于就適配其他布局文件(該功能由Android 3.2 引入)
總結
以上是生活随笔為你收集整理的android入门知识,android基础知识学习笔记的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 鸿蒙os 2.0跑分,预装鸿蒙OS 2.
- 下一篇: 华为鸿蒙os什么运行内存多大,华为公布鸿