日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

《第一行代码》读书笔记一

發布時間:2023/12/4 综合教程 23 生活家
生活随笔 收集整理的這篇文章主要介紹了 《第一行代码》读书笔记一 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一:

1:項目文件

開發中經常用到的有:

app目錄:存放項目代碼、資源文件

build.gradle:項目全局gradle腳本。

2:app目錄

libs:放到libs目錄下的第三方jar包會自動添加到項目構建路徑。

java:存放java代碼的地方。

res:資源文件目錄,包括:圖片、布局、字符串、顏色、樣式、菜單等。

AndroidManifest.xml:項目配置文件。多用于注冊四大組、添加權限等。

proguard-rules.pro:項目代碼混淆規則。

3:build.gradle逐項解析

apply plugin: 'com.android.application'//說明module的類型,com.android.application為程序,com.android.library為庫
android {
    compileSdkVersion 22//編譯的SDK版本
    buildToolsVersion "22.0.1"http://編譯的Tools版本
    defaultConfig {//默認配置
        applicationId "com.nd.famlink"http://應用程序的包名
        minSdkVersion 8//支持的最低版本
        targetSdkVersion 19//支持的目標版本
        versionCode 52//版本號
        versionName "3.0.1"http://版本名
    }
    sourceSets {//目錄指向配置
        main {
            manifest.srcFile 'AndroidManifest.xml'//指定AndroidManifest文件
            java.srcDirs = ['src']//指定source目錄
            resources.srcDirs = ['src']//指定source目錄
            aidl.srcDirs = ['src']//指定source目錄
            renderscript.srcDirs = ['src']//指定source目錄
            res.srcDirs = ['res']//指定資源目錄
            assets.srcDirs = ['assets']//指定assets目錄
            jniLibs.srcDirs = ['libs']//指定lib庫目錄
        }
        debug.setRoot('build-types/debug')//指定debug模式的路徑
        release.setRoot('build-types/release')//指定release模式的路徑
    }
    signingConfigs {//簽名配置
        release {//發布版簽名配置
            storeFile file("fk.keystore")//密鑰文件路徑
            storePassword "123"http://密鑰文件密碼
            keyAlias "fk"http://key別名
            keyPassword "123"http://key密碼
        }
        debug {//debug版簽名配置
            storeFile file("fk.keystore")
            storePassword "123"
            keyAlias "fk"
            keyPassword "123"
        }
    }
    buildTypes {//build類型
        release {//發布
            minifyEnabled true//混淆開啟
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-project.txt'//指定混淆規則文件
            signingConfig signingConfigs.release//設置簽名信息
        }
        debug {//調試
            signingConfig signingConfigs.release
        }
    }
    packagingOptions {
        exclude 'META-INF/ASL2.0'
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/NOTICE'
        exclude 'META-INF/MANIFEST.MF'
    }
    lintOptions {
        abortOnError false//lint時候終止錯誤上報,防止編譯的時候莫名的失敗
    }
}
dependencies {
    compile fileTree(dir: 'libs', exclude: ['android-support*.jar'], include: ['*.jar'])   //編譯lib目錄下的.jar文件
    compile project(':Easylink')//編譯附加的項目
    compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.3'//編譯來自Jcenter的第三方開源庫
}

4:菜單

菜單有多種:optionMenu、上下文菜單、彈出菜單等。

菜單可以在代碼中動態添加,也可以在xml中定義好菜單項,在代碼中加載。

菜單可以分組管理菜單項,也可以擁有子菜單。

5:Intent

Intent可以用于啟動四大組件,可以攜帶數據,不過只能通過鍵值對的形式攜帶基本類型數據。

Intent有兩種:顯式Intent和隱式Intent。

隱式Intent通過添加action、category、data等附加內容,來匹配系統中符合要求(注冊時配置 intent-filter)的活動、服務等。

6:返回數據的跳轉

啟動另一個活動可以有兩種方法,其中startActivityForResult(intent,請求碼)啟動的跳轉,可以在活動中重寫回調方法onActivityResult(請求碼,結果碼,intent)來獲取返回數據,通過請求碼匹配具體請求的返回、通過結果碼判斷結果的類型,通過intent提取返回的數據。

7:保存Activity中的數據

活動跳轉后,之前的活動可能會被回收,若想保存之前的活動的數據,使得返回這個活動時數據仍在,可以在活動中重寫 onSaveInstanceState(bundle)回調方法,這個方法會在活動被回收之前調用,把數據存在budle中,那么下一次該活動重建時,可以在onCreate(bundle)中通過bundle取回數據。

8:精確定位活動

可以定義一個BaseActivity,繼承自AppCompatActivity,然后定義一些通用的方法、操作,如:打印當前活動信息。

另其他活動繼承BaseActivity,即可在項目運行時知道哪個頁面對應哪個活動了。

9:批量管理活動

可以定義一個工具類,其中維護一個活動list:

public class ActivityCollector {
    public static List<Activity> activities = new ArrayList<>();

    public static void addActivity(Activity activity){
        activities.add(activity);
    }

    public static void removeActivity(Activity activity){
        activities.remove(activity);
    }

    public static void finishAll(){
        for(Activity activity:activities){
            if(!activity.isFinishing()){
                activity.finish();
            }
        }
        activities.clear();
    }

然后,定義一個父Activity,作為其他activity的基類:

public class BaseActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        ActivityCollector.addActivity(this);
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        ActivityCollector.removeActivity(this);
    }
}

