![](http://i1.daumcdn.net/thumb/C200x200/?fname=https://blog.kakaocdn.net/dn/FubgP/btrzn94UuMo/6YPMOh8ykvqVnSJNX0gXwk/img.png)
화면에 추가할 수 있는 View 에는 다양한 그리기 방법을 적용할 수 있다. 표준 자바에서와 거의 동일한 방식으로 구성할 수 있지만 자바가 Graphics 객체에 그래픽을 그린다면, 안드로이드는 Canvas 객체에 그려야 한다는 것이 차이점이다. 별로 어려운 내용은 아니니, 예제와 함께 따라가 보자. 새로운 View를 생성하고 Graphic을 그리는 단계는 보통 5개 단계로 나눌 수 있다. 1. 새로운 클래스를 만들고 View를 상속받는다. 우선, custom 패키지를 생성하고 그 아래에 View 객체를 상속받는 CustomView 클래스를 생성한다. 생성자를 추가한 뒤, 생성자를 초기화할 init() 메서드도 함께 작성한다. ◎custom.CustomView.java package com.example..
![](http://i1.daumcdn.net/thumb/C200x200/?fname=https://blog.kakaocdn.net/dn/bbqYu9/btrzndlMikz/ljkwXjedk8aCrk7WCDwBEK/img.gif)
직전 포스팅에서 다뤘던 예제를 조금만 수정하여 앨범에서 데이터를 가져오는 대신, 연락처 목록에서 연락처를 가져와 보자. 연락처을 열람하고 데이터를 가져오기 위해서는 READ_CONTACTS 권한이 필요하다. 직전 포스팅에서 대부분의 내용은 다뤘으므로, 바로 코드만 확인해보자. ◎MainActivity.java package com.example.ssssssdead; import android.annotation.SuppressLint; import android.app.Activity; import android.content.ContentResolver; import android.content.Intent; import android.database.Cursor; import android.graph..
Android 공부에 사용하는 참고서가 2019년 개정판이라 액티비티를 띄울 때마다 startActivityForResult 메서드를 호출하여 그 결과 값을 가져온다. deprecated 메서드를 호출할 때마다, 괜히 헛공부하는 느낌이 들어서 Android 에서 권장하는 액티비티의 결과 값을 참조하는 방법을 좀 정리해보려고 한다. 예제는 직전에 사용했던 앨범에서 이미지를 가져오는 예제 코드를 비교를 위해 사용하겠다. ◎(기존) MainActivity.java package com.example.samplealbum; import android.app.Activity; import android.content.ContentProvider; import android.content.ContentResolve..
![](http://i1.daumcdn.net/thumb/C200x200/?fname=https://blog.kakaocdn.net/dn/wQ1ce/btrzjoNHybb/kXBcYLUsgjtEIyP9ksxAgK/img.png)
실제 앱을 개발할 때, 직접 내용 제공자를 사용하는 일보다 이미 존재하는 내용 제공자를 사용해야 하는 경우가 더 많을 것이다. 그 중 앨범이나 연락처에 있는 데이터를 조회하는 경우가 내용 제공자를 사용하는 가자우 대표적인 경우라고 할 수 있다. 이번 포스팅은 앨범을 조회하여 간단하게 이미지 뷰에 띄우는 예제를 확인해보려고 한다. 우선, 앨범을 가져와야 하는 위험 권한을 설정해줘야 하므로 매니페스트 파일에서 권한 설정과 어플이 실행되었을 때 권한을 허용할 수 있도록 해줘야 한다. ◎AndroidManifest.xml 다음으로 Intent 객체를 하나 생성하여 해당 Intent 객체의 MIME 타입과 액션 정보를 지정한 뒤, startActivity()를 호출하여 해당 intent 객체가 액티비티를 띄우도록..
![](http://i1.daumcdn.net/thumb/C200x200/?fname=https://blog.kakaocdn.net/dn/bRSJDP/btrzihaoAaz/XGHkeWM5UpbrKRYcuB7H11/img.png)
내용 제공자(Content provider)는 한 앱에서 관리하는 데이터를 다른 앱에서도 접근할 수 있도록 해주는 안드로이드 어플의 구성 요소이다. 내용 제공자를 사용하면 다른 앱이 열어둔 데이터 접근 통로를 이용할 수 있으며, 반대로 다른 앱에게 데이터 접근 통로를 열어줄 수 있다. 내용 제공자에서 공유할 수 있는 데이터는 다음과 같다. 데이터베이스 파일 SharedPreference 데이터베이스를 다룰 때는 CRUD 동작을 모두 사용할 수 있다. 기본적으로 내용 제공자에서 허용한 통로로 접근을 하려면, ContentResolver객체가 필요하다. ContentResolver 객체는 데이터 제공자와 통신하여 ContentProvider를 구현하는 객체의 인스턴스를 가져오게 되고, 해당 provider ..
![](http://i1.daumcdn.net/thumb/C200x200/?fname=https://blog.kakaocdn.net/dn/bB7eTn/btrzfAfivBv/mkpsCNhVpyXOHaD4aOH2b0/img.png)
직전 포스팅에 사용했던 예제를 그대로 이어서, 데이터를 조회하는 방법을 확인해보려고 한다. 표준 자바에 preparedStatement를 사용하는 것과 비슷한데, SELECT 문을 사용하려면 반드시 Cursor 객체를 사용해야 한다. SQLiteDatabase객체가 가지고 있는 rawQuery() 메서드를 사용하여 Cursor 객체를 참조할 수 있다. public Cursor rawQuery(String sql, String[] selectionArgs) rawQuery를 한번 실행시켰으면, Cursor 객체가 가지고 있는 moveTo~ 메서드를 사용하여 커서를 이동하여야 다음 select 문을 계속해서 실행 시킬 수 있다. 바로 한번 예제를 확인해보자. 예제는 직전 포스팅에서 사용했던 예제를 그대로 사..
데이터베이스를 만드는 것 이외에도 테이블 정의가 바뀌어서 스키마를 업그레이드할 필요가 있을 때는 Helper 클래스를 사용할 수 있다. public SQLiteOpenHelper(Context context, String name, SQLiteDatabase.CorsorFactory factory, int version) SQLiteOpenHelper Class는 데이터베이스를 만들거나 열기 위해 필요한 작업들을 도와주는 역할을 한다. 핵심은 integer type인 버전 정보를 다르게 지정하여 데이터베이스의 스키마나 데이터를 변경하는 것이다. SQLiteOpenHelper 객체는 데이터베이스를 만들거나 열기 위해 필요한 작업을 도와주는 역할을 하는거지 데이터베이스를 직접 생성하느거 하지는 않는다. SQ..
![](http://i1.daumcdn.net/thumb/C200x200/?fname=https://blog.kakaocdn.net/dn/Z6hcf/btry4SAqeZT/d7LIvLUp7ko7oEOKAbk7ek/img.png)
안드로이드는 임베디드 데이터베이스로 개발된 SQLite를 가지고 있다. 이는 표준 SQL을 지원하여 기존에 사용하던 SQL을 그대로 사용할 수 있다는 매우 큰 장점을 가지고 있다. 우선 데이터베이스를 구성하려면 Context 객체가 제공하는 public abstract SQLiteDatabase openOrCreateDatabase(String name, int mode, SQLiteDatabase.CursorFactory factory) public abstract boolean deleteDatabase(String name) 메서드를 호출하여 생성, 혹은 삭제할 수 있다. 이 때, openOrCreateDatabase의 3번째 파라미터는 null이 아닌 객체를 지정할 경우, 쿼리의 결과 값으로 반환..
![](http://i1.daumcdn.net/thumb/C200x200/?fname=https://blog.kakaocdn.net/dn/bu8WTG/btryZanxXu7/z6GRiv9UzINhw6kBxECHN1/img.png)
웹서버에 요청하고 응답을 받을 때는 직전 포스팅과 같이 HttpURL Connection 객체를 사용할 수 있지만 요청과 응답에 필요한 코드의 양도 많으며 Handler와 Thread 를 사용하기 때문에 이에 대한 개념이 부족하면 다소 어려울 수 있다. 이런 문제를 해결하기 위해 사용하는 여러 라이브러리가 존재하는데, 그 중 가장 많이 사용되는 라이브러리는 Volley이다. Volley는 Request 객체를 만들고 이 Request 객체를 Request Queue에 넣어주기만 하면 알아서 웹서버에 요청을 하고 응답을 받는 과정을 진행한다. 이 모든 과정을 메인 스레드에서 처리하기 때문에 따로 스레드를 생성할 필요도 없고, 메인에 있는 객체를 다루기 위한 핸들러를 구성할 필요도 없다. 바로 한번 확인해보..
![](http://i1.daumcdn.net/thumb/C200x200/?fname=https://blog.kakaocdn.net/dn/pIYKB/btryV23323H/X5v3yIMNkqP7Bpvb5ajeH0/img.png)
HTTP로 웹 서버에 접속하여 특정 요청을 보내거나 응답을 보내는 동작의 경우, 표준 자바의 방식을 그대로 사용할 수 있다. 자바에서 HTTP 클라이언트를 만드는 가장 간단한 방법은 URL 객체를 만들고 이 객체의 openConnection() 메서드를 호출하여 HttpURLConnection객체를 만드는 것이다. 어려운 내용은 없으니 바로 한번 예제를 확인해보자. ◎MainActivity.java package com.example.samplehttp; import android.os.Handler; import android.os.Looper; import android.view.View; import android.widget.Button; import android.widget.EditText; ..
- 인천 구월동 이탈리안 맛집
- redux-thunk
- react-native
- Promise
- 파니노구스토
- 정보보안기사 #실기 #정리
- react
- redux
- 이탈리안 레스토랑
- await
- 맛집
- AsyncStorage
- javascript
- Async
- 인천 구월동 맛집
- Total
- Today
- Yesterday