전체 글

개발기록 / 공부한 내용을 정리하는 블로그
AnimationDrawable - Drawables을 애니메이션화 하는 방법은일련의 Drawble Resource를 차례로 Load하여 Animation을 만드는 것 - 이는 한 통의 필름처럼 일련의 여러 다른 Image를 순서대로 재생하여 만드는 기본 Animation - AnimationDrawable 클래스는 Drawable Animation의 기초이다. 연습용 Image 파일 Animation-List 생성 XML 파일은 루트 노드인 animation-list 요소 이제 움직일 Image들을 순서대로 넣어준다(item) (실행 시 순서대로 움직임) animation-list에다 android:oneshot="true"를 추가하면 한 번만 순환한 다음 마지막 프레임에서 정지된 상태 유지 andro..
OnClickListener를 상속받는 새 클릭 리스너를 생성한다. class OnSingleClickListener(private val onSingleClick: (View) -> Unit) : View.OnClickListener { companion object { const val CLICK_INTERVAL = 500 } private var lastClickedTime: Long = 0L private fun isSafe(): Boolean { return System.currentTimeMillis() - lastClickedTime > CLICK_INTERVAL } override fun onClick(v: View?) { if (isSafe() && v != null) { onSingle..
· Kotlin/Util
가격 자리 수마다 , (콤마)를 표현할 때 사용하는 함수 fun getDecimalFormatPrice(price: String?): String? { // String용 var result = "0" if (price == null || price.isEmpty()) return result val dfs = DecimalFormatSymbols() dfs.groupingSeparator = ',' val df = DecimalFormat("#,##0") //#대신 0을 주면 무조건 0으로 대체 df.groupingSize = 3 //3자리수 마다 그룹핑 df.decimalFormatSymbols = dfs val dPrice = price.toDouble() result = df.format(dPri..
기본테마의 액션바를 사용하지 않는 방법 windowNoTitle true 지정, windowFullscreen true 지정 코드로 상태바, 전체화면 제거 방법 // 1. OnCreate 메소드 안 Window.FEATURE_NO_TITLE 호출 (추천x) requestWindowFeature(Window.FEATURE_NO_TITLE) // 2. window - getWindow() 로 Window의 설정을 얻어와 WindowManager의 LayoutParameter 풀 스크린 속성 지정 방법 //풀스크린 Java getWindow().setFlags( WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCR..
LinearLayoutManager의 findPostion 메소드 사용 findViewByPosition() 주어진 어댑터 위치를 나타내는 뷰를 찾음 findFirstVisibleItemPosition() 표시되는 첫 번째 뷰의 어댑터 위치를 반환 findFirstCompletelyVisibleItemPosition() 완전히 보이는 첫 번째 뷰의 어댑터 위치를 반환 findLastVisibleItemPosition() 표시되는 마지막 뷰의 어댑터 위치를 반환 findLastCompletelyVisibleItemPosition() 마지막으로 완전히 보이는 뷰의 어댑터 위치를 반환 findFirstVisibleItemPosition은 item 0 리턴, findFirstCompletelyVisibleIte..
리사이클러뷰에서 드래그(스크롤)할 때 특정 액션이나 기능을 구현하기 위해 사용 val onScrollListener = object:RecyclerView.OnScrollListener() { override fun onScrolled(@NonNull recyclerView:RecyclerView, dx:Int, dy:Int) { super.onScrolled(recyclerView, dx, dy) } override fun onScrollStateChanged(recyclerView: RecyclerView, newState: Int) { super.onScrollStateChanged(recyclerView, newState) } } onScrolled 인자의 recyclerView는 연결해준 리사이..
Android에서 버튼을 만들다 보면 동적으로 여러 디자인이나 기능을 구현하고 싶을 때가 있다. 그럴 때 selector item속성 사용 selected 속성을 사용해 selecter생성 이것들을 src나 background로 지정해주면 해당 셀릭터 속성에 따른 디자인을 구현 가능하다. selector item 속성의 종류 state_pressed = [true, false] 눌린 상태 구분 state_selected = [true, false] 선택 상태 구분 state_checked = [true, false] 체크 상태 구분 state_checkable = [true, false] 체크 가능 상태 구분 state_focused = [true, false] 포커스 상태 구분 state_enabled..
scrollToPosition RecyclerView를 사용하면서 어떤 사용자 action 등에 의해 특정 아이템 위치로 스크롤할 필요가 있다. 이때 손쉽게 사용할 수 있는 방법으로 기본적으로 제공되는 scrollToPosition 함수를 사용한다. // #1. RecyclerView.scrollToPosition(position: Int) // #2 RecyclerView.smoothScrollToPosition(position: Int) 위 함수를 통해 스크롤을 하게 되면 해당 아이템이 보이는 위치까지만 스크롤 다시 말해 내가 찾고자 하는 아이템을 최상단에 보여주도록 스크롤을 해주지 않는다는 의미 내가 이동하고자 하는 아이템을 최상단이나 최하단으로 위치시키면서 스크롤하기 위해서는 아래와 같이 사용해야..
여러 개의 뷰 타입, 즉 리사이클러뷰 내에서 한 개의 뷰 형태만을 랜더링 하는 게 아니라 다수의 뷰 형태를 가지는 객체들을 랜더링하는 방법이다. 총 3개의 다른 뷰 형태를 가지는 리사이클러 뷰를 다뤄볼 것이다. 세 가지 다른 뷰 형태란 아래와 같다. 단순 카테고리 명을 표시하는, 텍스트만 있는 뷰 글 아래에 이미지가 크게 박힌 뷰 사진 오른쪽에 사진 제목과 콘텐츠 내용이 담긴 뷰 Model 랜더링 하고 싶은 데이터를 가지고 있을 클래스 data class Model(val type: Int, val text: String, val data: Int, val contentString: String?) { companion object { const val TEXT_TYPE = 0 const val IMAG..
bumjae
Android Technote