목록Computer (144)
안드로이드 개발자의 창고
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cDm21Q/btsm8NYBGA0/n4latV7ftusKEiSNRsICtk/img.png)
출처 : 안드로이드 앱스쿨 2기 윤재성 강사님 수업 PPT 📖 assets raw 데이터 파일은 raw 폴더에 담으면 스트림을 쉽게 추출할 수 있다는 장점이 있지만 하위 폴더를 만드는 등 계층적으로 관리할 수 없다는 단점이 있다. 만약 파일들을 계층적인 폴더 구조를 만들어 관리하겠다면 assets 폴더를 사용한다. assets 폴더는 res 폴더 내부가 아니므로 리소스(R 클래스)로 관리할 수 없다. 예제 코드 assets 파일 생성 후 담겨있는 폴더와 데이터 assets/text/data.txt 파일 읽어오기 button.setOnClickListener { // Assets 폴더에 있는 파일과 연결된 스트림 추출 val inputStream = assets.open("text/data.txt") va..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/YoYDL/btsm8hTayGV/YtK8xKkK1vJYEly7POnGK0/img.png)
출처 : 안드로이드 앱스쿨 2기 윤재성 강사님 수업 PPT 📖 Raw 가공되지 않은 원천 데이터 사운드나 동영상, 사진 등을 데이터의 용량을 줄이기 위해 압축을 하게 되는데 이러한 가공을 거치지 않은 순수 데이터들을 raw 데이터라고 부른다. 안드로이드에서는 각종 데이터 파일이나 동영상, 사운드 등의 데이터를 사용할 때 주로 사용한다. raw 폴더 실행 중 다운받거나 생성된 데이터 파일은 내부 저장소나 외부저장소에 저장해 두었다가 필요할 때 읽어오면 된다. 만약 데이터가 저장된 파일을 애플리케이션 내부에 포함 시키겠다면 raw 폴더에 저장하면 된다. raw 폴더에 저장된 파일은 스트림을 손쉽게 추출할 수 있다. 예제 코드 raw 파일 생성 후 저장된 파일들 text 파일 읽어오기 button.setOnC..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cW6tyv/btsm9CovO6r/e6CDZoWsUgr5hyG8EiGAg1/img.png)
출처 : 안드로이드 앱스쿨 2기 윤재성 강사님 수업 PPT 📖 파일 입출력 안드로이드는 애플리케이션이 데이터를 저장할 수 있는 저장소를 두가지로 제공하고 있다. 내부 저장소 애플리케이션을 통해서만 접근이 가능하다. openFileInput, openFileOutput 외부 저장소 단말기 내부의 공유 영역으로 모든 애플리케이션이 접근 가능하다. 단말기를 컴퓨터에 연결하면 탐색기를 통해 접근할 수 있는 영역을 의미한다. FileInputStream, FileOutputStream Scoped Storage 정책 외부 저장소에 저장된 파일은 모든 애플리케이션이 접근할 수 있어 보안에 문제가 발생함에 따라 보안 강화를 위해 외부 저장소 접근을 제한한 정책 예제 코드 내부 저장소 파일을 저장한 애플리케이션만 사용..
'vector' : 선언되지 않은 식별자입니다. #include 를 해줬는데도 위와 같은 에러가 날 경우 using namespace std; 선언 없이 바로 vector를 사용하는 경우 나타난다. std::vector 또는 using namespace std; 선언이 필요하다.
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/3HgoI/btsmBhUUttf/dIgpiGRc2jMH5Aspik2HzK/img.gif)
출처 : 안드로이드 앱스쿨 2기 윤재성 강사님 수업 PPT 📖 Application Class 안드로이드 애플리케이션에 단 하나를 지정할 수 있는 객체 이 객체는 같은 안드로이드 애플리케이션이라면 어디서든 접근할 수 있다. 이를 통해 안드로이드의 다양한 구성요소에서 공통적으로 사용하는 데이터를 관리할 수 있다. Application을 상속받는 클래스를 만들고 프로퍼티를 정의한다. AndroidManfest.xml에 application 태그의 name 속성에 지정하여 사용한다. 예제 코드 AndroidManfest.xml
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/GAYXo/btsmHHKuBcK/wXt6qSgKyJhahKGfX9Co90/img.gif)
출처 : 안드로이드 앱스쿨 2기 윤재성 강사님 수업 PPT 📖 Code를 이용한 View 생성 View 객체를 생성할 때는 생성자에 Context 객체를 설정해줘야 한다. Context는 어떠한 작업을 하기 위한 정보를 가지고 있는 객체를 통칭한다. 안드로이드에서는 Activity가 Context를 상속받고 있기 때문에 this를 넣어주면 되고 그 외에는 Context를 구하는 다양한 메서드를 통해 설정한다. LayoutParam LayoutParam은 View가 배치될 때 필요한 공통 속성을 설정할 수 있는 객체이다. 이를 통해 가로 세로 길이를 설정해 줘야 한다. 예제 코드 activity_main.xml MainActivity.kt class MainActivity : AppCompatActivit..
출처 : 안드로이드 앱스쿨 2기 윤재성 강사님 수업 PPT 📖 XML을 이용한 View 객체 생성 Layout Inflater 지금까지 예제는 layout 폴더에 있는 xml 파일을 통해 화면을 구성하였다. 이는 Activity가 처음 나타날 때의 모습을 설정하게 된다. 만약 실행 중 View를 만들어 추가할 경우에는 코드를 통해 View를 만들어 추가해줘야 한다. LayoutInflater를 사용하면 xml로 만든 화면 모양을 View 객체로 만들어 사용할 수 있다. 예제 코드 activity_main.xml MainActivity.kt class MainActivity : AppCompatActivity() { lateinit var activityMainBinding: ActivityMainBind..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bKIe8g/btsmtcYN9i6/hhFcuF9b1JodKTmsbsqEw1/img.png)
출처 : 안드로이드 앱스쿨 2기 윤재성 강사님 수업 PPT 📖 DrawerLayout 좌측 상단의 네비게이션 버튼을 누르면 좌측에서 메뉴가 나타나는 UI 대부분이 구현되어 있으므로 필요한 부분만 변경해서 사용한다. 새로운 Activity를 추가할 때 Navigation Drawer Activity를 선택한다. 구조 activity_main.xml 다른 layout을 포함시키는 요소 프래그먼트가 교체되는 화면 부분에 해당하며 layout/app_bar_main.xml 파일이 설정되어 있다. nav_view(NavigationView) 좌측에서 나타나는 메뉴가 나타날 수 있도록 해주는 View headerLayout에는 nav_header_main.xml을, menu에는 menu/activity_main_d..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bKAzth/btsmtcLeYVt/ZVPkR3JXpsYY9o2Kuco841/img.gif)
출처 : 안드로이드 앱스쿨 2기 윤재성 강사님 수업 PPT 📖 TabLayout AppbarLayout에 TabBarLayout과 ViewPager를 통해 탭을 구성할 수 있다. 예제 코드 activity_main.xml MainActivity.kt class MainActivity : AppCompatActivity() { lateinit var activityMainBinding: ActivityMainBinding // 탭에 표시할 이름 val tabName = arrayOf( "탭1", "탭2", "탭3", "탭4", "탭5" ) // 표시할 Fragment들을 담을 리스트 val fragmentList = mutableListOf() override fun onCreate(savedInstanc..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/nDQ8L/btsl1fv32Rt/vuWQV6CpJSY0ndXe5iyz30/img.gif)
출처 : 안드로이드 앱스쿨 2기 윤재성 강사님 수업 PPT 📖 AppBarLayout ToolBar와 다른 View들을 관리하기 위해 제공되는 Layout AppBar Layout은 반드시 CoordinatorLayout 안에 포함되어 있어야 한다. AppBar Layout는 CoordinatorLayout 를 통해 다른 View들과 연동될 수 있다. CoordinatorLayout CoordinatorLayout은 View를 배치하기 보단 배치된 View들을 관리하기 위한 목적으로 사용한다. CoordinatorLayout에 배치된 View에서 어떠한 사건이 발생하면 이를 감지하여 배치된 다른 View들에게 전달하거나 스스로 어떤 처리를 할 수 있는 Layout이다. 예제 코드 Collapsin..