본문 바로가기

Android45

[Jetpack Compose] Navigation Drawer 구현하기 안녕하세요.  오늘은 TopAppBar에서 만든 네비게이션 아이콘에 Navigation Drawer를 연결 해보도록 하겠습니다. 2022.08.08 - [Android/Jetpack] - [Jetpack Compose] TopAppBar(Toolbar) 구현하기 [Jetpack Compose] TopAppBar(Toolbar) 구현하기안녕하세요. 오늘은 Jetpack Compose내 TopAppBar 컴포넌트를 구현해 보도록 하겠습니다. TopAppBar는 이전에 안드로이드 어플리케이션에서 Toolbar/AppBar라고 불리는 컴포넌트입니다. TopAppBar 컴포넌트는 아android-dev.tistory.com2022.08.08 - [Android/Jetpack] - [Jetpack Compose] .. 기리's Android 이야기 2022. 8. 10.
[Jetpack Compose] TopAppBar(Toolbar) - 메뉴 클릭 이벤트 (Toast, Alertdialog, Dropdownmenu) 안녕하세요. 이번 시간에는 지난시간에 구현한 TopAppBar 컴포넌트의 메뉴에서 다양한 클릭 이벤트를 구현해보도록하겠습니다. Navigation Icon클릭시에는 간단한 Toast 메시지를(나중에 Drawer Layout 구현 예정),actions의 Share Icon 클릭시에는 AlertDialog를,마지막으로 MoreVert Icon 클릭시에는 DropDownMenu가 나타나도록 만들어보겠습니다. 완성된 화면은 아래와 같습니다.     STEP 01 : Toast 메시지private fun showToast(context: Context, message: String) { Toast.makeText(context, message, Toast.LENGTH_SHORT).show()} @Compos.. 기리's Android 이야기 2022. 8. 8.
[Jetpack Compose] TopAppBar(Toolbar) 구현하기 안녕하세요. 오늘은 Jetpack Compose내 TopAppBar 컴포넌트를 구현해 보도록 하겠습니다. TopAppBar는 이전에 안드로이드 어플리케이션에서 Toolbar/AppBar라고 불리는 컴포넌트입니다.  TopAppBar 컴포넌트는 아래와 같이 다양한 매개변수를 받습니다. title : 제목을 나타내는 변수입니다. 필수값입니다.backgroundColor : 툴바 색상을 지정합니다.contentColor: 툴바 내 아이템의 색상을 지정합니다.navigationIcon: 툴바 첫번째 아이콘을 지정합니다.actions: 툴바에 여러 메뉴들을 만들 수 있습니다.  STEP 01: 제목@Composablefun ToolbarWithTitle(name: String) { Scaffold( .. 기리's Android 이야기 2022. 8. 8.
[Android/Kotlin] 안드로이드 애드몹(Admob) 전면광고(Interstitial) 넣기(2) 안녕하세요.  오늘은 안드로이드 앱에 전면 광고를 구현해 보도록 하겠습니다. 2022.07.25 - [Android/기타] - [Android/Kotlin] 안드로이드 애드몹(Admob) 배너광고 넣기(1) 전면광고는 다른 광고단위 대비 단가가 높지만 사용자의 앱 사용을 방해하기 때문에 주의를 필요로합니다. 전면광고 때문에 앱이 삭제당할 수 있기 때문입니다. 구글에서도 아래와 같이 전면광고에 대해서 권장사항으로 주의사항을 알려주고 있습니다.  게임을 하다보면 다음 스테이지로 넘어가는 단계에서 전면광고를 흔히 볼 수 있듯이, 사용자가 쉬어가 시점에 사용하는 것이 가장 바람직 해 봅니다. 아래는 버튼을 눌렀을때 전면광고가 나오고 광고를 닫으면, 다른 액티비티로 이동하는 예제입니다.MainActivity ->.. 기리's Android 이야기 2022. 7. 26.
[Android/Kotlin] 안드로이드 애드몹(Admob) 배너광고 넣기(1) 안녕하세요.  오늘은 안드로이드 앱에 구글 애드몹 광고를 넣는 방법에 대해서 알아보도록 하겠습니다. 애플리케이션으로 수익을 창출하고 싶을때는구글에서 제공하는 애드몹을  통해 광고를 게재 및 이를 통해 이익을 낼 수 있습니다. 광고 형식으로는 배너광고, 네이티브광고, 전면광고, 보상형광고가 있으며,앱의 디자인 및 수익성 등을 고려하여 개발자가 전략적으로 선택 및 사용할 수 있습니다. 먼저 가장 간단한 배너 광고에 대해서 알아보도록 하겠습니다.배너 광고는 말 그대로 배너(인터넷 홈페이지에 띠 모양으로 부착하는 광고)의 형태를 말하며,이를 구현시 아래와 같은 광고를 달 수 있습니다. 실제앱에 광고를 달기위해서는 애드몹 홈페이지에서 앱 아이디와 광고단위 아이디 생성이 필요하지만테스트 아이디로 진행 하도록 하겠습.. 기리's Android 이야기 2022. 7. 25.
[앱소개/시간표앱] 대학시간 소개 블로그 공백기 동안에 가계부 다음으로 무엇을 만들어 볼 까 고민하다가 시간표 앱을 만들어 보기로 했습니다. 시간표를 보며 강의실을 찾아 여기저기 뛰어다니던 제 모습을 추억하며 기획했습니다. 꼭 필요한 기능만 넣자라는 생각끝에 아래와 같이 구현할 핵심 기능을 정의했습니다. 1. 시간표를 보여준다. 2. 학점을 등록 및 관리해 준다. 3. 위젯을 통해 일정을 확인할 수 있다. 먼저 UI적으으로 시간표를 만드는 과정이 상당히 어렵습니다. 결국 라이브러리를 코드를 가져다 쓸 수 밖에 없었습니다. 밑면에 시간표를 그리고 그 위에 과목마다 시간을 가지고 위치를 정해서 표시해주는 형식으로 구현되었습니다. 학점 계산은 그렇게 어렵지 않았지만, 위젯 구현이 힘들었습니다. 위젯 구현은 처음 해보는 작업이라서 생각보다 어려.. 기리's Android 이야기 2021. 6. 7.
[앱소개/가계부앱] 레몬트리 소개 안녕하세요. 오랜만에 블로그 글을 써보네요. 올해 설날이후 블로그 글 작성을 멈춘것 같은데 다시 시작해 보려고 합니다... 설날 이후 한달 간 만들었던 앱을 잠깐 소개하려고 합니다. 가계부 앱이 만들고 싶어서 하나 만들었습니다. 일단 시중에 가계부 앱들이 많이 있어서 어떤 컨셉으로 만들어 볼까하다가, 소비를 정상소비, 과소비, 투자소비 개념으로 나누어 소비패턴을 분석할 수 있도록 했습니다. 가계부를 만들어보면서 데이터베이스/날짜처리/달력 등 개념을 많이 공부한 것 같습니다. 챠트는 MPAndroidChart 라이브러리를 사용했습니다. 사용 및 별점 부탁드립니다.^^ 플레이스토어 링크: https://play.google.com/store/apps/details?id=com.reachfree.dailyex.. 기리's Android 이야기 2021. 6. 7.
[Android/Tip] 안드로이드 팁 - AVD Pinch Zoom(핀치 줌) 안녕하세요. AVD 사용시에 Pinch Zoom 사용방법에 대해서 알아보겠습니다. 두 손가락으로 화면을 확대하거나 축소하는 기능인데, AVD에서 마우스로 어떻게 사용하는지 궁금해서 저도 한번 찾아 봤습니다. 방법은 Ctrl + 드래그 입니다. 기리's Android 이야기 2021. 2. 8.
[Android/Kotlin] 안드로이드 구글맵 Google Map(2) - release 안녕하세요. 지난번에 이어서 release용 API Key를 생성하는 방법에 대해서 알아보겠습니다. 2021/02/08 - [Android] - [Android/Kotlin] 안드로이드 구글맵 Google Map 설정하기(1) - debug [Android/Kotlin] 안드로이드 구글맵 Google Map 설정하기(1) 안녕하세요. 오늘은 Google Map 사용법에 대해서 알아보겠습니다. 프로젝트를 생성하고, 구글 API키를 발급받아 설정하는 순으로 진행해 보겠습니다. 그리고 API키는 디버그 / 릴리즈 두가지가 있는 android-dev.tistory.com 아래는 Google Map 관련 API 키 가져오기 공식 설명내용입니다. developers.google.com/maps/documentati.. 기리's Android 이야기 2021. 2. 8.
[Android Studio] 안드로이드 APK 파일 생성하기 안녕하세요. 오늘은 안드로이드 스튜디오에서 APK 파일을 생성하는 방법에 대해서 알아보겠습니다. 앱을 구글 플레이스토어에 업로드 하거나 다른기기에 테스트하기 위하여 APK파일 생성이 필요합니다. 아래 순서대로 따라하시면 쉽게 APK 파일을 만들 수 있습니다. Build > Generate Signed Bundle / APK... 메뉴를 선택합니다. 아래와 같은 창이 나타나면, APK를 선택하고 Next 버튼을 클릭합니다. APK파일을 만들기 위해서는 Key store path가 필요합니다.처음 생성시에는 Key store가 없으므로, Create New 버튼을 클릭합니다.    아래와 같은 화면이 나오면 해당 정보를 입력해주면 됩니다. 먼저 Key store path를 지정하기 위해서 폴더 아이콘을 누르.. 기리's Android 이야기 2021. 2. 8.
[Android/Kotlin] 안드로이드 구글맵 Google Map 설정하기(1) - debug 안녕하세요. 오늘은 Google Map 사용법에 대해서 알아보겠습니다. 프로젝트를 생성하고, 구글 API키를 발급받아 설정하는 순으로 진행해 보겠습니다. 그리고 API키는 디버그 / 릴리즈 두가지가 있는데, 이번 시간에는 디버그용으로 설명드립니다. STEP01. GoogleMap 프로젝트 생성 아래 그림과 같이 Template을 Google Maps Activity를 선택하여 새로운 프로젝트를 생성합니다. 새로운 프로젝트가 생성되었습니다. 기존 Empth Activity 프로젝트 생성과 다르게 맵 설정과 관련된 일반적인 내용들이 프로젝트안에 생성되었습니다. [AndroidManifest 파일] ACCESS_FINE_LOCATION 퍼미션이 등록되었습니다. 그리고 meta-data 태그에 API_KEY 가.. 기리's Android 이야기 2021. 2. 8.
[Android/Kotlin] 안드로이드 Expandable RecyclerView 만들기 안녕하세요. 오늘은 Expandable이라고 불리는 확장가능한 RecyclerView에 대해서 알아보겠습니다. RecyclerView를 사용해서 목록을 보여줍니다. 목록안에 세부적인 정보를 숨기고 사용자가 특정 목록의 내용을 보고 싶을때만 열리고 닫히는게 하는것이 UI적으로도 보기 좋을때가 있습니다. 이러한 기능을 구현하는 방법에 대해서 알아보겠습니다. 크게 생각하면 아래 두가지를 구현한다고 생각하시면 됩니다. 1. RecyclerView 아이템 레이아웃에 상세 레이아웃 추가(클릭시 gone -> visible) 2. 화살표 버튼 Toggle 구현 완성된 모습은 아래와 같습니다. STEP01. build.gradle/app 추가 circleImageView 라이브러리를 추가합니다. 프로필 사진을 Circ.. 기리's Android 이야기 2021. 2. 8.
[Android/Kotlin] 안드로이드 ConstraintLayout(3) Guideline 안녕하세요. 지난번 Barrier에서 이어서 Guideline 기능에 대해서 알아보겠습니다. 2021/02/07 - [Android/Material Design] - [Android/Kotlin] 안드로이드 ConstraintLayout(1) Chain 2021/02/07 - [Android/Material Design] - [Android/Kotlin] 안드로이드 ConstraintLayout(2) Barrier 가이드라인은 디자인 작업을 하시는 분들에게 익숙한 개념입니다. 보통 안드로이드 디자인을 하는 툴인 Adobe XD 에서도 많이 사용하고 있습니다. 가이드라인을 생성하는 방법은 아래와 같습니다. 이러한 가이드 라인을 언제 사용하면 좋을까요? 안드로이드를 개발할 때 android:layout_ma.. 기리's Android 이야기 2021. 2. 7.
[Android/Kotlin] 안드로이드 ConstraintLayout(2) Barrier 안녕하세요. 지난번 ConstraintLayout Chain에 이어서 Barrier 기능에 대해서 알아보겠습니다. 2021/02/07 - [Android/Material Design] - [Android/Kotlin] 안드로이드 ConstraintLayout(1) Chain [Android/Kotlin] 안드로이드 ConstraintLayout(1) Chain 안녕하세요. 오늘은 ConstraintLayout의 기능중에 Chain에 대해서 알아보겠습니다. Chain은 사용 가능한 공간 내 뷰들간의 분할되는 방식을 제어할 수 있는 제약조건입니다 그리고 기존 레이아웃 중에 L android-dev.tistory.com Barrier 라는 영어단어는 '장벽'을 뜻하는 말로 뭔가 레이아웃에 벽을 만들어준다 라고.. 기리's Android 이야기 2021. 2. 7.
[Android/Kotlin] 안드로이드 ConstraintLayout(1) Chain 안녕하세요. 오늘은 ConstraintLayout의 기능중에 Chain에 대해서 알아보겠습니다. Chain은 사용 가능한 공간 내 뷰들간의 분할되는 방식을 제어할 수 있는 제약조건입니다 그리고 기존 레이아웃 중에 LinearLayout에서 사용하였던 weight 속성을 ConstrainrLayout에서도 사용할 수 있습니다. 그럼 만드는 방법에 대해서 설명드리겠습니다. STEP01. 체인 만들기 Chain은 여러 뷰들로 구성되어 있기때문에 Chain을 만들기 위해서 연결할 뷰들을 모두 선택해야 합니다. 아래와 같이 모든 TextView를 선택하고, 우클릭 Chain > Create Horizontal Chain을 선택하여 체인을 만들 수 있습니다. 체인을 생성하면 아래와 같이 뷰들의 관계 및 위치가 변화.. 기리's Android 이야기 2021. 2. 7.
[Android/Kotlin] 안드로이드 Gradient TextView 안녕하세요. 오늘은 TextView에 Gradient 효과를 주는 방법에 대해서 알아보겠습니다. 아래와 같이 글씨에 Gradient 효과가 들어갑니다. [LinearGradientSpan.kt] class LinearGradientSpan( private val containingText: String, private val textToStyle: String, @ColorInt private val startColorInt: Int, @ColorInt private val endColorInt: Int ) : CharacterStyle(), UpdateAppearance { override fun updateDrawState(tp: TextPaint?) { tp ?: return var leadingW.. 기리's Android 이야기 2021. 2. 7.
[Android/Kotlin] 안드로이드 ViewBinding with BaseActivity, BaseFragment 안녕하세요. 오늘은 BaseActivity 클래스와 BaseFragment 클래스를 사용하여 좀 더 편안하게 ViewBinding을 사용하는 방법에 대해서 알아보겠습니다. 액티비티와 프레그먼트가 많아질수록 ViewBinding을 초기 세팅하는 일도 만만치 않습니다. 초기 세팅을 Base 추상 클래스에서 구현하도록 하겠습니다. BaseActivity에서 구현하는 방법입니다. [BaseActivity.kt] abstract class BaseActivity( val bindingFactory: (LayoutInflater) -> B ): AppCompatActivity() { private var _binding: B? = null val binding get() = _binding!! override fu.. 기리's Android 이야기 2021. 2. 6.
[Android/Kotlin] 안드로이드 ViewPager2 인트로 화면 with Navigation Component 안녕하세요. 오늘은 ViewPager2를 사용하여 Intro 화면을 만드는 방법에 대해서 알아보겠습니다. 인트로 화면은 앱을 처음 실행할때 앱의 간단한 사용에 대해서 설명해주는 페이지입니다. 최초 실행시만 보여지고, 그 이후에는 사용자가 볼 수 없도록 구현해 보도록 하겠습니다. 완성된 모습은 아래와 같습니다. 인트로 화면을 구현하기 위해서 Navigation Component를 사용했습니다. 프로젝트의 전반적인 구조는 아래와 같습니다. 액티비티는 MainActivity 하나만 존재합니다. 메인 액티비티 안에서 Fragment 간의 상호작용이 발생하고, 이는 Navigation Component를 사용하여 구현할 예정입니다. SplashFragment 에서 Splash화면을 로딩해주고, 만약 최초 실행이라.. 기리's Android 이야기 2021. 2. 6.
[Android/Error] 안드로이드 error: cannot find symbol @dagger.hilt.InstallIn(value = {ApplicationComponent.class}) Dagger Hilt를 업데이트하고 나서 Build를 하니깐 아래와 같은 에러가 발생했습니다. error: cannot find symbol @dagger.hilt.InstallIn(value = {ApplicationComponent.class}) ApplicationComponent 가 SingletonComponent 으로 이름이 변경되었다고 합니다. Ctrl + Shift + F 를 통해서 ApplicationComponent를 찾아서 SingletonComponent로 변경했더니 잘 되네요.. 기리's Android 이야기 2021. 2. 5.
[Android/admob] 안드로이드 애드몹 app-dts.txt 이슈 해결하기 안녕하세요. 오늘은 구글 애드몹에서 app-ads.txt 추가 메시지와 관련하여 해결하는 방법에 대해서 알아보겠습니다. app-ads.txt를 추가하거나 업데이트 하지 않으면 나중에 불이익이 발생할 수 도 있기 때문에 구글이 시키는대로 추가하는 것이 좋습니다. 먼저 애드몹 페이지에 들어가 우측에 APP-ADS.TXT 탭으로 이동합니다. 그러면 아래와 같은 페이지를 볼 수 있습니다. app-ads.txt 파일을 찾을 수 없다고 하네요. 파란 버튼의 APP-ADS.TXT 설정 방법을 클릭해 보겠습니다. 아래 스니펫을 복사하여 개발자 웹사이트 루트에 넣어서 게시하라고 하네요... 근데 웹사이트가 없는데.. 티스토리에 하면 될라나? 검색을 해봤더니 티스토리는 안된다고 합니다. 구글 Blogger에서는 된다고 하.. 기리's Android 이야기 2021. 2. 5.