自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

一個(gè)優(yōu)秀的Android應(yīng)用從建項(xiàng)目開(kāi)始

移動(dòng)開(kāi)發(fā)
有句話叫實(shí)踐出真知。往往一件事在做得過(guò)程當(dāng)中能學(xué)到很多的知識(shí)。想成為優(yōu)秀程序員的你,還不來(lái)看看這些前人的經(jīng)驗(yàn)?

[[142392]]

1.項(xiàng)目結(jié)構(gòu)

現(xiàn)在的MVP模式越來(lái)越流行。就默認(rèn)采用了。
如果項(xiàng)目比較小的話:

  • app——Application Activity Fragment Presenter等的***父類(lèi)
  • config——API,常量表等
  • model——數(shù)據(jù)層
    • bean——數(shù)據(jù)模型
  • presenter——MVP的P
  • view——MVP的V
  • utils——工具類(lèi)集合
  • widget——各個(gè)可復(fù)用View集合

如果項(xiàng)目比較大,上面的方式一定會(huì)造成presenter和view里近百個(gè)文件??聪寡巯盗?。推薦下列方式:

  • app
  • config
  • model
    • bean
  • module——將界面層以功能模塊分配包。
    • launch
    • main
    • account
    • news
    • music
    • ……
  • utils
  • widget

2.配置主題

對(duì)于不遵守Material Design的項(xiàng)目無(wú)視這一步。

1.先在color.xml中寫(xiě)好需要的顏色:

  1. <resources> 
  2.     <color name="Orange">#ff5722</color> 
  3.     <color name="DeepPurple">#673AB7</color> 
  4.     <color name="DeepPurple900">#311B92</color> 
  5.     <color name="White">#fff</color> 
  6.     <color name="Gray">#888888</color> 
  7.     <color name="Gray100">#dddddd</color> 
  8.     <color name="Gray600">#999999</color> 
  9. </resources> 

注意color.xml是配色表。應(yīng)該是描述顏色而不是對(duì)字體顏色,背景顏色等的定義。這樣能防止相近的顏色重復(fù)定義。而導(dǎo)致界面顏色不統(tǒng)一。

2.在style.xml里定義主題:

  1. <style name="AppTheme.Base" parent="Theme.AppCompat.Light.NoActionBar"
  2.     <!-- Customize your theme here. --> 
  3.     <item name="colorPrimary">@color/DeepPurple</item> 
  4.     <item name="colorPrimaryDark">@color/DeepPurple900</item> 
  5.     <item name="colorAccent">@color/Orange</item> 
  6. </style> 
  7.  
  8. <style name="AppTheme" parent="AppTheme.Base"></style> 

在res目錄下,創(chuàng)建一個(gè)values-v21目錄,再創(chuàng)建一個(gè)style.xml:

  1. <style name="AppTheme" parent="AppTheme.Base"
  2.     <item name="android:windowDrawsSystemBarBackgrounds">true</item> 
  3.     <item name="android:statusBarColor">?colorPrimaryDark</item> 
  4. </style> 

然后在AndroidManifest.xml文件中修改application的theme屬性為上面定義的AppTheme.即可實(shí)現(xiàn)沉浸式狀態(tài)欄。

然后關(guān)于Theme與Toolbar的詳細(xì)設(shè)置參考我另兩篇博客:
http://www.cnblogs.com/Jude95/p/4369816.html
http://www.cnblogs.com/Jude95/p/4370176.html

3.依賴庫(kù)與SDK

必選的庫(kù):
gradle-retrolambda——Android的lambda表達(dá)式插件
fresco——Android最屌圖片加載庫(kù)
material-dialogs ——Material Dialog向下兼容庫(kù)
material-ripple——Ripple向下兼容庫(kù)
fastjson——最快JSON解析
butterknife——View注解庫(kù)和配套插件android-butterknife-zelezny
ActiveAndroid——數(shù)據(jù)庫(kù)注解庫(kù)。
compile 'com.android.support:design:22.2.0'——谷歌Material Design控件庫(kù)

下面安利幾個(gè)自己寫(xiě)的庫(kù),如果有什么建議歡迎交流:
Utils——Android各種小功能集合
RollViewPager——自動(dòng)輪播使用方便的ViewPager
EasyRecyclerView——支持下拉上拉刷新等功能全面的RecyclerView
RequestVolley——僅僅是讓Volley方便一點(diǎn)

嘗試了很多,這幾個(gè)是現(xiàn)在常用的。
融云——即時(shí)通訊
友盟——數(shù)據(jù)統(tǒng)計(jì),推送,意見(jiàn)反饋,自動(dòng)更新,第三方分享及登錄,社區(qū)
七牛——云存儲(chǔ)
Mob——短信驗(yàn)證
Bmob——做后臺(tái)不求人

依賴這一大堆庫(kù)和SDK以后。建議在合適的時(shí)機(jī)初始化他們,而不是全堆在Application的onCreate()里面。這樣會(huì)導(dǎo)致啟動(dòng)時(shí)間過(guò)長(zhǎng)。啟動(dòng)后也會(huì)較卡。雖然是不會(huì)影響功能正常使用。

4.配置Gradle

