Android studio奇技淫巧

這篇文章篇幅較長,可以使用版權聲明下面的目錄,找到感興趣的進行閱讀

轉載自:android studio奇技淫巧

 

目錄

  • 3.1 Android Studio使用初探 
    • Project面板
    • Stucture面板
    • Android Monitor
    • Keymap
    • Tip of the Day
    • 快速查找
    • Search Action
    • 演示模式
  • 3.2 Android Studio使用進階 
    • 操作與導航
    • 快速重構
    • 代碼模板
    • 內置模板
    • 自定義代碼註釋模板
    • 代碼分析
    • 在Android Studio中進行版本管理
  • 3.3 Android Studio新功能 
    • 項目模板
    • ThemeEditor
    • Image Asset&&Vector Asset
    • Android Monitor
    • Instant Run
    • Productivity Guide
  • 3.4 Android Studio插件 
    • Ignore
    • 自動生成代碼類插件
    • 主題插件
  • 3.5 Android Studio資源網站 
    • Android Studio中文社區
    • Android Studio問答社區

3.1 Android Studio使用初探

本人感覺這章對剛使用Android Studio的初學者來說很有用,裏面很多技巧需要自己慢慢摸索,建議養成使用快捷鍵的習慣,久而久之,會給你的編程帶來極大的效率。本章作者主要以Mac的快捷鍵來介紹的,文章最後會給出快捷鍵附錄

Project面板

在Android Studio最左邊可以找到Project標籤,這裏是開發者管理項目的地方

Project標籤下有幾個選項卡,點擊右邊的箭頭,可以打開切換菜單

Project標籤展示的是整個項目的目錄結構,完全按照文件系統的目錄結構來進行展示,不過Android工程選項卡是開發中使用最多的

Android選項卡不是按照文件目錄結構對項目進行的整理,而是按照module來進行的整理。每個module不論是主項目還是庫項目都是一個獨立的文件夾,另外所有的Gradle腳本都在一個單獨的目錄中——Gradle Scrpts


Stucture面板

Stucture面板在Eclipse時代就已經是標配了,Android Studio同樣也進行了集成

與Eclipse一樣,Stucture標籤不僅可以顯示代碼結構,也可以顯示其成員變量、靜態常量、方法等信息,而在Android Studio中不僅是代碼,XML佈局、腳本也可以顯示其Stucture信息


Android Monitor

這個面板應該是開發者使用的非常多的一個面板,這裏會顯示Debug程序的Log信息,在設置中可以對Logcat所打印的Log根據其種類設置成不同的顏色


Keymap

Android Studio可以設置各種類型的快捷鍵,在Setting中找到Keymap標籤,在下拉菜單中可以選擇各種內置的快捷鍵類型,本文中所有的快捷鍵都指的是默認的Android Studio快捷鍵


Tip of the Day

在Android Studio菜單欄的Help標籤下,選擇Tip of the Day選項,可以打開Android Studio的Tips提示

這裏面會隨機顯示一條Android Studio的使用提示,Tip of the Day默認是在啓動時顯示的,但是很多開發者都不會讓它啓動時顯示,實際上這裏纔是Android Studio的技巧集萃,裏面都是非常實用的使用技巧,每天抽一點時間,簡單看下這個Tips,用不了多久這些帶給你的時間收益,絕對遠大於你看這些Tips的時間成本

出了這裏的Tips,IntelliJ IDEA的官方網站也應該是開發者經常關注的地方,特別是它的功能介紹,地址:https://www.jetbrains.com/idea/whatsnew/


快速查找

Android Studio自帶的強大全局快捷搜索,只需要雙擊”shift”鍵即可,在這個Search EveryWhere中,你只需要輸入要查找的內容(可以是模糊查詢,有關鍵字即可),下面就可以實時顯示查找出的結果。當勾選上面的複選框——Include non-project items後,還可以搜索非項目中的內容,例如引用的jar包中的內容


Search Action

Android Studio快捷鍵衆多,因此Android Studio提供了一個類似搜索指令的入口,通過快捷鍵”Command+Shift+A”可以快速調出這個搜索入口,例如要查找打開最近的工程這樣一個指令,可以直接輸入”Open Recent”,按下回車鍵後就可以直接使用這條指令

再例如查看方法調用棧的快捷鍵,如果一時無法想到,可以通過輸入hier找到該指令及其快捷鍵


