액티비티는 시스템에서 관리하지만 프래그먼트는 액티비티위에 올라가있기때문에 훨씬 가볍게 화면전환 할 수 있다. 프래그먼트 간 통신 프래그먼트는 액티비티 위에서 동작한다. 하나의 액티비티 위에 여러개의 프래그먼트가 존재할때 프래그먼트 끼리 통신을 하고 싶을때는 무조건 액티비티를 거쳐서 통신해야 한다. 직접적으로 프래그먼트들끼리 통신이 불가능하다. 1.액티비티 -> 프래그먼트 통신 간단하다. 액티비티에서 프래그먼트의 참조를 findViewById를 통해서 얻은다음에, 그 프래그먼트의 public 메소드를 호출하면 된다. 2.프래그먼트 -> 액티비티 통신 약간 복잡하다. 마찬가지로, 프래그먼트에서 호스트 액티비티(프래그먼트가 올라가있는)의 메소드를 호출하면 된다. 근데, 프래그먼트 내부에 리스너 인터페이스를 정..
이런식으로 레이아웃을 구성하여 글 작성화면을 만들고자 하는데, 아래와 같이 레이아웃이 오른쪽으로 밀리는 현상이 발생했다.이것을 해결하고자, 여러차례 검색과 삽질을 해보았다.원인은 아래에 나온 코드를 보면 알 수 있다. 툴바 내부에 RelativeLayout이 있는데 이것이 layout_width="match_parent"로 되어 있다. 그런데, 툴바에 백버튼(왼쪽 화살표)가 실행중에 동적으로 생성되는데 이 화살표가 추가되면서 레이아웃이 오른쪽으로 밀리게 되는 것이다. 나와 비슷한 문제를 해결했던 블로그가 있어서 링크를 걸어 놓겠다. 참고 핵심은 툴바 안에 레이아웃을 배치하고 싶을때는 항상 layout_gravity 속성으로만 배치를 해야 한다는것이다. Toolbar라는 것도 결국엔 뷰그룹일 뿐이다. 툴바..
지금 현재 구현하려고 하는 기능은, 네비게이션 드로어이다. ActionBarDrawerToggle 클래스를 이용하여 드로어 토글을 구현했는데 토글버튼을 누르니까 위와 같은 에러메세지가 발생하였다. 원인은 아직 모르지만 검색을 해봤을때 드로어로 사용되는 뷰의 layout_gravity가 right로 설정되어 있는데, ActionBarDrawerToggle클래스의 이벤트처리 메소드인 아래 onDrawerOpend 메소드에서 드로어를 오픈할때public void onDrawerOpened(View drawerView) { super.onDrawerOpened(drawerView); }DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer) ; drawer..
메인 페이지를 개발하는 와중에 coordinatorlayout을 사용하게 되었다. 근데, 이 레이아웃안에서 내부 컨텐츠를 표시하는 레이아웃을 따로 분리한다음 home_activity.xml에 include하는 형식으로 만들었는데, 이렇게 하니까 home_activity.xml 내부 레이아웃들이 겹쳐지는 현상이 발생 하였다.. 수차례 삽질 끝에 결국엔 스택 오버플로우를 검색해본 결과https://stackoverflow.com/questions/35627002/include-a-new-layout-inside-coordinatorlayout-not-working-properly include하려는 xml파일의 최상단 레이아웃에 app:layout_behavior="@string/appbar_scrollin..
링크 1 링크2우선 위의 링크 2개를 반드시 읽어보고 아래 내용을 읽기를 추천한다. 굉장히 정리가 잘 되어 있다. 위의 블로그의 내용을 좀 더 쉽게 정리를 해보겠다. 먼저, 네비게이션 드로어가 무엇인지는 위의 2개의 블로그에서 상세히 설명했으므로 여기서는 생략한다. DrawerLayout이라는것은 폰 상단에 돼지바를 클릭했을때 옆에서 메뉴가 튀어나오는 안드로이드 머티리얼 디자인중 하나이다. 거의 요즘 이 기능을 사용하지 않는 앱이 없을 정도로 자주 사용 되기때문에 꼭 알아둬야 한다. DrawerLayout을 적용하는 방법에는 2가지가 있다.1. 핸드폰 왼쪽 -> 오른쪽 또는 오른쪽 -> 왼쪽으로 밀었을때 나오게 하는 방법.2. 휴대폰 상단 액션바에있는 돼지바(3개의 줄로 되어 있는 아이콘)를 클릭했을때 ..
DP - Density Indepence Pixel 원래는 DIP의 줄임말이 DP이다. DPI - Dot Per Inch1인치당 몇개의 점이 들어가는가?(해상도의 기준 단위)1인치 정사각형에 점이 많이 들어갈수록 해상도가 높은것이다. 안드로이드는 굉장히 개방적인 시스템이기 때문에, 다양한 디바이스가 존재하며 디바이스 별로 해상도가 모두 다르기 때문에 굉장히 다양한 해상도가 존재한다. 이 모든 기기에서 어떤 뷰의 크기를 일정하게 맞춰주게 하기 위해서 안드로이드에서는 DP = DIP 라는 밀도 독립 픽셀이라는 단위를 사용한다. 이 DP 단위를 사용하게 되면 갤럭시에서 사용하던 이미지뷰의 크기가 넥서스폰에서 사용하던 이미지뷰의 크기와 일치하게 만들어 줄 수 있다. 이미지 뷰의 가로 길이를 10dp라고 해보자...
onPreExecute()onProgressUpdate()onPostExecute()onCancelled()위에 나온 4개의 AsyncTask 콜백함수들은 메인쓰레드에서 실행된다. doInBackground()작업쓰레드가 실행되면 수행되는 이 핵심 콜백 함수는 작업 쓰레드에서 별도로 실행 되며, 중간중간 메인쓰레드에 업데이트된 내용을 화면에 출력하게끔 publishProgress()메소드를 호출한다.그럼 메인쓰레드에서 onProgressUpdate()콜백함수가 호출되어 화면에 현재 몇퍼센트 진행 되었다고 표시를 할 수 있게 된다. 메인쓰레드에서는 사용자 반응성이 중요하기 때문에 오래걸리는 작업을 처리하면 안된다. 오래걸리는 작업은 작업 쓰레드로 따로 분리하여 처리해야 한다. 원래 위의 AsyncTask가..
- Total
- Today
- Yesterday
- server side rendering
- mobx
- webpack
- Action
- es6
- reflow
- hydrate
- storybook
- useEffect
- Next.js
- async
- reducer
- react hooks
- javascript
- Babel
- rendering scope
- design system
- return type
- react
- await
- promise
- reactdom
- useRef
- Polyfill
- props
- atomic design
- state
- computed
- typescript
- type alias
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |