본문 바로가기

KUIT-앱 개발 프로젝트 동아리23

7주차실습(3)-room db&코루틴 응용 지난 7주차 실습 프로젝트에서 그대로 할거임 지난 시간 복습 IO 스레드에서 돌아가는 코루틴 만들어서 데이터 추가 그리고 메인스레드로 돌아와서 say "데이터 다시 그려" 이번엔 변수가 아닌 데이터베이스에 데이터를 추가해서 가져와서 레이아웃으로 그려보겠다. 1. 데이터베이스 객체 수정 우선 데이터베이스 객체 파일인 MyStringDatabase.kt로 가서 .allowMainThreadQueries().build() // databaseBuilder() 뒤에 꼭 build() 붙여야함 이걸 지워줄거임 원래는 메인스레드에서 데이터베이스에 접근하는게 안됐는데 요청했었음. 이거 지웠으니 이제 메인스레드가 아닌 스레드에서만 데이터에 접근할수있음 2. MainActivity 수정 2-1. 데이터베이스 변수 설정 .. 2023. 11. 10.
7주차 실습(2)-코루틴(coroutine) 1주차 실습파일에서 이부분을 주석처리해주고 시작하자 // var myStringDatabase : MyStringDatabase? = null // 데이터베이스 객체 만듦 이부분도! 그러면 room db를 추가하기 전이고 dataList도 빈 ArrayList상태라서 출력해보면 아무것도 안나온다. 이번 실습에서는 coroutine으로 다른 스레드에서 데이터를 추가하고 다시 메인 스레드로 와서 ui를 그리는 작업을 해볼 것이다. 코루틴을 쓰려면 먼저 scope를 선언해야 한다. GlobalScope도 있고 MainScope도 있지만 여기서는 새로 만들 것이다. 1. 스코프 선언 CoroutineScope(Dispatchers.IO).launch{ } 스코프를 통해 넘겨줄 것은 '어느 스레드에서 실행할 것이.. 2023. 11. 10.
7주차 실습(1)-roomDB 1. 프로젝트 만들고 2. 그래들 dependendcies에 room // RoomDB implementation("androidx.room:room-runtime:2.6.0") annotationProcessor("androidx.room:room-compiler-processing:2.6.0") // kapt("androidx.room:room-compiler:$room_version") 맨마지막줄은 왜 잘 안되는줄 모르겠음 3. 똑같이 그래들 android에 뷰바인딩 설정해주고 4. activity_main.xml에 아무 리사이클러 뷰 선언하고 아이디 달아줌 id는 rv_home 5. MainActivity에 뷰바인딩 하기 package com.iyr.a7thweekpractice import an.. 2023. 11. 10.
6주차 실습-Thread 스레드의 context switching이 어떻게 이루어지는지, 멀티스레드프로그래밍을 하면서 알아볼 예정. 지난 주의 뷰페이저 실습 프로젝트에서 이어서 할 것이다. 1. 첫번째 스레드 실습 1-1. onCreate()에 testThread1()라는 함수 호출하고 onCreate밖에 함수 선언하기 1-2. private fun testThread1() // testThread1() 함수 private fun testThread1() { Thread(){ for (i in 1 until 1001){ print(i) } }.start() Thread(){ for (i in 1000 downTo 0){ print(i) } }.start() } 여기서 실행해서 logcat 보면 스레드가 990쯤부터 끊기고 다시 .. 2023. 10. 31.
6주차 이론-Thread KeyWord: 프로그램, 프로세스, 스레드, 멀티프로세스, 멀티스레드 프로그램이란? 컴퓨터에서 실행 가능한 명령어들의 집합으로, 특정 작업을 수행하기 위한 코드와 데이터의 모음 쉽게말해, 작성한 코드가 디스크에 저장된 형태로 존재함. 물리적인 공간인 디스크에 저장된 프로그램이, 논리적인 공간인 메모리에 올라오고, 리소스 할당과 관리를 운영체제가 담당한다. 그리고 이렇게 메모리에 올라와서(적재되어) 실행중인 프로그램을 프로세스라 한다. 프로그램: 작성한 코드 프로세스: 운영체제에 의해 메모리에 적재되어 실행중인 프로그램 프로세서(cpu 라고도 함): 프로세스나 스레드같은 작업을 처리하는 하드웨어 프로세스는 자신의 코드 시작점부터 종료지점까지 순차적인 실행 흐름을 가짐 ex. Main 함수부터 실행. 그런.. 2023. 10. 30.
5주차 실습(2)-TabLayout 지난시간까지는 뷰페이저에서 Glide 라이브러리로 사진 불러오기 햇음 이번시간에는 TabLayout 연습할 예정. 1. 프로젝트 만들기. TabLayoutPractice 2. 뷰바인딩 설정 3. dependencies에서 material 때문에 오류날수도 있는데 그때는 1.8.0으로 버전 낮춰주기 4. 오늘은 glide 사용 안할거라서 아무 이미지 파일 drawable 파일에 넣어주기 5. mainActivity에 레이아웃바인딩 해주기 // MainActivity package com.iyr.tablayoutpractice import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import com.iyr.tablayoutpract.. 2023. 10. 27.
5주차 실습(1)-Glide 라이브러리, ViewPager2 1. 그래들 뷰바인딩 설정 2. 그래들 glide 라이브러리 사용설정 복붙 3. AndroidManifest에서 인터넷 사용설정 해줘야 glide 라이브러리 쓸수있음 4. 메인액티비티에서 viewPager2랑 텍스트뷰 넣기 5. 이미지 넣을 레이아웃 만들기 item_image.xml 전에는 리소스파일에 이미지 넣고 R.drawable.id 이런식으로 불러왔었는데 glide 라이브러리로 이미지를 불러와보겠음 메인액티비티에서 glide 라이브러리 설정하고 데이터 받아오기 전에, 어댑터 설정을 먼저 해주도록 하겠음 6. 뷰페이저 어댑터 구현 액티비티 생성 ImageSliderVPAdapter 이때 glide를 사용하기 위해서는 VPAdapter가, 뷰페이저가 있는 Activity나 Fragment의 conte.. 2023. 10. 27.
4주차 실습 복습 아이템xml에서 아이템 크기 wrap_content해서 너무 크지 않게 헷갈리는 부분-액티비티와 프래그먼트에서 binding.root 불러오는 차이 어느 메서드(onCreate, onCreateView 등)에서 binding.root 불러오는지 Feat. setContentView 어댑터 메서드 역할 이해안됨 뭘 어떤 타입으로 불러오는지 매번 헷갈림 자꾸 뷰홀더를 상속받는데 형식이 눈에 안익었음 레이아웃, 액티비티 따로 만들었을때 binding 어떻게 하는지 이미지 리소스 안불러와질때 의욕상실 뷰홀더는~ inner class로서~~ implement하는 members와 다르게 따로 만들어줘야함~ 뷰홀더는 아이템뷰 객체 가짐, 그래서 아이템레이아웃을 바인딩해야함. 그리고 이 뷰홀더는 RecyclerView.. 2023. 10. 27.
4주차 실습-RecyclerView 지금 총 세 연결이 필요하다. SentenceActivity ➡️ 어댑터 연결부분 Adapter ➡️ listview_item.xml 연결부분 listview_item.xml ➡️ Activity_sentence.xml의 listview 연결부분 아이템 레이아웃 만들기 리스트 출력될 화면 만들기 메인액티비티에 뷰바인딩으로 일단 binding root 불러오기 Tip: 맥북에서 파일 새로 만들때 Command+N하면 New 만들기 뜸 KotlinClass/File에서 class 선택하고 WordAdapter라는 이름의 어댑터 만들어주기 어댑터는 다 만들어줬고, 이제 메인액티비티로 가보자 메인액티비티에서 첫번째로 할 일은 '데이터 만들기'이다. 리스트 변수 선언해주고 initWords라는 리스트 초기화 함수.. 2023. 10. 4.
3주차 미션-Bottom Navigation XML의 에서 app:labelVisibilityMode - auto: 클릭한 애만 선택한 탭의 제목 보임 - labeled: 클릭여부 상관없이 다 보임 - unlabeled: 다 안보임 그리고 item:ActiveIndicatorStyle="@null" : 클릭하면 물방울 나오는 효과 메뉴태그 res폴더-menu 들어가면 태그에 id, title, icon 속성들이 정의되어 있음 title은 label로서 보임 selector 라는 xml파일이 drawable 폴더에 있음 select 여부에 따라 보여주는 아이콘 다름 mypage fragment 만들고.. xml파일에서 카드뷰 cardElevation: 그림자 지우려면 0dp 테두리 둥글게 하기 참고자료:https://wimir-dev.tistory... 2023. 10. 4.