演示模式

Android Studio爲開發者提供了極爲方便的演示模式,打開菜單欄的View選項,在最下面找到幾種演示模式,通過幾種模式可以在連接投影儀時非常方便地全屏顯示代碼區域


3.2 Android Studio使用進階

操作與導航

單詞選擇

在Android Studio中,通過鍵盤操作來選擇單詞是編輯代碼時最常用的操作,通過”Option+←”快捷鍵來實現按單詞的光標移動,Android Studio也提供了安裝駝峯命名法來實現光標移動的設置,在設置中開啓”Use CamelHumps words”即可使用該功能,開啓後,再通過”Option+←”就可以按照駝峯來移動光標


顯示最近操作、修改

在Android Studio中,使用”Command+E”和”Command+Shift+E”快捷鍵,以快速顯示最近文件操作和文件修改

使用”Command+E”快捷鍵顯示最近瀏覽過的文件

使用”Command+Shift+E”快捷鍵顯示了最近編輯過的文件,與此同時使用”Control+Tab”快捷鍵進行各個界面的切換


操作記錄

當開發者在瀏覽代碼時,通常會進行代碼的跳轉,而當想回到之前瀏覽過的地方時就比較麻煩了,而Android Studio保存了每個操作的歷史,通過快捷鍵”Command+Option+Left\Right”來進行訪問位置的導航


移動行

整體移動某行是很常用的方法,在Android Studio中通過”Option+Shift+方向鍵上\方向鍵下”就可以實現某一行的上下移動


查找調用

在開發中,查找一個方法在何處被調用過或者查找一個ID在哪裏被引用過是經常性操作,例如要查找initViews()的調用處,只要單擊鼠標右鍵,選擇”Find Usages”即可,當然你也可以使用”Option+F7”進行快速查找


快速方法操作

在不同的方法間進行跳轉是開發者瞭解程序架構的必備技能,在Android Studio中,開發者可以通過按住”Command”鍵,並點擊方法名的方式進入方法,查看方法詳情,你也可以通過直接使用”Command+B”快捷鍵進入一個方法


查找參數定義與文檔

通過快捷鍵”Command+P”可以快速查看該方法的參數定義

使用快捷鍵”F1”查看API文檔

如果你想像使用Eclipse一樣,當鼠標放上去的時候就顯示文檔的提示,那麼可以在設置中進行設置,Editor-General-Show quick documention on mouse move


快速行操作

通過快捷鍵”Command+Shift+Up\Down”,可以迅速地將一行移動到上面一行或者下面一行,而不需要通過剪切來進行兩行的交換

通過快捷鍵”Command+BackSpace”刪除一行

通過快捷鍵”Command+D”迅速複製上一行的代碼,同時將光標停留在變量名的地方


快速斷點

條件斷點和普通斷點一樣,直接在左邊的編輯面板上點擊就能生成,而要給一個普通斷點增加條件功能,只需要普通斷點上單擊鼠標右鍵,在彈出菜單的Condition中填入斷點條件即可

在調試時,開發者可能會臨時增加一些斷點,也就是說,開發者實際上只想讓這個斷點執行一次,下次就不想在這個地方繼續執行斷點了,通過快捷鍵”Command+Option+Shift+F8”,即可作爲臨時斷點

臨時斷點與普通斷點區別就在於臨時斷點上有一個數字”1”,當臨時斷點執行一次後就會自動消失


異常斷點

舉個例子,程序中最常見的Crash莫過於NullPointerException,如何在程序中出現NullPointerException的地方都打上斷點呢?其實根本不需要這麼做,開發者只要打開Run-View breakpoints界面,點擊右上角的”+”,選擇Java Exception Breakpoints,並輸入要監聽的異常即可

筆者在這裏選擇監聽NullPointerException,那麼在程序時不需要設置任何斷點,只要App因爲NullPointerException異常而導致崩潰,系統就會在對應的地方自動斷點並暫停


日誌斷點

開發者經常會遇到這樣的情況,整個工程的代碼已經寫完了,突然出現了一個bug需要加一行Log進行調試,因爲這一行Log要把整個工程都編譯一遍,這是非常痛苦的事,而實際上,Android Studio已經提供了針對這個問題的解決方案,那就是日誌斷點

例如下面這個例子,開發者需要在每次循環中打出一句Log,但是又不想增加一行Log

