Google java 스타일 가이드 기준

https://google.github.io/styleguide/javaguide.html

 

  • 패키지명은 모두 소문자 - ex) com.example.deppspace
  • 클래스명은 UpperCamelCase - ex) Example
  • 메소드명은 lowerCamelCase - ex) sendMessage()
  • 상수명은 모두 대문자 단어의 구분은 밑줄 - ex) CONSTANT_CASE
  • 필드명은 lowerCamelCase - ex) computedValues
  • 파라미터명은 lowerCamelCase

1. 리소스 네이밍 규칙

    # drawable

     기본 규칙 : [분류]_[색상]

               ex) ani_sliding_left, select_login, bg_intro_ffffff, bg_rect_5_ffffff_a0ffff_r40

 

       - 분류

유형 축약명 규칙 예시 비고
animation ani [유형]_[목적] ani_loading 애니메이션 정의
selector sel [유형]_[목적]

sel_close

sel_bookmark

 
background bg [유형]_[목적]_[색상] bg_intro 배경
shape rectangle rect bg_[유형]_[테두리 굵기 dp]_[모서리]_[색상] bg_rect_5_ffffff_a0ffff 테두리
shape line line bg_[유형]_[라인 굵기 dp]_[색상] bg_line_2_ff00ff 실선
shape line dash dash bg_[유형]_[라인 굵기 dp]_[색상] bg_dash_ffff00 점선
shape oval oval bg_[유형]_[크기dp]_[색상] bg_oval_4_ff0000 타원
shape ring ring      

        - 색상

         기본 규칙 : [투명도][%]_[색상]

                   ex) a80_ffacee, a40_eeddcc_a80_ffeeec, ffaacc_a60_aaddff

  • 투명도는 alpha의 축약 a를 쓰며, 투명도 %를 표시한다.
  • selector 에서는 [기본 투명도]_[기본 색상]_[눌렀을때 투명도]_[눌렀을때 색상]으로 표시한다.
  • rect 에서는 [배경 투명도]_[배경 색상]_[테두리 투명도]_[테두리 색상]으로 표시한다.
  • 색상이 그라데이션인 경우 [시작 투명도]_[시작 색상]_[중간 투명도]_[중간 색상]_[끝 투명도]_[끝 색상]으로 표시한다.

       - 모서리

 

유형 축약명 규칙 예시 비고
round

r

rt

rb

rtl

rtr

rbl

rbr

[유형][크기 dp]

r30

rt10

rb20

rt10_rb20

rtl10_rtr15_rbl10_rbr15

Radius 표시(단위 dp)

r : 전체

rt : 상단

rb : 하단

rtl : 상단 왼쪽

rtr : 상단 오른쪽

rbl : 하단 왼쪽

rbr : 하단 오른쪽

 

    # layout

유형 축약명 규칙 예시 비고
Activity   activity_[대상] activity_main  
Fragment   fragment_[대상] fragment_coupon  
Item   itme_[대상]_[목적] item_coupon_history  
layout   layout_[대상]

layout_titlebar

layout_dialog

CustomView로 완성된 형태, include 뷰 등

 

2. 뷰 아이디 네이밍(android:id="@+id")

기본 규칙 : [소속]_[소속2]_[대상(역할)]_[뷰명(축약)]

        ex) main_login_btn, coupon_item_title_tv

    # 뷰 컴포넌트 축약

패턴 뷰명 축약
Buttons Button btn
ImageButton ibtn
CheckBox cb
RadioGroup rg
RadioButton rbtn
ToggleButton tbtn
Switch sw
FloatingActionButton fabtn
Widgets View v
ImageView iv
WebView wv
VideoView vv
CalendarView calv
ProgressBar pbr
SeekBar sbr
RatingBar rbr
SearchView scv
TextureView ttv
SufaceView sfv
Layouts ConstraintLayout cl
LinearLayout ll
FramLayout fl
TableLayout tl
Containers Spnner sp
RecyclerView rv
ScrollView sv
HorizontalScrollView hsv
NestedScrollView nsv
ViewPager vp
CardView cv
AppBarLayout abl
NavigationView nv
Toolbar tbr
TabLayout tabl
TabItem tabi
ViewStub vs
Google AdView av
MapView mv
Legacy GridLayout gl
ListView lv
TabHost tabh
RelativeLayout rl
GridView gv
ExpandableListView elv
Gallery gal
ViewFlipper vf
SlidingDrawer sd
DatePicker dp
TimePicker tp
#요약
 - ActivityLifecycleCallbacks : App의 관점에서 본 Activity
 - LifecycleObserver : Lifecycle 대리 수행
 - LifecycleOwner : Lifecycle 커스텀

1. ActivityLifecycleCallbacks
[API level 14]

     App의 Activity의 LifeCycle를 통하여 App의 현재 상태 또는 활성화 되어 있는 Activity를 알 수 있어 상황에 따라 대응 가능. 

     Application에 구현하여 통합 관리 하도록 구성


#Code

