별의 공부 블로그 🧑🏻‍💻

🗒️ Programming/Android (29)

728x90
  1. 2021.06.14 [안드로이드] 크기를 표시하는 단위 (px, dp, sp, in, mm, em)

    크기를 표시하는 단위 뷰의 폭과 높이는 일반적으로 match_parent와 wrap_content 값을 지정하는 방식으로 사용함. 단말마다 해상도나 화면의 크기가 달라도 전체 화면을 기준으로 뷰를 배치할 수 있기 때문 뷰의 크기를 픽셀 값으로 지정하면 해상도에 따라 그 크기가 다르게 보이지만, match_parent와 wrap_content를 사용하면 아주 쉽게 여러 단말의 해상도를 지원할 수 있음. 뷰의 폭과 높이를 정수 값으로 지정하면서도, 픽셀 단위인 px가 아니라 dp나 sp와 같은 단위를 사용할 경우 해상도가 다른 단말에서도 뷰의 크기를 비슷하게 보이도록 만들 수 있음. 단위 단위 표현 설명 px 픽셀 화면 픽셀의 수 dp 또는 dip 밀도 독립적 픽셀(Density Independent Pix..

  2. 2021.06.02 [안드로이드] 코드가 입력되었을 때 필요한 import 구문을 자동으로 넣을 수 있도록 설정하기 (안드로이드 스튜디오)

    코드가 입력되었을 때 필요한 import 구문을 자동으로 넣을 수 있도록 설정하기 (안드로이드 스튜디오) 안드로이드 스튜디오 상단의 메뉴 중, [File] -> [Settings] [Settings] 대화 상자 왼쪽 창에서 [Editor] 항목 클릭 후 [General] -> [Auto Import] 선택 다음의 항목 체크 후 [OK] 버튼 클릭 Add unambiguous imports on the fly Optimize imports on the fly (for current project) 이 기능을 사용하지 않을 경우, [Alt] + [Enter] 버튼을 누르면 수동으로 import 구문을 넣을 수 있음.

  3. 2021.04.10 [안드로이드] 합성 프로퍼티(Synthetic Property)를 사용한 뷰 바인딩(View Binding)

    # 뷰 바인딩(View Binding) 안드로이드에서 UI 를 화면에 나타낼 때 레이아웃 파일인 xml 파일에 UI 의 요소를 태그 표기법으로 작성함. xml 파일을 코드에서 사용하려면 뷰(View) 로 불리는 UI 요소의 id를 코드에서 지정해야 함. 이 작업을 뷰의 바인딩(View Binding) 이라고 함. 뷰의 바인딩을 이용하려면 코틀린 안드로이드 확장이 build.gradle 파일에 지정되어야 함. 모듈 단위의 build.gradle(.app) 파일에 다음 플러그인이 명시되어 있는지 확인함. apply plugin: 'kotlin-android-extensions' # 합성 프로퍼티 사용하기 코틀린 확장 기능을 이용해 다음과 같이 합성 프로퍼티(Synthetic Property) 를 사용하여 U..

  4. 2021.04.09 [XML] widget.SwitchCompat

    구버전의 안드로이드 스튜디오에서 사용할 경우 1 2 3 4 5 6 신버전의 안드로이드 스튜디오에서 사용할 경우 : android.support.v7.widget.SwitchCompat 사용 불가, support library는 더 이상 쓰이지 않음. 1 2 3 4 5 6 ※ 참고 : link

  5. 2021.04.08 [안드로이드] kotlinx.android.synthetic.main.activity_main.* 를 불러올 수 없는 경우

    kotlinx.android.synthetic.main.activity_main.*를 불러올 수 없는 경우 MainActivity.kt 파일에서 kotlinx.android.synthetic.main.activity_main.* 패키지를 불러올 수 없는 경우가 있음. Android Studio 4.1 부터 kotlin-android-extensions 플러그인이 빠졌기 때문에 이러한 문제가 발생함. 해결 방법 build.gradle(.app)에 다음의 내용을 추가함. 상단의 Sync Now 클릭 1 2 3 4 plugins { ... id 'kotlin-android-extensions' }

  6. 2017.05.09 인터페이스 (Interface) & 추상 클래스(Abstract Class)와 어댑터(Adapter)

    1. 캡슐화 - 하나의 객체가 그 안에서 모든 기능을 수행하도록 하는 것을 말함. - 캡슐이나 풍선처럼 막에 싸여 있다면 모든 기능을 다른 객체가 건드릴 수 없으며 명령만 내릴 수 있음. 2. 인터페이스(Interface) - 인터페이스란 클래스에 접근할 수 있는 방법이 무엇인지를 정의한 것. - 사람들을 보호하기 위해 만든 옛날의 성을 생각해보면, 성을 '클래스'라고 하고, 성벽과 성문으로 성을 둘러싸는 것을 '인터페이스'라고 생각할 수 있음. - 즉, 인터페이스를 통해 사람들이 성을 드나들 수 있음. 3. '구현한다(Implement)'의 의미 - 구현한다는 것은 메서드를 위해 만든 중괄호 안에 실행할 수 있는 기능을 넣는다는 의미임. - 인터페이스에서는 껍데기만 있고 실행될 코드가 없던 것에 직접 ..

  7. 2017.05.06 스피너 (Spinner)

    12345678910111213141516171819202122 String[] groups = {"친구", "가족"};... Spinner spinner = (Spinner) findViewById(R.id.spinner);... ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_spinner_item, groups); adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);... spinner.setOnItemSelectedListener(new OnItemSelectedListener() { @Override public void onIte..

  8. 2017.05.05 Getter, Setter 함수

    - 클래스 안의 변수에 직접 접근하지 않고 함수를 만들어 그 결과 값을 참조하도록 변경할 때 대부분의 함수는 단순히 return 키워드를 사용해 변수를 함수의 결과 값으로 던져주는 역할만 하게 됨. - 이런 함수들을 Getter 함수라고 부르고 'get'이라는 단어 뒤에 변수의 이름을 붙여줌. - 거꾸로 변수에 값을 집어넣는 함수를 Setter 함수라고 하고 'set'이라는 단어 뒤에 변수의 이름을 붙여줌. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 class Leg { String left = "왼쪽"; String right = "오른쪽"; public String getLeft() { return left; } public void s..

  9. 2017.05.05 다른 클래스에 MainActivity 클래스 전달

    1. MainActivity.java 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 package ... import android.app.Activity; import android.os.Bundle; import android.support.v7.app.AppCompatA..

  10. 2017.05.05 이벤트 처리 방법

    1. 리스너(Listener)란? - 사용자가 어떤 명령을 내리는지 전달받아 처리하기 위해 대기하는 객체. 2. OnClickListener란? - 사용자가 화면을 클릭했을 때 미리 넣어둔 코드를 실행할 수 있도록 해줌. 3. 콜백(Callback) 메서드란? - 버튼을 클릭했을 때, 버튼에 미리 설정한 리스너 객체의 메서드를 호출하게 되는데 이렇게 PC나 스마트폰 등 컴퓨터에서 자동으로 어떤 메서드를 호출해주는 것을 '콜백'이라고 함. - 콜백이라는 말은 컴퓨터가 다시 사용자가 만든 메서드를 호출해준다는 의미이며, 이 때문에 이런 목적으로 만든 메서드를 '콜백 메서드'라고 함. 4. 이벤트(Event)와 이벤트 핸들러(Event Handler) - 사용자가 버튼을 클릭했을 때 버튼에 미리 설정한 OnC..

  11. 2017.05.03 상수 (Constant)

    - final : 상수를 만드는 키워드 - static을 붙이면 클래스 안에 있는 코드에서 뿐만 아니라 클래스 밖에서도 사용할 수 있음. (MainActivity.value07) 예) MainActivity.java 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 public class MainActivity extends AppCompatActivity { EditText editText; EditText editText2; TextView textView2; int value05 = 100; final int value06 = 100; static final int v..

  12. 2017.05.03 숫자와 문자열을 서로 바꿔주는 메서드

    - 문자열 -> Integer.parseInt() -> 숫자 숫자 -> String.valueOf() -> 문자열 예) MainActivity.java 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 public class MainActivity extends AppCompatActivity { EditText editText; EditText editText2; TextView textView2; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.lay..

  13. 2017.05.03 색 (Color)

    투명도 R G B # 00 ~ ff 00 ~ ff 00 ~ ff 00 ~ ff - 흔히 빨간색, 녹색, 파란색(Red, Green, Blue - RGB)라고 말하는 세 가지 색상을 조합하여 원하는 색상을 만들게 되는데 각 색상은 두 자리 16진수로 표시됨. - 색상 값을 지정할 때는 '#' 기호를 앞에 붙이게 되는데 이 기호와 RGB 색상 값 사이에 알파 값을 추가로 붙일 수 있음. -> 값이 00에 가까워질수록 투명해지고, ff에 가까워질수록 불투명해짐. #ffff0000 : (불투명한) 빨간색 #ff00ff00 : (불투명한) 초록색 #ff0000ff : (불투명한) 파란색

  14. 2017.03.13 멀티 터치 (Multi Touch)

    MainActivity.class 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697package org.androidtown.mymultitouch;import android.content.Context;import android.content.res.Resources;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.graph..

  15. 2017.01.25 매니페스트 (Manifest)

    *매니페스트 파일에 들어갈 수 있는 태그 항목들 [Reference] *메니페스트의 주요 역할 1. 어플리케이션의 자바 패키지 이름 지정 2. 애플리케이션 구성요소에 대한 정보 등록 (액티비티, 서비스, 브로드캐스트 수신자, 내용 제공자) 3. 각 구성요소를 구현하는 클래스 이름 지정 4. 애플리케이션이 가져야 하는 권한에 대한 정보 등록 5. 다른 애플리케이션이 접근하기 위해 필요한 권한에 대한 정보 등록 6. 애플리케이션 개발 과정에서 프로파일링을 위해 필요한 instrumentation 클래스 등록 7. 애플리케이션에 필요한 안드로이드 API의 레벨 정보 등록 8. 애플리케이션에서 사용하는 라이브러리 리스트 출처 : Do It! 안드로이드 앱 프로그래밍 (정재곤 지음, 이지스퍼블리싱)

  16. 2017.01.25 위험 권한의 세부 정보

    분류(Permission Group) 세부 권한(Permission) LOCATION (위치) - ACCESS_FINE_LOCATION - ACCESS_COARSE_LOCATION CAMERA - CAMERA MICROPHONE - RECORD_AUDIO CONTACTS - READ_CONTACTS - WRITE-CONTACTS - GET_ACCOUNTS PHONE - READ_PHONE_STATE - CALL_PHONE - READ_CALL_LOG - WRITE_CALL_LOG - ADD_VOICEMAIL - USE_SIP - PROCESS_OUTGOING_CALLS SMS - SEND_SMS - RECEIVE_SMS - READ_SMS - RECEIVE_WAP_PUSH - RECEIVE_MMS CAL..

  17. 2017.01.24 수명주기

    - 액티비티의 수명주기(Life Cycle) : 액티비티의 상태 정보가 변하는 것 *액티비티의 대표적인 상태 정보 상태 설명 실행(Running) 화면 상에 액티비티가 보이면서 실행되어 있는 상태. 액티비티 스택의 최상위에 있으며 포커스를 가지고 있음. 일시 중지(Paused) 사용자에게 보이기는 하지만 다른 액티비티가 위에 있어 포커스를 받지 못하는 상태. 대화상자가 위에 있어 일부가 가려져 있는 경우에 해당함. 중지(Stopped) 다른 액티비티에 의해 완전히 가려져 보이지 않는 상태. *액티비티의 상태 메소드 상태 메소드 설명 onCreate() 액티비티가 처음에 만들어졌을 때 호출됨 화면에 보이는 뷰들의 일반적인 상태를 설정하는 부분 이전 상태가 저장되어 있는 경우에는 번들 객체를 참조하여 이전 ..

  18. 2017.01.18 레이아웃 인플레이션

    - super.onCreate() 메소드 : 단순히 부모 클래스의 동일한 메소드를 호출. - setContentView() 메소드 : 애플리케이션이 XML 레이아웃의 내용을 이해하도록 만드는 역할을 함. - 안드로이드에서는 화면을 구성하는 방법으로 XML 레이아웃을 사용하는데 이 XML 레이아웃 파일의 내용은 애플리케이션이 실행될 때 메모리로 로딩되어 객체화 됨. - 인플레이션(Inflation) : XML 레이아웃에 정의된 내용이 메모리 상에 객체화되는 과정. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 package org.androidtown.basic.inflater; import android.app.Activi..

  19. 2017.01.17 기본 위젯들

    ① 텍스트뷰 1) text - 텍스트뷰에 보이는 문자열을 설정 - 텍스트뷰는 표시될 문자열이 없으면 텍스트뷰가 차지하는 영역도 알 수 없게 되므로 문자열은 반드시 지정해야 함. - 프로젝트를 처음 만들었을 때 문자열이 /res/values/strings.xml 파일 안에 정의된 것을 볼 수 있음. - /res/values/strings.xml에 정의된 문자열은 '@string/...' 포맷으로 참조. *안드로이드에서 다국어를 지원하는 방식 - 안드로이드에서 다국어를 지원할 때는 리소스에 공통으로 적용되는 병렬 리소스 로딩(Parallel Resource Loading) 방식을 사용함. - [res/values-ko] 폴더 (한국어), [res/values-en] 폴더 (영문) 2) textColor - ..

  20. 2017.01.17 프레임 레이아웃과 뷰의 전환

    - 프레임 레이아웃은 가장 기본적이고 단순한 레이아웃. - 안드로이드에서는 복잡한 화면을 구성할 때 프레임 레이아웃이 가지고 있는 중첩(Overlay) 기능을 자주 사용. - 프레임 레이아웃은 뷰를 하나 이상 추가할 경우에는 추가된 순서대로 차곡차곡 쌓이게 됨. - 가장 먼저 추가한 뷰가 가장 아래쪽에 쌓이고 그 다음에 추가한 뷰는 그 위에 쌓이게 되는데 이렇게 되면 나중에 쌓인 뷰만 보이게 됨. - 여러 개의 뷰를 서로 전환하면서 보고 싶을 때 사용할 수 있음. - addView()나 removeView()와 같은 메소드를 이용해서 뷰를 추가하거나 삭제하고 동시에 뷰를 보이게 하거나 보이지 않게 함으로써 화면을 손쉽게 전환할 수 있음. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1..

  21. 2017.01.17 스크롤뷰

    - 안드로이드에서는 다른 언어에서처럼 스크롤바를 일일이 뷰의 보이는 영역과 연결하는 과정 없이 단순히 스크롤뷰 안에 뷰를 넣는 것으로 스크롤이 가능함. - 스크롤뷰에 뷰를 넣기 위해서는 ScrollView 태그를 사용하며 그 안에는 한 개의 뷰가 들어갈 수 있음. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 Colored by Color Scripter cs 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45..

  22. 2017.01.17 테이블 레이아웃

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 // 테이블의 첫 번째 행 // 테이블의 두 번째 행 Colored by Color Scripter cs - shrinkColumns : 특정 열을 자동 축소 → 부모 컨테이너의 폭에 맞추도록 각 열의 폭을 강제로 축소 - stretchColumns : 특정 열을 자동 확장 → 부모 컨테이너의 여유 공간을 모두 채우기 위해 각 열의 폭을 강제로 늘림 - layout_span 속성을 이용하면 HTML 코드를 구성할 때처럼 여러 열에 걸쳐 뷰를 보이게 할 수도 있음. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 2..

  23. 2017.01.17 상대 레이아웃

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 Colored by Color Scripter cs 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 Colored by Color Scripter c..

  24. 2017.01.16 리니어 레이아웃

    - XML 레이아웃 파일의 가장 위쪽에는 xmlns:android 속성이 들어가 있음. → 한 파일에 한 번만 들어가면 되는 속성으로 안드로이드 API에서 정의한 요소들을 사용한다는 의미. → 하나의 XML 레이아웃 파일에 한 번씩 들어간다고 생각하면 쉬움. 1) 방향 설정하기 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 Colored by Color Scripter cs 2) 자바 코드에서 화면 구성하기 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 package org.androidtown.ui.linearlayout; imp..

  25. 2017.01.16 레이아웃

    속성 설명 채우기 : fill model 뷰를 부모뷰의 여유 공간에 어떻게 채울 것인지를 설정합니다. 방향 : orientation 뷰를 추가하는 방향을 설정합니다. 정렬 방향 : gravity 뷰의 정렬 방향을 설정합니다. 여유 공간 : padding 뷰의 여유 공간을 설정합니다. 공간가중치 : weight 뷰가 차지하는 공간의 가중치 값을 설정합니다. *방향(orientation) 속성은 리니어 레이아웃의 경우에만 적용됨. *안드로이드에서 제공하는 대표적인 레이아웃 레이아웃 이름 설명 리니어 레이아웃 박스(Box) 모델 사각형 영역들을 이용해 화면을 구성하는 방법 표준 자바의 BoxLayout과 유사 상대 레이아웃 규칙(Rule) 기반 모델 부모 컨테이너나 다른 뷰와의 상대적 위치를 이용해 화면을 구..

  26. 2017.01.16 뷰와 뷰그룹

    1. 뷰(View) : 일반적으로 컨트롤이나 위젯이라는 이름으로 불리는 UI 구성 요소 2. 뷰그룹(ViewGroup) : 이러한 뷰들을 여러 개 포함하고 있는 것 3. 위젯(Widget) : 뷰 중에서 일반적인 컨트롤의 역할을 하고 있는 것 4. 레이아웃(Layout) : 뷰그룹 중에서 내부에 뷰들을 포함하고 있으면서 그것들을 배치하는 역할을 하는 것 *자주 사용되는 대표적인 뷰의 속성 속성 설명 layout_width, layout_height 뷰의 폭과 높이를 설정합니다. id 뷰의 ID를 지정합니다. background 뷰의 배경을 설정합니다. 1) layout_width, layout_height ① match_parent : 무조건 남아 있는 여유 공간을 채움. ② wrap_content : ..

  27. 2017.01.08 인텐트와 데이터 전달

    속성 설명 ACTION_DIAL tel:01077881234 주어진 전화번호를 이용해 전화걸기 화면을 보여줌. ACTION_VIEW tel:01077881234 주어진 전화번호를 이용해 전화걸기 화면을 보여줌. URI 값의 유형에 따라 VIEW 액션이 다른 기능을 수행함. ACTION_EDIT content://contacts/people/2 전화번호부 데이터베이스에 있는 정보 중에서 ID 값이 2인 정보를 편집하기 위한 화면을 보여줌. ACTION_VIEW content://contacts/people 전화번호부 데이터베이스의 내용을 보여줌. *명시적 인텐트(Explicit Intent) 1) 인텐트에 클래스 객체나 컴포넌트 이름을 지정하여 호출할 대상을 확실히 알 수 있는 경우 *암시적 인텐트(Imp..

  28. 2016.12.25 화면 구성과 화면 간 이동

    1) 안드로이드 어플리케이션의 네 가지 구성요소 ① 액티비티(Activity) ② 서비스(Service) ③ 브로드캐스트 수신자(Broadcast Receiver) ④ 내용 제공자(Content Provider) 2) 액티비티를 만들어 추가하고 서로 간에 상태 코드나 응답을 주고받는 방법 새로운 액티비티의 XML 레이아웃 정의 메인 레이아웃 XML 파일을 복사하고 수정하여 새로운 액티비티의 화면 구성을 XML 레이아웃으로 정의 새로운 액티비티 코드 작성 메인 액티비티 자바 코드를 복사하고 수정하여 새로운 액티비티 코드를 작성 메인 액티비티에 요청 코드 정의 새로운 액티비티를 띄울 때 사용할 요청 코드를 상수로 정의 새로운 액티비티 띄우기 버튼 등의 이벤트를 처리하여 startActivityForResul..

  29. 2016.12.20 [안드로이드] 안드로이드에서 제공하는 대표적인 레이아웃

    레이아웃 이름 설명 리니어 레이아웃 박스(Box) 모델 사각형 영역들을 이용해 화면을 구성하는 방법 표준 자바의 BoxLayout과 유사 상대 레이아웃 규칙(Rule) 기반 모델 부모 컨테이너나 다른 뷰와의 상대적 위치를 이용해 화면을 구성하는 방법 프레임 레이아웃 기본 단위 모델 하나의 뷰만 보여주는 방법 가장 단순하지만 여러 개의 뷰를 추가하는 경우 중첩시킬 수 있으므로 뷰를 중첩한 후 각 뷰를 전환하여 보여주는 방식으로 사용할 때 유용함 테이블 레이아웃 격자(Grid) 모델 격자 모양의 배열을 이용하여 화면을 구성하는 방법 HTML에서 많이 사용하는 정렬 방식과 유사하여 실용적임 스크롤 뷰 스크롤이 가능한 컨테이너 뷰 또는 뷰그룹이 들어갈 수 있으며 화면 영역을 넘어갈 때 스크롤 기능 제공 ▲ 안드..

728x90


📖 Contents 📖