此時可以使用日誌斷點來增加Log而不需要修改代碼,首先需要打上一個普通斷點,然後在斷點單擊鼠標右鍵,選擇suspend屬性爲false,並在下面的Log evaluated expression中寫入日誌信息即可,這樣設置後,在程序運行時就不用重新編譯,而且會在斷點處打出你需要的日誌信息

這裏寫圖片描述


多重選擇

當代碼的上下文有很多相同的代碼,而開發者又需要同時對這些代碼塊進行操作時,就可以使用多重選擇功能,例如,只要將光標放在第一個int處,使用快捷鍵”Control+G”就可以選中第一個int,再次按一次快捷鍵”Control+G”就可以選中第二個int

除了通過相似性進行多重選擇,Android Studio還提供了通過列進行多重選擇的方式,只需要按住”Option”鍵並拖動即可

除了上面兩種類似的操作,Android Studio也支持多光標的操作方式,通過快捷鍵”Option+Shift+鼠標點擊”就可以增加一個新的編輯光標


快速完成

通過快捷鍵”Command+Shift+Enter”,在很多地方可以讓Android Studio快速完成某些操作,例如方法體大括號的添加、行尾分號的添加、自動格式化該行等操作


代碼提示

Android Studio提供了非常強大的智能提示功能,使用快捷鍵”Control+Space”就可以在代碼的任何地方調出代碼提示,在使用代碼提示時,有一點需要注意的是,當顯示出候選的提示後,通過Enter鍵可以完成提示的輸入,另外通過Tab鍵同樣可以完成提示的輸入,區別是它會將後面已經輸入的提示全部刪除,而Enter鍵會保留後面的輸入

除了使用智能提示之外,在Android Studio中,還提供了快捷鍵”Control+Shift+Space”以顯示更加智能的代碼提示

代碼提示不僅可以用於代碼編寫的過程中,在程序出現錯誤時,也可以藉助快速完成快捷鍵”Option+Enter”獲取代碼修改提示,例如筆者使用快捷模板logi,產生一條日誌信息,這時在TAG變量上使用快捷鍵”Option+Enter”,選擇”Create constant field ‘TAG’”即可


調試中計算變量的值

在調試過程中,只要按住Alt鍵,點擊代碼中的表達式,即可顯示錶達式的值


設置變量命名代碼風格

根據Google的代碼風格指南,類的成員變量通常要以m開頭,而靜態成員變量通常要以s開頭,因此可以在設置中設置變量的命名規則

在Field的Name prefix中設置m,在Static field的Name prefix中設置s,這樣在輸入一個變量的名字時,就可以自動補全m或者s


查看大綱

當項目很大的時候,通過使用快捷鍵”Command+F12”,可以調出大綱界面,即顯示方法和成員變量列表

通過輸入方法名,可以快速定位到方法,同時它還支持模糊查詢,查詢方法的一部分關鍵字也能進行篩選


書籤

在接手老項目的代碼或者在調試代碼時,往往需要分析代碼的思想,經常需要記錄一些關鍵的代碼、方法,這時候使用書籤來記錄就是最好的方式,類似在Chrome中添加書籤,通過快捷鍵F3可以將一處代碼添加到書籤或者從書籤中刪除

添加到書籤的代碼,在行數旁邊會有一個小鉤,同時在Favorites標籤中,可以找到相應的Bookmarks

另外通過快捷鍵”Command+F3”可以調出書籤面板、顯示所有書籤


附加調試

開發者一定遇到過當項目很大時,編譯一次需要很長時間,而這時候又需要調試程序的情況。那麼除了直接使用Debug運行程序以外,還可以使用attach to debugger的方式。

在ADB連接手機的情況下,點擊attach to debugger按鈕並選擇要調試的程序(只能調試Debug簽名的App),即進入可調式模式,不需要通過Debug運行程序


