본문 바로가기

전체 글

(89)
android:exported 안녕하세요? 닉네임간편입니다. 이번 시간에는 제목의 에러에 대해서 다루어보겠습니다. 1. 에러 전문 Apps targeting Android 12 and higher are required to specify an explicit value for android:exported when the corresponding component has an intent filter defined 2. 발생 원인 앱의 targetSdkVersion이 31 이상이면, 즉 안드로이드 12 이상을 타겟으로 설정했다면 애플리케이션의 모든 구성요소에 대해서 android:exported를 명시해주어야 합니다. 이전에는 이것이 default로 값이 설정되었지만, 이제는 모두 명시적으로 설정해주어야 합니다. 만일 다른 애플리케..
뷰페이저(ViewPager) 관련 짜투리 지식 1 (스와이프 및 애니메이션 제거, 스와이프 속도 조절) 1. 스와이프 및 애니메이션 제거 우선 뷰페이저에 isUserInputEnabled 속성을 false로 설정하면 사용자의 스와이프 이벤트를 막을 수 있습니다. binding.refrigeratorViewpager.run{ isUserInputEnabled= false } 그리고 만일 뷰페이저와 탭 레이아웃을 같이 사용한다면, 탭 레이아웃에 아래와 같이 설정하면 애니메이션 또한 제거할 수 있습니다. binding.refrigeratorTabLayout.addOnTabSelectedListener(object : TabLayout.OnTabSelectedListener { override fun onTabSelected(tab: TabLayout.Tab?) { tab?.position?.let{binding..
텍스트뷰(TextView) 관련 짜투리 지식 2 (더보기 설정) 1. 개요 앱에서 긴 글을 표시할 때 '더보기' 기능을 설정해서 사용자가 원하는 글만 자세하게 볼 수 있도록 설정할 수 있습니다. 그러나 이는 자체적으로 지원해주는 기능은 아니기에 직접 만들어서 구현해야 하는데요, 물론 라이브러리를 사용할 수도 있지만 직접 구현하는 것도 좋은 경험이라고 생각합니다. 지금부터 자세히 알아보겠습니다. 2. 전체 코드 binding.itemSpecificReviewContent.text = description binding.itemSpecificReviewContent.run { doOnLayout { post { val lineCount = binding.itemSpecificReviewContent.lineCount if (lineCount > 3) { binding.i..
텍스트뷰(TextView) 관련 짜투리 지식 1 (특정 문자열 색상 설정, 밑줄 긋기, 특정 문자열 폰트 설정) 1. 특정 문자열 색상 설정 텍스트뷰의 문자열에서 특정 구간의 색상을 따로 설정하고 싶은 경우가 있습니다. 이 경우 아래와 같이 사용하면 됩니다. val keyword = item.keyword if (keyword != null && item.name.indexOf(keyword) != -1) { val start = item.name.indexOf(keyword) val end = keyword.length + start var spannableString = SpannableString(item.name) spannableString.setSpan(ForegroundColorSpan( Color.parseColor("#FFFAD225")), start, end, Spannable.SPAN_EXCLU..
안드로이드 화면 전환 애니메이션(+ 화면에 보이는지 여부에 따라 애니메이션 다르게 설정) 안녕하세요? 닉네임간편입니다. 이번 시간에는 화면 전환 애니메이션에 대해서 알아보겠습니다. 화면을 전환할 때 사용되는 애니메이션은 정말 다양하지만, 전 그중에서도 '공유 요소'를 활용하여 화면을 전환하는 애니메이션에 대해 다루겠습니다. 다음 이미지와 같이 이전 화면의 이미지뷰가 전환되는 화면과 '공유'하여 마치 연속되는 것처럼 화면이 전환되는 애니메이션을 구현할 것입니다. 1. 화면 전환하기 전 화면 처리 화면 전환 애니메이션을 만들려면 먼저 화면을 전환하기 이전 화면에서 처리해야 하는 부분이 있습니다. 전체 코드는 아래와 같습니다. val intent = Intent(this@SearchBeerActivity, BeerSpecificActivity::class.java) intent.putExtra(B..
에디트텍스트(EditText) 관련 짜투리 지식 2 (한 줄로 입력받기, 엔터키 이벤트, 키보드 사라지게 만들기) 1. 한 줄로 입력받기 xml 파일에서 maxLines 속성을 1로 설정하면 한 줄로 입력받을 수 있습니다. 이때 inputType을 반드시 명시해주어야만 제대로 동작합니다. 예를 들어 inputType을 text로 설정해주면 됩니다. 2. 키보드 사라지게 만들기 val inputMethodManager: InputMethodManager = getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager // 키보드 사라지게 하는 코드 inputMethodManager.hideSoftInputFromWindow(currentFocus!!.windowToken, 0) inputMethodManager를 먼저 생성한 후, 이를 사용해서 키보드를 사..
AnimationDrawable 사용해서 애니메이션 만들기 1. 개요 화면에 애니메이션을 표현하는 경우가 종종 있습니다. 이 경우 AnimationDrawable을 사용하면 보다 쉽게 애니메이션을 화면에 표시할 수 있습니다. 2. 사용법 1) 이미지 만들기 먼저 화면에 사용할 이미지를 설정합니다. 저는 간편하게 아래 이미지를 사용했습니다. 2) 애니메이션 파일 만들기 drawble 폴더에 animation-list 파일을 만듭니다. 코드는 다음과 같습니다. 이때 oneshot 속성은 연속 재생 여부입니다. true로 설정하면 한 번만 애니메이션을 실행한 다음 멈춰있고, false로 설정하면 해당 애니메이션을 반복해서 재생합니다. 그리고 각 아이템을 만들어줍니다. 이때 하나의 아이템은 애니메이션에서 하나의 프레임이 됩니다. 각 속성은 다음과 같습니다. a. dra..
Databinding에 대해서 1. 개요 데이터와 뷰를 연결하는 작업을 레이아웃에서 처리하는 기술을 데이터바인딩이라고 부릅니다. 뷰 바인딩을 포함하는 개념이지만, 뷰 바인딩이 상대적으로 간단하며 퍼포먼스 효율이 좋고 용량이 절약된다는 이점이 있습니다. 따라서 단순히 findViewById를 대체하기 위해서라면 뷰 바인딩을 사용하는 것을 구글이 권장하고 있습니다. 2. 사용법 1) 레이아웃 먼저 바인딩할 레이아웃을 만들어줍니다. 이때 최상위 태그는 이어야 하며, 그렇지 않을 경우 에러가 발생합니다. 아래 코드처럼 layout 태그가 전체 레이아웃을 포괄해야 합니다. ... ... 2) build.gradle(app) 파일 build.gradle(app) 파일의 android 블록 안에 다음과 같은 코드를 추가합니다. buildFeatu..

728x90
반응형