본문 바로가기

전체 글58

[Android 앱개발 숙련] RecyclerView 리사이클러 뷰 (# 추가하기) 1. RecyclerView 1) 개념 - 안드로이드 앱에서 리스트 형태의 데이터를 표시하는 데 사용되는 위젯 (AdapterView를 표현하는 여러 방법 중 하나) - 여러 아이템을 스크롤 가능한 리스트로 표현, 많은 아이템을 효율적으로 관리하고 보여줌 (세로, 가로 등) - 한정적인 화면에 많은 데이터를 넣을 수 있는 view (view를 재활용해서 사용하겠다는 것) 2) ListView 와 RecyclerView ListView RecyclerView - 사용자가 스크롤할 때 마다 위에 있던 아이템은 삭제되고, 맨 아래의 아이템은 생성되길 반복 - 사용자가 스크롤할 때 위에 있던 아이템이 재활용되어 아래로 이동, 재사용됨 - 삭제와 생성을 반복해 성능에 좋지 않음 - 10개정도의 view만 만들고 .. 2024. 4. 11.
[Android 앱개발 숙련] 어댑터 뷰, 리스트 뷰, 그리드 뷰 (# 추가하기) 1. 어댑터 뷰 : 여러개의 항목을 다양한 형식(이미지뷰 + 텍스트뷰 등)으로 나열하고 선택할 수 있는 기능을 제공하는 뷰 // 하나 만들어두고 재사용하는...st - 표시할 항목 데이터를 직접 관리하지 않고, 어댑터라는 객체로부터 공급받음 어댑터 뷰 어댑터 데이터 원본 1) 리스트 뷰 : 항목을 수직으로 나열 2) 그리드 뷰 : 항목을 격자 형태로 나열 - 객체 배열 - 리소스 - 데이터베이스 - 컨텐츠 프로바이더 1) 어댑터 : 데이터를 관리하며, 데이터 원본과 어댑터뷰 사이의 중계 역할 수행 = 어댑터에 정의된 인터페이스를 바탕으로 필요한 정보를 요청해, 항목 뷰를 화면에 표시하거나 선택된 항목뷰를 처리함 (1) 어댑터뷰가 어댑터를 사용하기 위해서 ㄱ. 데이터 원본이 어댑터에 설정되어야 함 ㄴ. 어.. 2024. 4. 9.
[Android 앱개발 숙련] 뷰 바인딩 - 개념, 설정방법 (# 추가하기) 1. view binding 개념 (+) 뷰와 상호작용하는 코드 쉽게 작성 가능 - 모듈에서 사용 설정된 뷰 바인딩은모듈에 있는 각 XML 레이아웃 파일의 결합 클래스를 생성함 - 바인딩 클래스의 인스턴스에는 상응하는 레이아웃에 ID가 있는 모든 뷰의 직접 참조가 포함됨 - 대부분의 경우, 뷰 바인딩이 findViewById를 대체함 * findViewById와의 차이점 1) Null 안전성 (Null Safety) : 앱이 레이아웃의 각 뷰를 직접 참조할 수 있게 해주는 안전한 코드를 자동으로 생성해 null 오류(뷰가 아직 화면에 나타나지 않았는데 해당 뷰를 사용하려고 하는 등의 문제들)을 예방함 - ex. 아직 null인 것을 안전하게 처리 / 레이아웃의 일부만 뷰가 있을 때 널 가능함을 알려줌 2.. 2024. 4. 9.
안드로이드 스튜디오 TTS 관련 코드 - 안드로이드에서 제공하는 TextToSpeech 클래스를 사용해, 안드로이드 애플리케이션에서 텍스트 음성으로 변환하여 읽어주는 기능을 구현하는 코드. - 초기화 부분, `onInit`, `readAuthent`, `onDestroy` 메서드가 있음 //tts 관련 코드 textToSpeech = TextToSpeech(this, this) //tts 재생 버튼 btn_playTts.setOnClickListener { readAuthent(generatedAuthent) } //tts 관련 코드 override fun onInit(status: Int) { if (status == TextToSpeech.SUCCESS) { val result = textToSpeech.setLanguage(Locale.. 2024. 4. 8.
OBJECT, MAP 접근 코드 (# 추가하기) - object 선언부분 object UserDataList { var userDataList = mutableListOf() } - 기존에 저장한 데이터에 key를 통해 접근하고 데이터 추가하기 // "name"의 값이 "sample"인 맵을 userDataList에서 찾음 val newMap = UserDataList.userDataList.firstOrNull { it["name"] == "sample" } //"name"이 "sample"인 맵 찾고 if (newMap != null) { //방금 찾은 맵을 수정 가능하게 바꾸고 val newMapMutable = newMap.toMutableMap() //방금 바꾼 맵에 "key"라는 키와 "value"라는 값을 추가함 newMapMutable[.. 2024. 4. 4.