其他操作技巧

  • 代碼摺疊:”Command+-“和”Command++”,可以對一段代碼進行摺疊和展開
  • 在文件系統中打開文件:選中文件單擊鼠標右鍵,選擇Reveal in Finder同樣可以在文件系統中打開文件

  • 預覽方法定義:開發者在調試代碼的時候,如果想查看某個方法的定義,但又不想跳轉到方法所在的類,那麼就可以使用快捷鍵”Command+Y”在當前頁面上對指定方法進行預覽

  • 拆分窗口:通常情況下,在編輯界面只有一個界面,通過窗口拆分,可以同時展示更多的界面,在菜單欄中選擇Window->Editor Tabs->Split vertical\horizontal,這樣就可以在整個編輯區域顯示多個編輯界面
  • 相關文件:對於Activity來說,通常都有與之對應的XML佈局文件,這些佈局文件作爲Activity的相關文件會被標記在類的最前面,點擊這個標記就可以關聯到相應的XML文件

  • 查找快捷鍵:在下拉框中,Android Studio內置了各個平臺的快捷鍵模板,通過切換可以找到相應的平臺,找到需要查找的快捷鍵,記住其名稱,再切換回自己系統的快捷鍵,通過名稱找到對應的快捷鍵即可,而且在旁邊的輸入框中,Android Studio提供了通過輸入按鍵進行快捷鍵查找的方式,非常方便


快速重構

重構入口

當選擇一個代碼片段準備重構時,Android Studio提供一個快捷的重構入口

通過快捷鍵”Control+T”可以打開這個重構的入口,或者通過單擊鼠標右鍵,選擇”Refactor”調出這個界面


Sorround With

在開發中,開發者經常要對某行代碼進行重構,例如增加判空的if條件,或者是增加try catch,那麼可以使用快捷鍵”Command+Option+T”來進行操作,當執行這個快捷鍵之後,選擇相應的Surround類型,就可以快速將該Surround類型作用到選擇的代碼上


快速提示

通過快捷鍵”Option+Enter”可以迅速調出快速提示,例如當一行代碼寫完,還差一個分號時,通過快捷鍵”Option+Enter”快速提示,Android Studio可以快速幫你補全分號、換行,並格式化該行代碼。再例如,你可以先寫一個還未生成的方法,通過快捷鍵”Option+Enter”快速提示來讓Android Studio幫你生成這個方法

再例如,開發者有時候會在代碼中寫一些if…else if…這樣的條件判斷語句,但是在重構的時候,你很可能想把它換成switch語句,那麼通過Android Studio的快速提示,這樣的轉換就是完全智能的,只要在if上使用”Option+Enter”快速提示即可


快速國際化

在項目中進行國際化,是通過建立不同語言的strings.xml文件來實現的,在Android Studio中提供了translation editor幫助開發者快速創建國際化文件

要使用這個功能,開發者只需要打開string.xml文件,打開右上角的提示”Open editor”,即可打開translation editor,在translation editor中,選擇左上角的”地球”圖標即可打開資源國際化選擇器

選擇相應的語言,即可在目錄下產生該語言對應的資源文件


Extract的妙用

Extract在重構代碼時是非常有用的,例如將一段重複的代碼抽出來作爲一個方法

通過Extract Method,可以將一個代碼段抽出作爲一個方法,並且可以設置該方法的訪問類型

在Extract還可以抽取XML文件中的屬性作爲Style,供其他View複用,那麼直接在這個View的XML佈局代碼中,執行Extract-Style

在彈出的界面中設置抽取的Style的名字和要抽取的屬性即可

Extract不僅可以抽取Style,還可以抽取佈局Layout,使用方法基本一致,這裏就不再演示了,在代碼中,Extract可以提取各種變量、參數、常量


Stucturally Search是Android Studio中一個非常重要的功能,通過Find Action方法,可以快速打開該功能

Stucturally Search界面

在編輯區域,開發者可以編輯各種要搜索的代碼,而最關鍵的是,可以使用$xxx$標誌進行匹配搜索,通過這樣的搜索就能找到initViews的方法在哪個地方使用


代碼模板

內置模板

Android Studio跟Eclipse一樣,內置了很多代碼的快速輸入模板,例如Eclipse的——syso,Android Studio同樣有很多這樣的代碼模板,在代碼編寫過程中,只需要使用快捷鍵”Command+J”就可以調出這些代碼模板

例如”fori”代表快捷輸入for循環,”ifn”代表快捷輸入”if null”,等等,當然你還可以增加自己的代碼模塊

在設置中找到Live Templates標籤,即可找到所有的代碼模板,這裏以Log的快捷板爲例


後綴模板

