컴퓨터 공학/Android35 [ 안드로이드 스튜디오 ] public final class BuildConfig 오류 발생 시 public final class BuildConfig 오류 발생 시 1. Build - Clean Project 합니다. 2. Build - Rebuild Project 합니다. 3. 애뮬레이터 새로 실행합니다 2020. 7. 8. 네이버 부스트코스 안드로이드 프로그래밍 프로젝트3) 4서비스-5브로드캐스트 수신자 개념 연습문제 네이버 부스트코스 안드로이드 프로그래밍 프로젝트3_4서비스-5브로드캐스트 수신자 개념 연습문제 네이버 부스트코스 안드로이드 프로그래밍을 수강하고 있습니다. 강의보며 예제를 따라하고 있으나 코드가 이해되지 않아 개념을 익히기 위해 셀프체크지를 만들었습니다. 정재곤 선생님의 안드로이드 프로그래밍 강좌를 참고하였습니다. www.edwith.org/boostcourse-android/lecture/17069/ [LECTURE] 1) 브로드캐스트 수신자 : edwith 들어가기 전에 브로드캐스팅(Broadcasting)이란 방송의 의미로 여러 사람에게 동시에 데이터를 전달한다는 뜻입니다. 여러분이 잘 아는 MBC, KBS 그리고 SBS 방송사의 ... - 부스트코스 www.edwith.org 개념문제 1장 + 답.. 2020. 5. 28. 네이버 부스트코스 안드로이드 프로그래밍 프로젝트3) 1화면전환~3수명주기 개념 연습문제 네이버 부스트코스 안드로이드 프로그래밍을 수강하고 있습니다. 강의보며 예제를 따라하고 있으나 코드가 이해되지 않아 개념을 익히기 위해 셀프체크지를 만들었습니다. 아래 문제는 정재곤 선생님의 부스트코스 안드로이드 프로그래밍 강좌에 나오는 내용 정리를 참고하였습니다. www.edwith.org/boostcourse-android/joinLectures/13160 [부스트코스] 안드로이드 프로그래밍 강좌소개 : edwith - 부스트코스 www.edwith.org 필요하신 분은 출력해서 사용하세요. 문제 2페이지, 답 1페이지 (총3장) 범위: 프로젝트 3) 1 화면전환 ~ 3 수명주기 [부스트코스] 안드로이드 프로그래밍 3 화면 여려 개 만들기 3_1 화면 전환하기 안드로이드 애플리케이션 구성요소 4가지는 .. 2020. 5. 28. [ 안드로이드 ] 자바 소스로 커스텀 버튼 만들기 2020 안드로이드 스튜디오 자바 소스 파일로 커스텀 버튼(Custom Button) 만들기 xml 파일 없이 java 소스 파일로만 버튼을 상속 받아 새로운 버튼 객체를 만들 것입니다. 버튼을 클릭 시 배경색이 바뀌도록 설정합니다. STEP 1 자바 클래스 만들기 - 저는 클래스명을 CustomButton이라고 했습니다. - AppCompatButton를 상속받습니다. STEP 2 생성자 만들기 - 맥이라면 Cmd + N 단축키 눌러서 생성자를 쉽게 가져옵니다. - 파라미터 Context만 받는 것과 Attribute랑 같이 받는 것 두 개를 불러 옵니다. STEP 3 버튼 초기 모습을 설정하기 위해 init()메서드를 만듭니다. 3.1 res 폴더 - dimens xml 파일을 추가합니다. 16dp .. 2020. 5. 22. [2020 안드로이드 스튜디오] 스피너 (spinner) 사용 예제 [ 2020 안드로이드 스튜디오 ] 스피너 (spinner) 사용 예제 Android Studio Version 3.6.3 사용언어 JAVA 스피너를 사용하면 선택하기 전 View1과 선택하는 중 View2가 있습니다. 하지만 SDK에서 미리 만들어 제공하는 레이아웃을 사용하면 간단히 몇 줄의 코드만으로 스피너를 만들 수 있습니다. STEP 1 xml 구성하기 - 스피너 태그를 이용해 XML 레이아웃에 추가하고 어댑터 객체를 만들어 설정합니다. - 스피너에 들어가는 각 아이템은 텍스트만 보여주는 경우가 많아서 안드로이드 SDK에서 미리 제공하는 XML레이아웃을 그대로 사용할 수 있습니다. - ArraryAdapter는 아이템을 위한 여러 개의 데이터를 담아두기 위해 미리 만들어졌습니다. - 스피너는 항목.. 2020. 5. 16. [2020 안드로이드 스튜디오] 리스트뷰(ListView), 어댑터(Adapter) 이해 &기본예제 [2020 안드로이드 스튜디오] 리스트뷰(ListView) 이해 &예제, 어댑터 개념 Android Studio Version 3.6.3 사용언어: JAVA STEP 1 아이템을 위한 XML 레이아웃 정의하기 - 리스트뷰에 들어갈 각 아이템의 레이아웃을 XML로 정의합니다. ※ 예제 만들 때 파일명을 single로 한다는게 singer로 오타냈네요. 코드가 돌아가는데는 이상이 없습니다. 무시하고 원하는 대로 네이밍 하시면 됩니다. ※ ■ singer_item_list.xml STEP 2 아이템을 위한 뷰 정의하기 - 먼저 하나의 아이템을 정의하는 클래스를 만듭니다. - 아이템을 구성할 요소는 이미지, 텍스트2개 입니다. 즉, 변수 3개를 선언하면 되겠죠. ■ SingerItem.java package c.. 2020. 5. 16. [2020 안드로이드 스튜디오] Drawable 드로어블 배경 효과 총정리 2020 안드로이드 스튜디오 Drawable 드로어블 총정리 res에 파일을 만들어두면 앱 어디에서든지 접근가능하여 리소스 관리하기가 쉽습니다. 그래서 버튼, 이미지 버튼, 액티비티 등 다양한 곳에서 배경에 효과를 줄 때 drawable를 사용하는데요. 이 글을 통해서 기본적인 드로어블 객체 생성 방법과 그라데이션 효과, 일정 시간에 따라 변하는 애니메이션 효과도 적용해보겠습니다. 앞에 작성한 코드를 이어서 사용하니 PART1부터 따라가시면 좋을 것입니다. 필요한 코드를 읽을 수 있는 분은 바로 넘어가셔도 됩니다. PART 1 기본 생성 방법 https://bite-sized-learning.tistory.com/166 PART 2 그라데이션 https://bite-sized-learning.tistor.. 2020. 4. 23. [2020 안드로이드 스튜디오] Drawable 드로어블 애니메이션 그라데이션 Drawable 드로어블 개체로 움직이는 그라데이션 만들기 안드로이드 스튜디오에서 드로어블 xml파일을 이용해 메인액티미티에서 움직이는 애니메이션을 만들어 볼 것입니다. 일정 시간이 지나면 자동으로 색이 변합니다. 미리 만들어둔 bg_btn.xml, bg_btn2.xml, bg_btn3.xml를 사용할 것이기 때문에 xml 소스 파일은 여기에서 참고해주세요. 드로어블 파일 생성하는 기본적인 방법을 알고 싶으시면 여기서부터 따라와주세요. STEP 1 app - res - drawable에서 xml를 만들어주세요. 저는 파일명을 android_gradient_list.xml로 지었습니다. STEP 2 다음 코드를 작성하세요. ■ android_gradient_list.xml STEP 3 효과를 주고 싶은 개.. 2020. 4. 22. [2020 안드로이드 스튜디오] Drawable 드로어블 그라데이션 2020 안드로이드 스튜디오 Drawable 드로어블 그라데이션 안드로이드에서는 /app/res/drawable 폴더에 .xml 파일을 만들어 드로어블 객체를 만들 수 있습니다. 기본적인 드로어블 xml 생성 방법은 여기서 확인해주세요. ■ bg_btn.xml ■ bg_btn2.xml ■ bg_btn3.xml ■ actvity_main.xml 그라데이션 색 추출 및 참고 사이트는 여기서 쉽게 찾을 수 있습니다. 드로어블 그라데이션을 이용하여 애니메이션을 만들고 싶다면 다음 글을 읽어주세요. 2020. 4. 22. [2020 안드로이드 스튜디오] Drawable 드로어블 배경 기본 사용법 2020 안드로이드 스튜디오 Drawable 드로어블 생성법 안드로이드에서는 /app/res/drawable 폴더에 .xml 파일을 만들어 드로어블 객체를 만들 수 있습니다. 테두리(stroke) 지정, 모서리 둥글게(corners), 도형 색 채우기(solid), 모양 지정(shape) 등 다양한 태그를 사용하면 됩니다. 간단히 다음과 같이 버튼에 적용할 수 있는 Drawable 드로어블 객체를 만들어보겠습니다. STEP 1 res/drawable 를 누르시고 오른쪽 마우스 New - Drawable Resource File를 클릭합니다. STEP 2 파일 이름을 입력하고 OK버튼을 누릅니다 저는 버튼(button)의 배경(background)에 사용할 거라서 bg_btn이라고 했습니다 STEP 3 상.. 2020. 4. 22. [2020 안드로이드 스튜디오] 폰트, 배경 색상 쉽게 지정 및 변경하기 2020 안드로이드 스튜디오 텍스트, 배경 색상 쉽게 지정 및 변경하기 글 업데이트 날짜: 2020.04.22 툴: 맥 안드로이드 스튜디오 3.6.3 STEP 1 좌측 사이드바를 'Android'로 설정하고 app - res - values - color.xml를 열어주세요. 안드로이드 스튜디오가 업데이트 되면서 기본 Primary와 Accent 색이 바뀌었습니다. 자세한 hex값은 color.xml에서 확인할 수 있는데요. 여기서 색의 이름과 값을 지정해두면 다른 곳(폰트색, 배경색, 버튼색 등)에서 쉽게 사용가능합니다. STEP 2 만들고 싶은 색 이름을 _____에 적어주세요. STEP 3 색 값을 _____에 적어주세요. _____ ※※※ 만약 원하는 색의 Hex를 값을 모른다면?? ※※※ 좌측에.. 2020. 4. 22. [안드로이드 스튜디오] Android 런처 앱 아이콘 변경하기 Android 안드로이드 런처 앱 아이콘 변경 및 설정하기 글 업데이트 날짜: 2020.04.21 툴: 맥 안드로이드 스튜디오 3.6.1 버전 1. File - New - Image Asset 에 들어가기 2. Name에서 이름 지정하고, Path에서 이미지 파일 경로를 지정하기 이름을 변경하지 않으면 창 아래쪽에 노랑색 주의 아이콘과 함께 같은 이름의 아이콘이 이미 존재한다는 문장이 뜹니다. 즉 이름을 꼭 변경해주세요. 3. Resize 항복의 바를 좌우로 움직여서 크기 조정하기 오른쪽에 Preview를 보면서 어떤 모양에서도 로고가 보일 수 있게 조정해주세요. 4. 배경 변경하기 Layer Name에서 이름 지정하시고 AssetType에서 단색과 이미지 중에 어떤 것으로 넣을 지 지정해주세요. 다음 .. 2020. 4. 21. [ 안드로이드 프로그래밍 ] 핸들러로 메시지 전송하기 ( 예제 포함 ) 안드로이드 프로그래밍_핸들러로 메시지 전송하기_예제포함 앱을 실행할 때 프로세스가 만들어지면 그 안에 메인 메서드가 함께 만들어집니다. 그리고 메세지 큐(Message Queue)를 실행합니다. 메세지 큐를 사용하면 순차적으로 코드를 수행할 수 있는데, 이렇게 메세지 큐로 메인 스레드에서 처리할 메시지를 전달하는 역할을 핸들러 클래스가 담당합니다. 또 핸들러를 이용하면 특정 메세지가 미래의 어떤 시점에 실행되도록 스케쥴링 할 수도 있습니다. 핸들러의 메시지 처리 방법을 그림으로 보실까요? 크게 3가지 방법으로 나눠볼 수 있습니다. 1 obtainMessage() 로 메세지 큐에 있는 메시지 객체를 하나 참조할 수 있습니다. 2 메세지 객체에 필요한 정보를 넣은 후 sendMessage() 로 메세지 큐에.. 2020. 4. 8. [ 안드로이드 프로그래밍 ] 스레드 실행하기 ( 예제 포함 ) 안드로이드 프로그래밍_스레드 실행하기_예제 포함 자동으로 생성되는 메인 액티비티는 하나의 프로세스에서 처리됩니다. 따라서 메인 액티비티의 버튼 클릭 이벤트를 처리하는 일 등 액티비티 내에서 처리하는 기능들은 다 같은 프로세스 안에서 실행되죠. 이렇게 같은 프로세스 안에서 여러 기능들이 순서대로 실행할 수 있습니다. 하지만 일련의 기능이라 해도 대기 시간이 길어지는 네트워크 요청 등의 기능을 수행할 때는 문제가 생길 수 있습니다. 그래서 하나의 프로세스 안에서 여러 개의 작업이 동시 수행되는 멀티 스레드 방식을 사용할 수 있습니다. 이런 멀티 스레드 방식은 같은 프로세스 안에 있으면서 메모리 리소스를 공유하므로 효율적인 처리가 가능합니다. 스레드(Thread)는 동시 수행이 가능한 작업 단위입니다. 현재 .. 2020. 4. 8. [ 안드로이드 프로그래밍 ] 토스트 메시지 위치 변경하기 안드로이드 스튜디오 프로그래밍_토스트 메시지 위치 변경하기_예제포함 예제 ■ xml 파일 - 원하는 위치 값(X, Y)을 입력받기 위해 EditText를 사용합니다. - X, Y위치 값을 받는 칸임을 보여주기 위해 hint의 속성을 'X위치','Y위치'라고 해줍니다. - 띄우기 버튼을 눌렀을 때 토스트 메세지를 띄웁니다. ■ java 파일 package com.example.practicecode; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.view.Gravity; import android.view.View; import android.widget.Button; import androi.. 2020. 4. 8. [ 안드로이드 프로그래밍 ] 간단한 예제로 서비스 이해하기2 (서비스에서 액티비티로 데이터 전달) 안드로이드 스튜디오 프로그래밍_서비스에서 액티비티로 데이터 전달_예제포함 이번에는 안드로이드에서 서비스를 실행시키고 데이터를 액티비티로 전달하는 작업을 구현해볼 것입니다. 예제를 따라하기 위해서 앞서 선행되어야 하는 코드가 있으니 '서비스 이해하기1' 글에서 확인해주세요. 아래 링크 클릭하시면 됩니다. https://bite-sized-learning.tistory.com/137 [ 안드로이드 프로그래밍] 간단한 예제로 서비스 이해하기 유튜브를 보는 중에 카톡 알림을 받은 적이 있을 것입니다. 이렇게 카톡 앱을 화면에 띄우지도 않아도 카톡 알림을 받을 수 있는 이유는 화면 뒤의 공간인 백그라운드에서 실행되는 "서비스"가 있기 때문입니다... bite-sized-learning.tistory.com 데이터.. 2020. 4. 7. [ 안드로이드 프로그래밍] 간단한 예제로 서비스 이해하기1 (액티비티에서 서비스로 데이터 전달) 안드로이드 스튜디오 프로그래밍_액티비티에서 서비스로 데이터 전달_예제포함 유튜브를 보는 중에 카톡 알림을 받은 적이 있을 것입니다. 이렇게 카톡 앱을 화면에 띄우지도 않아도 카톡 알림을 받을 수 있는 이유는 화면 뒤의 공간인 백그라운드에서 실행되는 "서비스"가 있기 때문입니다. 오늘은 안드로이드 앱의 구성 요소의 하나이기도 한 "서비스"에 대해 알아보겠습니다. 우리는 "서비스"를 통해서 단말이 항상 실행되어 있는 상태로 데이터를 주고받을 수 있습니다. 이 "서비스"를 시작하기 위해서는 간단히 startService() 메소드를 호출하면 됩니다. 그럼 이렇게 메모리에 서비스가 생성이 됩니다. 만약 서비스 실행 후에도 이 메서드를 호출하면 어떻게 될까요? 여러 서비스가 실행될까요? 답은 아니요 입니다. 메서.. 2020. 4. 6. [안드로이드 스튜디오] 오류 해결_HardCoded HardCoded string 이유인 즉, HardCoded string, 사용자가 직접 코딩(코드로 작성)한 문자열이다 따라서 안드로이드 스튜디오는 @string resource 를 사용 할 것을 권하고 있다. 2019. 12. 27. [안드로이드 스튜디오]로그캣 필터 사용 방법 1. 안드로이드 스튜디오 하단에서 Logcat 아이콘을 눌러서 logcat 창을 띄운다. 2. 오른쪽 상단부분에 Show only selected application 이 쓰여져 있는 목록을 연다. 3. Edit Filter Configuration 를 누른다. 4. 로그캣 필터를 만들어보자. Filter Name Log Tag(regex) 실제로 코드상에 들어가는 태그 Log Message(regex) 보고 싶은 메시지만 출력하도록 Pakage Name 패키지 이름 PID 프로세스 아이디 Log Level 로그의 중요도 레벨 (중요도 순 : Verbose < Info < Debug < Warn < Error ) 예) public class MainActivity extends AppCompatActiv.. 2019. 12. 11. [안드로이드 스튜디오] 데드락 발생 이유? 여러 개의 스레드*가 동시에 공통 메모리 리소스에 접근할 때 데드락 발생함 데드락이란 동시에 두 곳 이상에서 요청이 생겼을 때 어떤 것을 먼저 처리할지 판단할 수 없이 발생하는 시스템 상의 문제 *스레드 : 동시 수행이 가능한 작업 단위, 현재 수행 중인 작업 이외의 기능을 동시에 처리할 때 새로운 스레드를 만들어 처리 2019. 12. 9. [안드로이드 스튜디오]ems란? 실제 문자열의 크기에 상관없이 문자의 폭에 맞게 너비 설정 ems는 layout_width가 wrap_content일 때만 적용할 수 있음 2019. 12. 9. [Do it 개정6판_안드로이드 스튜디오]둘째마당_07 선택 위젯 만들기 07-1 나인패치 이미지 알아보기 - 그래픽 프로그램에서 만든 버튼 이미지를 표시하면 단말에 따라 왜곡현상이 일어날 수 있기 때문에 해결 방법을 찾아야했다. - 나인패치(Nine Patch) 이미지 왜곡 해결 방안이다. - 수정한 이미지의 파일 이름은 ooo.9.png 처럼 파일 확장자 앞에 9을 붙이면 안드로에서는 그 파일을 원본 이미지의 가로, 세로 끝부분의 픽셀을 모두 나인패치 이미지의 정보를 담은 것으로 인식한다. > SampleNinePatch 프로젝트 ▼ activity_main.xml a 07-2 새로운 뷰 만들기 - 뷰의 영역과 크기는 그 뷰를 포함하고 있는 레이아웃의 영향을 받아 정해진다. 이때 개발자가 뷰의 상태에 따라 추가적인 코드를 넣을 수 콜백 메서드가 호출됨 - 뷰가 스스로의 크.. 2019. 12. 7. [Do it 개정6판_안드로이드 스튜디오]둘째마당_15 푸시 서비스와 센서 및 단말 기능 사용하기 15-1 진동과 소리로 알려주기 - 사용자에게 무언가를 알려주는 가장 간단한 방법은 진동과 소리 - 안드로이드에서 진동은 얼마동안 안 울리도록 할 것인지 지정할 수 있음-> Vibrator라는 시스템 서비스 객체를 사용 > SampleVibrate 프로젝트 ▼ MainActivity.java package com.ogrg.techtown.vibrate; import androidx.appcompat.app.AppCompatActivity; import android.content.Context; import android.media.MediaPlayer; import android.media.Ringtone; import android.media.RingtoneManager; import android... 2019. 12. 3. [Do it 개정6판_안드로이드 스튜디오]둘째마당_11 단말에 데이터베이스와 내용 제공자 만들기 11-1 모바일 데이터베이스란? - 데이터를 간단하게 저장하고 싶을 때는 SharedPreferences 를 사용, SQL 문 - 안드로이드는 Enbedded Database로 개발된 경량급 관계형 데이터베이스인 SQLite를 가지고 있다. 11-2 데이터베이스와 테이블 만들기 - 간단한 방법으로는 Context 클래스에 정의된 openOnCreateDatabase() 메서드를 사용하는 것 - 위 메서드의 첫 번째 파라미터는 '데이터베이스 이름' 두 번째 파라미터는 '사용 모드', 세 번째 파라미터는 Null이 아닌 객체를 지정할 경우 쿼리의 결과 값으로 반환되는 데이터를 참조하는 커서를 만들어낼 수 있다. >SampleDatabase 프로젝트 ▼ MainActivity.java package com.o.. 2019. 12. 3. [Do it 개정6판_안드로이드 스튜디오]둘째마당_10 서버에 데이터 요청하고 응답받기 - 단말에서 독집적으로 동작하는 앱을 만들기 보다는 서버에 있는 데이터를 요청에서 사용하는 경우가 많다. 10-1 네트워킹이란? ■ 네트워크 연결 방식 이해하기 10-2 소켓 사용하기 ■ HTTP 프로토콜과 소켓 >SampleSocket 프로젝트 ▼MainActivity.java package com.ogrg.techtown.push.socket; import androidx.appcompat.app.AppCompatActivity; import android.os.Build; import android.os.Bundle; import android.os.Handler; import android.preference.PreferenceActivity; import android.util.Log; impo.. 2019. 12. 3. 이전 1 2 다음