'Android/Basic' 카테고리의 글 목록 (2 Page) — SH's Devlog

Android/Basic

Android/Basic

[Android] TextView의 padding 없애기

TextView를 기본적으로 생성하면 padding 때문에 제플린에서 나와있는 TextView의 크기보다 padding값 만큼 큰 크기의 TextView가 생성되어 실제 디자인과는 다르게 View들을 원하는 위치에 둘 수 없을 때가 있다. android:includeFontPadding="false" includeFontPadding 이용하면 View와 text사이의 padding을 제거할 수 있다.

Android/Basic

[Android] Animation 정리

안드로이드에서 애니메이션을 만드는 방법이 여러가지가 존재하는데, 복합적으로 사용하면 다양한 애니메이션을 연출 할 수 있습니다. Translate 애니메이션 translate 애니메이션은 X, Y축으로 이동하게 하는 효과를 줍니다. 속성 설명 예시 fromXDelta X축 시작 지점. % 단위로 설정한다. 0%p -> 현재 view의 위치 toXDelta X축 도착 지점. % 단위로 설정한다. 100%p -> 대상만큼 오른쪽 이동 fromYDelta Y축 시작 지점. % 단위로 설정한다. 0%p -> 현재 view의 위치 toYDelta X축 도착 지점. % 단위로 설정한다. 100%p -> 대상만큼 오른쪽 이동 duration 애니메이션 시간. 단위는 밀리초 2500 -> 2.5초동안 지속 repeatM..

Android/Basic

[Android] Broadcast Receiver

브로드캐스트 인텐트는 주요 시스템 이벤트에 관심 있는 애플리케이션들에게 통지하기 위해 안드로이드 시스템에 의해서 사용된다.(헤드폰 연결이 되거나, 끊어지는 등 주요 시스템 이벤트) FLAG_INCLUDE_STOPPED_PACKAGES : stopped 된 application도 target이 됨. FLAG_EXCLUDE_STOPPED_PACKAGES : stopped 된 application은 target이 되지 않음. override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val intent = Intent() intent.actio..

Android/Basic

[Android] dp to px

레이아웃에서 뷰의 크기와 위치를 설정할 때는 px보다는 dp를 이용하는 것이 좋다. 왜냐하면 dp를 사용하면 큰 화면, 작은 화면에 상관 없이 동일한 비율로 나타내준다. 하지만 자바코드에서는 dp를 사용할 수 없다. 픽셀 값만 인자로 받기도 하지만 가장 큰 이유는 자바 코드에서는 해상도를 모르므로 런타임 시에 해상도에 맞게 dp를 px로 변환하여 사용한다. val resources = resources val px = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 200f, resources.displayMetrics) 200dp를 px로 변환하려면 위에 코드처럼 변환하여 setMargins()나 setWidth()등에 넣어주면 된다.

Android/Basic

[Android] 안드로이드 Intent Flag 정리

Intent flag를 언제 사용하는가? 안드로이드에서 Activity를 호출하다보면 발생하는 Activity의 중복문제나 흐름을 제어해주고 싶을 때 Flag를 사용합니다. Task Task는 Stack 구조로 되어있으며 애플리케이션에서 Activity들을 보관하고 관리합니다. Flag를 사용하는 2가지 방법 1. Manifest에서 Flag 사용 -> launchMode 속성 4가지 standard 이 속성은 별도의 Task를 생성하지 않고 해당 Task에 계속 쌓아나갑니다. Default값은 이 standrd 입니다. singleTop 이 Flag를 Activity에 설정하면 Task의 Top에 생성하려는 Activity가 존재하는 경우 새로운 Activity를 Top에 올리지않고 기존의 Activi..

Android/Basic

[Android] 안드로이드 Looper와 Handler

안드로이드에서의 UI는 기본적으로 싱글스레드 모델로 작동하기 때문에 이러한 영향을 고려해서 개발하지 않으면 성능 저하가 일어날 수 있기 때문에 메인스레드에서의 작업을 최대한 피해야한다. 만약, 긴 시간이 걸리는 작업을 메인스레드에서 작업한다면 애플리케이션의 성능이 저하됨은 물론이고, 지나치게 많은 시간이 걸리는 경우 ANR(Application Not Responding)상태로 전환이 될 수 있다. 따라서 시간이 걸리는 작업을 수행해야 할 때에는 여분의 스레드를 활용하여 메인스레드와 분리해서 작업해야하고 자연스럽게 메인스레드와 다른 스레드가 통신하는 방법이 필요하다. Looper와 Handler의 사용 목적 메인 스레드와 다른 스레드가 어떤 TextView의 setText를 시도한다고 하면 둘 중 어느 ..

Android/Basic

[Android] ViewPager2 + TabLayout 연동

1. xml 작성 기존의 TabLayout 같은 경우에는 TabItem을 넣어주어서 Tab의 요소들을 넣어주었지만 TabLayoutMediator를 사용하므로 TabItem을 넣어주지 않는다. 이유는 TabLayout의 attach() 함수를 호출하면서 populateTabsFromPagerAdapter() 함수에서 어댑터에 있는 데이터들을 통해 Tab의 Item들을 설정해 주게 되는데 removeAllTabs()를 이용해서 그 전에 만들었었던 TabItem들을 모두 없애버리기 때문에 xml상에서 TabItem을 넣어주어도 의미가 없다. 그러므로, 자바 코드 상에서 TabItem을 넣어주도록 한다. TabLayoutMediator의 populateTabsFromPagerAdapter() 함수 @Suppr..

반응형
seunghwaan
'Android/Basic' 카테고리의 글 목록 (2 Page)