前面提到使用”Command+J”調出內置代碼模板,同樣也給出了一些非常常用的類提供了通過後綴的方式來調出代碼模板,例如要給一個List寫一個遍歷語句,其實並不需要通過內置模板來實現,直接在List後面跟上”.for”,即可快速打開foreach遍歷語句

另外,還可以使用”.cast”來快速生成類型轉換模板


自定義代碼註釋模板

方法註釋

在Android Studio中,系統給開發者提供了默認的方法註釋模板在方法名上一行輸”/**”,再按Enter鍵確認,即可獲取方法的註釋代碼

但和Android一樣,Android Studio也提供了強大的自定義功能,首先需要打開設置,選擇Live Templates,接下來點擊右邊欄的加號,選擇增加一個Template Group,並在該Group下新增一個Template

選中”ma”自定義註釋模板,在下方編輯區域中進行註釋代碼的編輯

其中使用$符號包裹的即爲變量,可以通過右邊的按鈕”Edit variable”來進行修改 

這裏給變量date提供了date()函數的賦值,即獲得當前系統時間,並動態賦值給變量,最後,點擊下方的change連接,選擇在何時對該註釋進行生效

一般來說,選擇Declaration即可,表名在申明時即生效,通過這樣的配置後,在方法前輸入”ma”即可彈出該模板,按Enter鍵後確認輸入


文件、類註釋

當系統生成一個類、接口等文件時,系統會默認生成一些代碼和註釋

和方法註釋一樣,開發者對這些註釋同樣可以完全自定義,首先,進入設置界面,選擇”File and Code Templates”即可打開代碼註釋模板界面

接下來,選擇Include標籤,這裏的模板,類似於在佈局文件中被Include進來的佈局,即一些通用模板,例如筆者配置的兩個模板

有了這兩個相同模板,開發者就可以組合這些模板來創建新的完整的類、文件模板。例如在File標籤新創建一個模板文件,命名MyClass並設置代碼模板

使用起來也非常簡單,只需要單擊鼠標右鍵選擇New的時候,選擇自定義的模板代碼即可

選擇相應的模板後,生成的代碼

有了這個實例,大家還可以創建更多的模板,例如筆者創建的MyActivity模板

生成的代碼

舉一反三,筆者在這裏再舉一個單例模板

生成的代碼


代碼分析

在Android Studio中,Google還提供了很多代碼分析工具,這些工具都集中在Android Studio的Analyze菜單中


Inspect Code&&Code Cleanup

通過Inspect Code功能,可以讓IDE分析整個工程,類似於Android的Lint分析

可見,Inspect Code不僅提供了Lint的檢測功能,還提供了一些其他的代碼靜態分析結果,同時給出了大致的修改意見,你也可以選擇Code Cleanup功能來進行自動的代碼修復,這兩個功能可以在Analyze菜單中找到


Dependencies

在Analyze菜單中,有幾個Dependencies選項,通過這幾個選項,可以快速分析項目的Dependencies依賴


Analyze Data flow

這個功能用的不是很多,但是在某寫情況下,對於熟悉舊的代碼非常有幫助,它可以追蹤數據流,瞭解該數據變量的來龍去脈,可以通過Dataflow from local variable的結果和Dataflow to local variable的結果顯示出來


方法調用棧

在Android Studio中通過快捷鍵”Control+Option+H”可以快速找到該方法的調用棧


在Android Studio中進行版本管理

除了使用Android Studio自帶的終端進行Git操作,Android Studio還提供了對Git的直接支持,在任意一個界面上單擊鼠標右鍵即可彈出相應的Git操作

類似於Source Tree的圖形界面

同時,Android Studio本地也有一套自己的版本記錄系統,在任意文件處單擊鼠標右鍵選擇Local History-show history即可

在這裏可以看到開發者對該文件的操作版本記錄

對Git的設置,可以在設置裏面搜索Git即可

一旦該文件被納入Git版本管理,文件的顏色會變成對應狀態的顏色

紅色表示未被納入的新文件,綠色表示已經Add到暫存區的文件,在主界面的VCS菜單選項中,幾乎包含了所有的Git操作

Android Studio也內置了Github的支持,選擇VCS-Import into Version Control-Share Project on Github,即可一鍵將項目上傳到Github


3.3 Android Studio新功能

項目模板

Android Studio在創建Android項目的時候,會讓開發者選擇自帶的項目模板

開發者可以根據系統自帶的模板,在Android Studio安裝目錄的~/plugins/android/lib/templates目錄下創建自定義模板


ThemeEditor

在新版的Android Studio中,當打開一個主題文件時,系統會提示開發者在editor進行編輯

這個editor就是Android Studio的新功能——Theme Editor,打開後的界面如圖

這裏Android Studio對主題設置進行了可視化編輯,修改設置馬上就能看到顯示效果


Image Asset&&Vector Asset

Image Asset和Vector Asset是Android Studio中新增的功能,可以幫助開發者快速的創建不同分辨率的圖像和SVG文件

要使用這個功能,可以在res資源目錄下單擊鼠標右鍵,選擇New

單擊Image Asset,選擇相應的圖片並命名,點擊next即可自動生成所有分辨率的圖片,同時Image Asset還提供了很多圖片的處理選項,開發者可以根據自己的需要設置

如果選擇Vector Asset,則會彈出下面的圖

如果開發者選擇Material Icon,點擊Icon圖標,就會調出Android Studio的內置SVG圖片

開發者可以在Android Studio提供的大量SVG圖片中選擇自己需要的圖片,點擊OK後,即可生成相應的SVG XML文件

另外開發者也可以選擇加載本地的SVG圖片

點擊Next後,即可生成相應的SVG XML文件


Android Monitor

Android Monitor類似於Eclipse上用的DDMS工具,但是Android Monitor的功能更加強大

該工具提供了Logcat、Memory、CPU、GPU、NetWork的實時分析工具,可以讓開發者在開發過程中瞭解App的運行情況


Instant Run

該功能可以說是Android Studio最引人矚目的一個新功能,開啓該功能後,Android Studio將以插件補丁的形式更新App,提供App的調試速度,要開啓這個功能,只需要在設置中設置Enable Instant Run即可

接下來,在第一次全編譯項目運行之後,啓動和調試按鈕旁邊將多出一個閃電標識,如果開發者再對項目有更改,那麼點擊帶閃電標識的啓動或調試按鈕,就可以非常快的應用修改,顯示修改後的程序


Productivity Guide

Productivity Guide是一個非常有意思的功能,打開Help菜單,就可以打開這個功能

打開之後,整個界面如圖

這裏可以顯示開發者本次使用Android Studio的總時間、活動時間、已經使用的快捷鍵次數、代碼提示次數等統計信息


3.4 Android Studio插件

Android Studio繼承了Eclipse的插件化思想,因此它擁有非常多插件,開發者可以在網站上找到 Android Studio插件http://plugins.jetbrains.com/?androidstudio


Ignore

該插件的功能如它名字一樣,就是爲了給Git項目生成最合適的ignore文件

在任意文件上單擊鼠標右鍵選擇New,選擇.ignore file選項,選擇gitignore file(Git)

選擇後會彈出新的界面,選擇Android即可


自動生成代碼類插件

  • ButterKnife:在代碼中的佈局文件上單擊鼠標右鍵,選擇Generate-Generate ButterKnift就可以自動生成ButterKnife所需要的註解文件
  • Selector:可以講一個drawable文件夾下的圖像,自動生成對應的drawable Selector,只要文件名符合安裝要求的規範即可
  • Gson:將一段json生成所需要的Gson實體
  • Parcelable:可以自動生成Parcelable接口所需要的代碼
  • ViewHolder:可以在getView方法中根據佈局文件ID,快速生成對應的ViewHolder
  • Prettify:可以根據Layout自動生成該Layout中的View在Java中的findViewById代碼

主題插件

Android Studio默認只提供了兩種主題,即默認主題與Darcula主題,開發者通常都想定義自己的主題,那麼下面這個插件就可以完成你的願望,http://color-themes.com

下載好主題jar文件後,只需要在 Android Studio中選擇File-Import Settings

、

在彈出的菜單中選擇要導入jar文件,最後系統提示重啓 Android Studio,主題安裝完畢,在設置的Editor-Colors&Font選項中就可以找到安裝的主題了


3.5 Android Studio資源網站


附錄


總結

這一章節對於我使用了很久的Android Studio都有一個些新的認識,想想也是,如果沒有新的認識自己就是大牛了,哈哈哈。這篇文章篇幅很長,主要是圖片佔的地方很多,可以說是標準的圖文消息了,閱讀起來很輕鬆,我都堅持下來,何況你們呢,加油

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章