public class BaseApplication extends Application {
    private static BaseApplication mInstance = null;
    private AppStatus mAppStatus = AppStatus.FOREGROUND;

    @Override
    public void onCreate() {
        mInstance = this;
        super.onCreate();

        // Activity 라이프 사이클을 탐지하여 포그라운드와 백그라운드 체크
        registerActivityLifecycleCallbacks(new CActivityLifecycleCallbacks());
    }

    public static BaseApplication getInstance() {
        return mInstance;
    }

    @Override
    protected void attachBaseContext(Context base) {
        super.attachBaseContext(base);
    }

    public AppStatus getAppStatus() {
        return mAppStatus;
    }

    public enum AppStatus {
        BACKGROUND,
        RETURNED_TO_FOREGROUND, // 홈 버튼으로 내린후 다시 실행 된 경우, 처음 실행시
        FOREGROUND,
        MEMORY_OUT; // 최근 앱 사용 목록에서 앱이 삭제 되었을 경우
    }

    public class CActivityLifecycleCallbacks implements ActivityLifecycleCallbacks {
        private int running = 0;

        @Override
        public void onActivityCreated(Activity activity, Bundle bundle) {
            CLog.e("APP onActivityCreated === " + activity.getClass().getCanonicalName());
        }

        @Override
        public void onActivityStarted(Activity activity) {
            CLog.e("APP onActivityStarted === " + activity.getClass().getCanonicalName());
            if (++running == 1) {
                mAppStatus = AppStatus.RETURNED_TO_FOREGROUND;
            } else if (running > 1) {
                mAppStatus = AppStatus.FOREGROUND;
           }
        }

        @Override
        public void onActivityResumed(Activity activity) {
            CLog.e("APP onActivityResumed ===" + activity.getClass().getCanonicalName());
        }

        @Override
        public void onActivityPaused(Activity activity) {
            CLog.e("APP onActivityPaused ===" + activity.getClass().getCanonicalName());
        }

        @Override
        public void onActivityStopped(Activity activity) {
            CLog.e("APP onActivityStopped === " + activity.getClass().getCanonicalName());
            if (--running == 0) {
                mAppStatus = AppStatus.BACKGROUND;
            }
        }

        @Override
        public void onActivitySaveInstanceState(Activity activity, Bundle bundle) {
            CLog.e("APP onActivitySaveInstanceState ===" + activity.getClass().getCanonicalName());
        }

        @Override
        public void onActivityDestroyed(Activity activity) {
            CLog.e("APP onActivityDestroyed === " + activity.getClass().getCanonicalName());
            mAppStatus = AppStatus.MEMORY_OUT;
            // 메인 Activity가 Destory 된다는 것은 '최근 앱 사용 목록'에서 지우기를 한것임
        }
    }
}

# 호출

if(BaseApplication.getInstance().getAppStatus() == BaseApplication.AppStatus.BACKGROUND) {
      // TODO
 }



'프로그래밍 > Android Tip' 카테고리의 다른 글

Android 개발 가이드  (0) 2019.12.30
[Android] Aquery Image  (0) 2017.08.07
[Android] Aquery Network  (0) 2017.08.07
[Android] ScrollView In ScrollView  (0) 2017.06.28
[Android] 내부 저장소 경로  (0) 2017.06.28


# Preferences...

 - Appearance & Behavior > Appearance - Window Option에서 Shor memory indicator 체크( 메모리 사용률 확인)

 - Editor > General - Change font size(Zoom) with Command+Mouse Wheel - 체크  : 마우스 휠로 글자 폰트 크기 조정 가능, 눈이 침침해서.

 - Editor > Font - Size > 14

 - Editor > Code Style - Scheme(project, default 동일 적용) - Hard wap at - 999 : 에디터창 가로길이 제한

- Edotpr > Code Style > Java - Wrapping and Braces(Tab) - Hard wrap at - 999 세팅


 - Keymap - Eclipse (Mac OS X) 선택 - 옆 설정아이콘에서 Duplicate하여 복사

   - 정의 바로가기 : Main menu > Navigate > Declaration - Command + 마우스 왼쪽클릭으로 변경

   - 찾기 : Main menu > Edit > Find - Command + F 로 변경

 


## 자주 쓰는 단축키 ##

- 정의 바로가기(Declaration) : Command + 마우스 왼쪽

- 찾기(Find) 변경(Replace) : Command + F (변경으로 찾는게 더 좋음)

- 사용되는 곳 찾기(Find Usages) : Command + Shift + G (대상 블럭 후)

- 파일에서 찾기(Find in Path) : Control + H

- 주석(Comment with Line Comment) : Command + /

- 매서드 찾기(File Structure) : Command + O 

- 라인 이동(Line/Column) : Command + L

- 자동 정렬(Reformat Code) : Command + Shift + F

- 불필요 임포트 삭제(Optimize Imports) : Command + Shift + O

- 자동 임포트 : Command + 1 (대상 선택 후)

- 생성(Generate) : Command + N (getter, setter, override ..)


settings.zip


+ Recent posts