某些SDK運(yùn)行時(shí)需要檢查簽名是否正確。所以在debug模式時(shí)也必須用正式KEY簽名。而把簽名放進(jìn)版本控制不是明智的做法。所以推薦下面的做法:
在app的gradle加入下面代碼

  1. Properties props = new Properties() 
  2. props.load(new FileInputStream(file("signing.properties"))) 
  3. android { 
  4.     signingConfigs { 
  5.         release{ 
  6.             keyAlias props['KEY_ALIAS'
  7.             keyPassword props['KEY_PASSWORD'
  8.             storeFile file(props['KEYSTORE_FILE']) 
  9.             storePassword props['KEYSTORE_PASSWORD'
  10.         } 
  11.     } 
  12.     buildTypes { 
  13.         release { 
  14.             signingConfig signingConfigs.release 
  15.         } 
  16.         debug { 
  17.             signingConfig signingConfigs.release 
  18.         } 
  19.     } 

在app的gradle文件同級(jí)目錄新建signing.properties文件,里面填入你的key的相應(yīng)信息

  1. KEYSTORE_FILE = C:\\Users\\Mr.Jude\\Documents\\Android\\HelloWorld.jks 
  2. KEYSTORE_PASSWORD = xxxxxx 
  3. KEY_ALIAS = xxxxxx 
  4. KEY_PASSWORD = xxxxxx 

將signing.properties添加進(jìn)忽略目錄。
其他人pull下來(lái)代碼后。自己新建signing.properties填入相應(yīng)信息后即可編譯成功。

5.制定開(kāi)發(fā)規(guī)范

為了避免合作開(kāi)發(fā)寫(xiě)的代碼風(fēng)格迥異。或做出了多套開(kāi)發(fā)模式。下面是個(gè)例子。畢竟是為了高效開(kāi)發(fā)而制定的。適合自己項(xiàng)目的才是***。
所有Activity繼承BaseActivity
所有Fragment繼承BaseFragment
所有Presenter繼承BasePresenter
這樣利于生命周期管理。也可以方便的全局修改。
命名,例
AccountFragment
UserDetailActivity

layout命名,例
activity_collection
fragment_account
item_person
include_toolbar
view_progress
不過(guò)對(duì)于龐大項(xiàng)目的開(kāi)發(fā)。近百個(gè)activity開(kāi)頭的layout列表還是會(huì)眼瞎。所以那種情況會(huì)在前面加上模塊名。

id命名,例
btn_send
tv_name
list_persons
et_password
然后用butterknife的插件生成變量會(huì)自動(dòng)將下劃線變成駝峰命名

變量命名:以m開(kāi)頭。例mAdapter使用時(shí)按一個(gè)m全都出來(lái)了
方法命名:與其寫(xiě)好名字不如寫(xiě)好注釋。= =。

TextView使用官方標(biāo)準(zhǔn)字體

TextView.png
  1. style="@style/TextAppearance.AppCompat.Display4" 
  2. style="@style/TextAppearance.AppCompat.Display3" 
  3. style="@style/TextAppearance.AppCompat.Display2" 
  4. style="@style/TextAppearance.AppCompat.Display1" 
  5. style="@style/TextAppearance.AppCompat.Headline" 
  6. style="@style/TextAppearance.AppCompat.Title" 
  7. style="@style/TextAppearance.AppCompat.Subhead" 
  8. style="@style/TextAppearance.AppCompat.Body2" 
  9. style="@style/TextAppearance.AppCompat.Body1" 
  10. style="@style/TextAppearance.AppCompat.Caption" 
  11. style="@style/TextAppearance.AppCompat.Button" 

Button使用Material Design標(biāo)準(zhǔn)樣式

Button.png
  1. style="@style/Widget.AppCompat.Button" 
  2. style="@style/Widget.AppCompat.Button.Borderless" 
  3. style="@style/Widget.AppCompat.Button.Borderless.Colored" 
  4. style="@style/Widget.AppCompat.Button.Small" 

定好網(wǎng)絡(luò)請(qǐng)求寫(xiě)法。文件存儲(chǔ)方式與位置。寫(xiě)好項(xiàng)目所使用的類(lèi)庫(kù)框架用法。

好了,下面就開(kāi)始正式開(kāi)發(fā)吧!

責(zé)任編輯:倪明 來(lái)源: 簡(jiǎn)書(shū)
相關(guān)推薦

2015-08-24 11:03:14

android建項(xiàng)目

2014-10-21 10:25:50

程序員

2024-04-15 12:54:00

ReactVue列表邏輯

2016-09-26 17:26:20

2017-05-08 14:27:49

PHP框架函數(shù)框架

2013-07-01 11:01:22

API設(shè)計(jì)API

2009-05-13 09:20:12

Google App 應(yīng)用收費(fèi)

2015-03-19 14:50:27

編程拖拽編程合格程序員

2023-05-05 11:42:21

2009-05-20 09:49:15

2019-09-03 11:32:36

PythonLinux操作系統(tǒng)

2021-04-11 09:00:13

Fes.js前端

2012-06-04 18:02:56

社區(qū)

2020-04-07 15:12:07

微服務(wù)架構(gòu)數(shù)據(jù)

2021-06-08 07:32:01

框架Mock測(cè)試

2022-03-14 10:02:03

散列表鏈表哈希表

2014-01-26 14:24:25

開(kāi)源項(xiàng)目

2022-03-24 14:58:02

Java散列表編程語(yǔ)言

2013-08-15 10:00:07

產(chǎn)品產(chǎn)品經(jīng)理優(yōu)秀的產(chǎn)品

2013-05-14 09:57:37

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)