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

一個優(yōu)秀的Android應用從建項目開始

移動開發(fā)
項目大小,構建的思路都會不一樣??靵砜纯磩e人是怎么起步的!

[[146519]]

1.項目結構

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

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

如果項目比較大,上面的方式一定會造成presenter和view里近百個文件。看瞎眼系列。推薦下列方式:

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

2.配置主題

對于不遵守Material Design的項目無視這一步。

1.先在color.xml中寫好需要的顏色:

  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是配色表。應該是描述顏色而不是對字體顏色,背景顏色等的定義。這樣能防止相近的顏色重復定義。而導致界面顏色不統(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)建一個values-v21目錄,再創(chuàng)建一個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.即可實現(xiàn)沉浸式狀態(tài)欄。

然后關于Theme與Toolbar的詳細設置參考我另兩篇博客:
http://www.cnblogs.com/Jude95/p/4369816.html
http://www.cnblogs.com/Jude95/p/4370176.html

3.依賴庫與SDK

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

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

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

依賴這一大堆庫和SDK以后。建議在合適的時機初始化他們,而不是全堆在Application的onCreate()里面。這樣會導致啟動時間過長。啟動后也會較卡。雖然是不會影響功能正常使用。

4.配置Gradle

某些SDK運行時需要檢查簽名是否正確。所以在debug模式時也必須用正式KEY簽名。而把簽名放進版本控制不是明智的做法。所以推薦下面的做法:
在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文件同級目錄新建signing.properties文件,里面填入你的key的相應信息

  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添加進忽略目錄。
其他人pull下來代碼后。自己新建signing.properties填入相應信息后即可編譯成功。

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

為了避免合作開發(fā)寫的代碼風格迥異?;蜃龀隽硕嗵组_發(fā)模式。下面是個例子。畢竟是為了高效開發(fā)而制定的。適合自己項目的才是***。
所有Activity繼承BaseActivity
所有Fragment繼承BaseFragment
所有Presenter繼承BasePresenter
這樣利于生命周期管理。也可以方便的全局修改。
命名,例
AccountFragment
UserDetailActivity

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

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

變量命名:以m開頭。例mAdapter使用時按一個m全都出來了
方法命名:與其寫好名字不如寫好注釋。= =。

TextView使用官方標準字體

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標準樣式

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)絡請求寫法。文件存儲方式與位置。寫好項目所使用的類庫框架用法。

 

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

責任編輯:倪明 來源: 簡書
相關推薦

2015-07-28 11:02:15

androidapp開發(fā)

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設計API

2009-05-13 09:20:12

Google App 應用收費

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

微服務架構數(shù)據(jù)

2021-06-08 07:32:01

框架Mock測試

2022-03-14 10:02:03

散列表鏈表哈希表

2014-01-26 14:24:25

開源項目

2022-03-24 14:58:02

Java散列表編程語言

2013-08-15 10:00:07

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

2013-05-14 09:57:37

點贊
收藏

51CTO技術棧公眾號