https://learnui.design/blog/ios-vs-android-app-ui-design-complete-guide.html
<what>_<where> (snake_case)
what | where | sample |
---|---|---|
activity | Content View of Activity | activity_splash.xml |
fragment | View of Fragment | fragment_product_detail.xml |
dialog | View of Dialog | dialog_new_year_promotion.xml |
item | Layout of RecyclerView/ListView/GridView's item | item_order_summary.xml |
view | Layout of Custom Views | view_counter.xml |
layout | xml included layouts | layout_no_result.xml |
<what>_<description> (camelCase)
what | description | sample |
---|---|---|
textView | welcome message | tvWelcome |
button | add to favorite | btnAddFavorite |
recyclerView | size option list | rvSelectSize |
relativeLayout | main container of dialog | rlContainer |
layout | included layout for no result | layoutNoResult |
imageView | user profile image | ivAccountProfile |
swipeRefreshLayout | refresh product listing | srlProductList |
<what>_<where>_<description>_<variant> (snake_case)
what | where | description | variant (optional) | sample |
---|---|---|---|---|
icon | catogory menu | no result | - | ic_category_menu_no_result.xml |
icon | everywhere | info | - | ic_common_info.xml |
shape | everywhere | button background | orange | bg_common_button_orange.xml |
icon | everywhere | search | black 24dp | ic_common_search_black_24dp.xml |
selector | search result | campaign tag | - | selector_search_result_campaign.xml |
<what>_<where>_<size> (snake_case)
what | where (optional) | size (optional) | sample |
---|---|---|---|
padding | - | 16dp | padding_16dp |
margin | - | 8dp | margin_8dp |
text size | - | medium | text_size_medium |
size | catogory menu image | - | size_category_menu_image |
height | similar product item | - | height_similar_product_item |
radius | common card view | - | radius_card_view |
Element | Field Name Prefix |
---|---|
SharedPreferences | PREF_ |
Bundle | BUNDLE_ |
Fragment Arguments | ARGUMENT_ |
Intent Extra | EXTRA_ |
Intent Action | ACTION_ |
- Android related files:
***Activity.java
,***Fragment.java
,***BroadcastReceiver.java
,***Service.java
,***Dialog.java
, and etc. i.e:NoteDetailsActivity.java
,NoteDetailsFragment.java
, orMusicPlayerService.java
. - Utils: Multiple specific utility files are better than one general one. We may have
TimeUtils.java
,StringUtils.java
,ViewUtils.java
,NetworkUtils.java
instead of only one hugeUtility.java
.
styles содержит стили для элементов следует задавать по общему правилу [{View}].{Цвет}.{Шрифт}.{Размер} например <style name="TextView.Grey.Regular.14.Link">
<style name="TextView.Grey.Regular" parent="android:Widget.TextView">
<item name="android:fontFamily">@font/sf_pro_display_regular</item>
<item name="android:textColor">@color/colorGreyText</item>
</style>
<style name="TextView.Grey.Regular.14">
<item name="android:textSize">@dimen/font_14</item>
</style>
<style name="TextView.Grey.Regular.14.Link">
<item name="android:gravity">center</item>
<item name="android:textColorHighlight">@android:color/transparent</item>
</style>
- companion object
- Поля: abstract, override, public, internal, protected, private
- Блок инициализации: init, конструкторы
- Абстрактные методы
- Переопределенные методы родительского класса(желательно в том же порядке, в каком они следуют в родительском классе)
- Реализации методов интерфейсов(желательно в том же порядке, в каком они следуют в описании класса, соблюдая при этом порядок описания этих методов в самом интерфейсе)
- public методы
- internal методы
- protected методы
- private методы
- inner классы
#Использование условных операторов
Не обрамлять if
выражения в фигурные скобки только если условный оператор if
помещается в одну строку.
При возможности использовать условные операторы, как выражение:
return if (condition) foo() else bar()
У оператора when
для коротких выражениях ветвей условия размещать их на одной строке с условием без фигурных скобок:
when (somenCondition) {
0 -> fooFunction()
1 -> barFunction()
else -> exitFunction()
}
У оператора when
для блоков с выражениями, которые состоят более чем из одной строки использовать для этих блоков фигурные скобки и отделять смежные case-блоки пустой строкой. Ексли последний
блок состоит из одной строки его можно не обрамлять скобками.
when (feed.type) {
FeedType.PERSONAL -> {
with(feed as PersonalFeed) {
datePopupStart = dateBegin
datePopupEnd = dateEnd
}
}
FeedType.SUM -> {
with(feed as SumFeed) {
datePopupStart = dateBegin
datePopupEnd = dateEnd
}
}
FeedType.CARD -> {
with(feed as CardFeed) {
datePopupStart = dateBegin
datePopupEnd = dateEnd
}
}
else -> Feed.EMPTY
}