본문 바로가기

안드로이드스튜디오23

[ 안드로이드 스튜디오 ] public final class BuildConfig 오류 발생 시 public final class BuildConfig 오류 발생 시 1. Build - Clean Project 합니다. 2. Build - Rebuild Project 합니다. 3. 애뮬레이터 새로 실행합니다 2020. 7. 8.

[ 안드로이드 ] 자바 소스로 커스텀 버튼 만들기 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 안드로이드 스튜디오] 리스트뷰(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.

[안드로이드 스튜디오] 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.

[안드로이드 스튜디오]로그캣 필터 사용 방법 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.

[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.

[Do it 개정6판_안드로이드 스튜디오]둘째마당_05 프래그먼트 이해하기 - 화면 안에 들어가는 레이아웃이 중복되지 않도록 한 번만 정의하고 재사용할 수 있도록 만든 것이 프래그먼트 05-1 프래그먼트란? ■ 프래그먼트에 대해 이해하기 - 하나의 액티비티 안에 다른 액티비티를 넣는다는 것은 단말의 리소스를 많이 사용하는 비효율적인 방법 - 프래그먼트는 하나의 화면 안에 들어가는 부분 화면과 같아서 하나의 레이아웃처럼 보인다. - 프래그먼트의 사용 목적 1. 분할된 화면들을 독립적으로 구성하기 위해 사용함 2. 분할된 화면들의 상태를 관리하기 위해 사용함 액티비티 시스템에서 관리하는 화면 프래그먼트 단순히 액티비티 위에 올라가는 화면의 일부 즉 '부분 화면' - 프래그먼트는 항상 액티비티 위에 올라가 있어야 한다. - 따라서 프래그먼트가 제대로 동작하는 시점은 프래그먼트가 메모.. 2019. 12. 1.

[Do it 개정6판_안드로이드 스튜디오]둘째마당_04 여러 화면 간 전환하기 04-1 레이아웃 인플레이션 이해하기 - 이제까지 하나의 화면에 대하여 화면을 어떻게 보여줄지 결정하는 XML 레이아웃을 정의했다. - 구조를 나타내는 XML과 화면의 기능을 담당하는 java 파일을 연결해줘야 한다. - 화면의 기능을 담당하는 소스 파일에는 AppCompatActivity를 상속하는 MainActivitiy 클래스가 자동으로 만들어진다. - 여기서 R은 프로젝트 창에 보이는 res 폴더를 의미한다. - 앱이 실행될 때 XML 레이아웃의 내용이 메모리에 객체화되고 객체화된 XML 레이아웃을 소스 파일엥서 사용 - 이렇게 XML 레이아웃의 내용이 메모리에 객체화되는 과정을 인플레이션이라고 한다. - 메모리에 객체화되지 않은 버튼 객체를 참조하려고 했기 때문에 심각한 오류로 앱 자체를 멈추게.. 2019. 11. 29.

[Do it 개정6판_안드로이드 스튜디오]둘째마당_03 기본 위젯과 드로어블 사용하기 03-1 기본 위젯 다시 한 번 자세히 공부하기 ■ 텍스트뷰 자세히 살펴보기 - 화면에 글자를 보여주는 역할 - strings.xml 파일에 작성한 문자열을 지정할 수 있음, 이 파일에 정의된 문자열은 text 속성에서 @string/... 와 같은 형식응로 참조해야 합니다. - XML 레이아웃 파일과 문자열 파일을 구분하는 것이 좋음 - 안드로이드에서 다국어를 지원하려면? 더보기 app/res 폴더 안에 두 개의 폴더를 만든 후 그 안에서 stings.xml 파일을 넣어둔다. 영어는 values-en, values-ko - textColor 속성 : 텍스트뷰에서 표시하는 문자열의 색상, '#AARRGGBB' 포맷 사용 - textSize 속성 : 단말 해상도에 따라 글자의 크기를 일정한 크기로 보일 수.. 2019. 11. 28.

[Do it 개정6판_안드로이드 스튜디오]둘째마당_02 레이아웃 익히기 02-1 안드로이드에 포함된 대표적인 레이아웃 살려보기 ConstraintLayot LinearLayout RelativeLayout FrameLayout TableLayout - 뷰에 색 넣기 #ff0000 //빨간색 #00ff00 //녹색 #0000ff // 파랑 투명도를 넣고 싶다면 맨앞에 00 추가 - 배경으로 이미지를 지정할 수 있음 /app/src/main/res/drawable 이 폴더에 이미지 파일 넣기 02-2 리니어 레이아웃 사용하기 ■ 리니어 레이아웃의 방향 설정하기 방향 설정할 때는 orientation 속성을 사용하여 가로 방향은 horizontal, 세로 방향은 vertical이라는 값으로 설정 ■ 자바 코드에서 화면 구성하기 - xml 파일은 화면을 위해 만든 자바 소스 파일과.. 2019. 11. 27.

[Do it 개정6판_안드로이드 스튜디오]둘째마당_01 안드로이드 스튜디오 설치 안드로이드에서는 하나의 화면을 Activity로 Activity 안에 들어가는 각각의 구성 요소는 View를 만들어서 추가 Activity 안의 View들을 배치하는 것을 Layout 이라고 한다. 01-1 안드로이드 스튜디오 제대로 익히기 안드로이드 스튜디오는 인텔리제이라는 개발 도구를 확장시켜 만든 것 자동으로 앱 제작에 필요한 파일들을 만들어 주는데 앱의 첫 화면은 기본으로 제공 패키지 이름 : 앱을 구분하는 고유한 값 즉 전 세계에서 만들어지는 앱과 중복되지 않는 유일한 이름 shortcut : ctrl + tab = xml file java file 클래스에 커서를 대고 ctrl + Q 클래스에 대한 API를 볼 수 있음 메서드 소괄호 안에 들어갈 수 있는 파라미터(매개변수)가 어떤 것들이 있는.. 2019. 11. 27.

[안드로이드 스튜디오] 패키지 구조, 용어 정리 왼쪽 바에서 Android - app - manifests AndroidManifest.xml에서 - 아이콘 같은 소스 자료로 이동하려면 Ctrl 누르고 마우스를 갖다대면 링크로 넘어갈 수 있음 - Activitiy 선언을 담당하고 있음 Res - Drawable 외부 이미지를 가져와서 넣는 곳 Res - mipmap dpi 안드로이드에서 사용하는 해상도 단위 Res - values 주요 컬러들 지정해놓기 Res - strings 주요 단어들 지정해놓기 2019. 11. 23.

[안드로이드 스튜디오] intent 사용해서 화면 전환하기 MainActivity.java package com.ogrg.myapplication2; import androidx.appcompat.app.AppCompatActivity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; public class MainActivity extends AppCompatActivity { private Button btn_move; private EditText et_test; private String str; @Override protected void onC.. 2019. 11. 23.

[안드로이드 스튜디오] 라디오 버튼 사용하기 package com.ogrg.myapplication; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.RadioButton; import android.widget.RadioGroup; import android.widget.Toast; public class MainActivity extends AppCompatActivity { private RadioGroup rg_gender; private RadioButton rb_man, rb_woman; private Button .. 2019. 11. 23.