一個優秀的Android應用從建項目開始

7n5e 9年前發布 | 39K 次閱讀 Android Android開發 移動開發

1.項目結構

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

  • app——Application Activity Fragment Presenter等的頂級父類
  • config——API,常量表等
  • model——數據層

    • bean——數據模型
    • </ul> </li>

    • presenter——MVP的P
    • view——MVP的V
    • utils——工具類集合
    • widget——各個可復用View集合
    • </ul>

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

      • app
      • config
      • model

        • bean
        • </ul> </li>

        • module——將界面層以功能模塊分配包。

          • launch
          • main
          • account
          • news
          • music
          • ……
          • </ul> </li>

          • utils
          • widget
          • </ul>

            2.配置主題

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

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

            <resources>
                <color name="Orange">#ff5722</color>
                <color name="DeepPurple">#673AB7</color>
                <color name="DeepPurple900">#311B92</color>
                <color name="White">#fff</color>
                <color name="Gray">#888888</color>
                <color name="Gray100">#dddddd</color>
                <color name="Gray600">#999999</color>
            </resources>

            注意color.xml是配色表。應該是描述顏色而不是對字體顏色,背景顏色等的定義。這樣能防止相近的顏色重復定義。而導致界面顏色不統一。

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

            <style name="AppTheme.Base" parent="Theme.AppCompat.Light.NoActionBar">
                <!-- Customize your theme here. -->
                <item name="colorPrimary">@color/DeepPurple</item>
                <item name="colorPrimaryDark">@color/DeepPurple900</item>
                <item name="colorAccent">@color/Orange</item>
            </style>
            <style name="AppTheme" parent="AppTheme.Base"></style>

            在res目錄下,創建一個values-v21目錄,再創建一個style.xml:

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

            然后在AndroidManifest.xml文件中修改application的theme屬性為上面定義的AppTheme.即可實現沉浸式狀態欄。

            然后關于Theme與Toolbar的詳細設置參考我另兩篇博客:

            http://www.cnblogs.com/Jude95/p/4369816.html

            http://www.cnblogs.com/Jude95/p/4370176.html </div>

            3.依賴庫與SDK

            必選的庫:

            gradle-retrolambda ——Android的lambda表達式插件

            fresco ——Android最屌圖片加載庫

            material-dialogs ——Material Dialog向下兼容庫

            material-ripple ——Ripple向下兼容庫

            fastjson ——最快JSON解析

            butterknife ——View注解庫和配套插件 android-butterknife-zelezny

            ActiveAndroid ——數據庫注解庫。

            compile 'com.android.support:design:22.2.0'——谷歌Material Design控件庫

            </div>

            下面安利幾個自己寫的庫,如果有什么建議歡迎交流:

            Utils ——Android各種小功能集合

            RollViewPager ——自動輪播使用方便的ViewPager

            EasyRecyclerView ——支持下拉上拉刷新等功能全面的RecyclerView

            RequestVolly ——僅僅是讓Volly方便一點

            </div>

            嘗試了很多,這幾個是現在常用的。

            融云 ——即時通訊

            友盟 ——數據統計,推送,意見反饋,自動更新,第三方分享及登錄,社區

            七牛 ——云存儲

            Mob ——短信驗證

            Bmob ——做后臺不求人

            </div>

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

            4.配置Gradle

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

            Properties props = new Properties()
            props.load(new FileInputStream(file("signing.properties")))
            android {
                signingConfigs {
                    release{
                        keyAlias props['KEY_ALIAS']
                        keyPassword props['KEY_PASSWORD']
                        storeFile file(props['KEYSTORE_FILE'])
                        storePassword props['KEYSTORE_PASSWORD']
                    }
                }
                buildTypes {
                    release {
                        signingConfig signingConfigs.release
                    }
                    debug {
                        signingConfig signingConfigs.release
                    }
                }
            }

            在app的gradle文件同級目錄新建signing.properties文件,里面填入你的key的相應信息

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

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

            5.制定開發規范

            為了避免合作開發寫的代碼風格迥異。或做出了多套開發模式。下面是個例子。畢竟是為了高效開發而制定的。適合自己項目的才是最好。

            所有Activity繼承BaseActivity

            所有Fragment繼承BaseFragment

            所有Presenter繼承BasePresenter

            這樣利于生命周期管理。也可以方便的全局修改。

            命名,例

            AccountFragment
            UserDetailActivity </div>

            layout命名,例

            activity_collection
            fragment_account
            item_person
            include_toolbar
            view_progress

            不過對于龐大項目的開發。近百個activity開頭的layout列表還是會眼瞎。所以那種情況會在前面加上模塊名。

            </div>

            id命名,例

            btn_send
            tv_name
            list_persons
            et_password

            然后用butterknife的插件生成變量會自動將下劃線變成駝峰命名

            </div>

            變量命名:以m開頭。例mAdapter使用時按一個m全都出來了

            方法命名:與其寫好名字不如寫好注釋。= =。

            </div>

            TextView使用官方標準字體

            TextView.png
            </div>

            style="@style/TextAppearance.AppCompat.Display4"
            style="@style/TextAppearance.AppCompat.Display3"
            style="@style/TextAppearance.AppCompat.Display2"
            style="@style/TextAppearance.AppCompat.Display1"
            style="@style/TextAppearance.AppCompat.Headline"
            style="@style/TextAppearance.AppCompat.Title"
            style="@style/TextAppearance.AppCompat.Subhead"
            style="@style/TextAppearance.AppCompat.Body2"
            style="@style/TextAppearance.AppCompat.Body1"
            style="@style/TextAppearance.AppCompat.Caption"
            style="@style/TextAppearance.AppCompat.Button"

            Button使用Material Design標準樣式

            Button.png
            </div>

            style="@style/Widget.AppCompat.Button"
            style="@style/Widget.AppCompat.Button.Borderless"
            style="@style/Widget.AppCompat.Button.Borderless.Colored"
            style="@style/Widget.AppCompat.Button.Small"

            定好網絡請求寫法。文件存儲方式與位置。寫好項目所使用的類庫框架用法。

            好了,下面就開始正式開發吧!如果有什么建議歡迎交流。本文也會即時修改。

            原文 http://www.jianshu.com/p/d9e4ddd1c530

             本文由用戶 7n5e 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
             轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
             本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!