其他Activity繼承BaseActivity,那么每當活動創建時就會被添加到list中,銷毀就移除。在任何需要批量銷毀活動,完全退出程序時,只需通過 ActivityCollector.finishAll() 銷毀所有活動即可。

二:UI

1:android:gravity:控件中內容的對齊方式。

2:android:layout_gravity:控件本身在父容器中的對齊方式。

3:進度條

有兩種,其中:圓形的用于顯示耗時操作,通過visibility控制可見性來顯示或隱藏;水平進度條則可以通過在代碼中動態設置progress來更改進度值,多用于下載等操作。

4:彈窗

AlertDialog的使用步驟為:創建builder——通過builder.setXX()設置彈窗標題、內容、按鈕點擊事件等——最后顯示彈窗

5:進度彈窗

不同于一般的環形進度條,ProgressDialog還額外顯示文字內容,以告知用戶當前正在執行什么耗時操作。

創建progressdialog——設置標題、內容等——show()顯示——通過dismiss()關閉

6:布局

線性布局中的比例布局:設置哪個方向上按比例布局,則該方向上大小設置為0dp,然后通過layout_weight設置權重。

相對布局:控件與父容器的相對、控件與已有控件的相對,布局的位置規律為:相對于參照物的上下左右中。

幀布局:幀布局中的控件末日左上角對齊,并且后定義的控件會覆蓋在最上面。幀布局可以用于自定義一些需要重合在一起的視圖元素,比如:自定義帶文字的圖片按鈕、帶有文字提示的視頻播放界面、浮動在圖片或視頻播放控件之上的字幕等。

百分比布局:可以使用第三方擴展庫。

7:自定義控件

方法一:使用布局定義好一個視圖效果,然后在其他布局文件中include。

方法二:繼承android內置控件類定義新的控件類,在控件類的構造方法中inflate定義好的layout文件,然后在其他布局文件中通過新控件類的完整路徑來使用該控件。

8:ListView的使用步驟

定義數據類——定義列表項視圖布局——繼承Adapter,定義adapter類,重寫getview方法:獲取當前數據項、inflate列表項布局文件、為列表項控件賦值、返回view

在活動代碼中,創建數據數組——創建adapter,把上下文、列表項布局文件id、數據數組作為參數——為activity視圖中的listview設置adapter

9:listview的優化

初步優化,使用convertView緩存之前加載的布局;

進一步優化,創建一個內部類ViewHolder,里面的成員變量和view中所包含的組件個數、類型相同,在convertview為null的時候,把findviewbyId找到的控件賦給ViewHolder中對應的變量,就相當于先把它們裝進一個容器,下次要用的時候,直接從容器中獲取。

10:RecyclerView的使用

定義適配器類,重寫其中的三個方法——在activity代碼中創建數據數組——創建layoutmanager,通過layoutmanager設置布局方式,并設置給recyclerview控件——創建adapter——為activity布局文件中的recyclerview控件設置adapter

【我們看到,RecyclerView不僅需要adapter,還需要layoutmanager。通過layoutManeger,我們可以設置RecyclerView的布局排列方式:垂直、水平、網格、瀑布流】

【列表項的點擊事件在adapater中定義,可以定義列表項整體點擊、列表項中不同空間元素點擊 的事件響應】

【常用的RecyclerView開源庫整理:http://www.jianshu.com/p/154891851fe2 http://blog.csdn.net/mynameishuangshuai/article/details/51153978】

三:碎片

1:碎片的使用步驟

定義布局文件——創建碎片類,繼承自Fragment,重寫onCreateView方法,在其中inflate對應的布局文件——在activity的布局文件中通過路徑使用碎片、在代碼中動態使用碎片

2:在代碼中動態使用碎片

創建碎片實例——獲取FragmentManager——beginTransaction()——add、replace、remove動態使用碎片實例——commit()

3:模擬返回棧

把碎片的使用歷史加入返回棧中,點擊返回按鈕時返回上一個碎片而不是退出當前activity。

創建碎片實例——獲取FragmentManager——創建transaction——add、replace、remove動態使用碎片實例——transaction.addToBackStack(null)——commit()

4:碎片與活動之間的通信調用

活動中調用碎片:在activity代碼中通過findFragmentById(id)獲取活動布局中的碎片實例,然后通過該實例調用碎片類中的方法、為碎片中的控件賦值等

碎片中調用活動:碎片代碼中國年通過getActivity()方法獲取與當前碎片相關聯的活動實例,然后通過該實例調用方法、操作控件

碎片之間的調用:在一個碎片中獲取關聯的活動實例,然后通過活動實例獲取另一個碎片實例,通過另一個碎片實例即可進行調用。

5:碎片保存臨時數據

類似于activity實例,碎片也可以通過onSaveInstanceState()方法保存數據,之后在碎片的onCreateView等方法中都可以通過參數bundle重新提取。

6:碎片的適配

在res目錄下新建 layout-限定符文件夾,在其中定義布局文件,那么程序在運行時,就會根據屏幕的尺寸,自動加載符合格式的文件夾下的視圖文件。

android中的限定符有:

總結

以上是生活随笔為你收集整理的《第一行代码》读书笔记一的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。