본문 바로가기

개발일기

23.10.06 86일차 TIL 심화 B강의 정리

 

VideoSearch로 만듬

(기존에는 동영상만 서치하려고 만들었으나 해설강의에 둘다 서치되게끔 구현해놔서 같이 됨)

 

레이아웃을 만들어서 적용

 

아이콘을 PNG -> SVG -> XML파일로 만들어서 적용

 

버튼색 변경도 쉽지 않았음.

 

VIDEO와 IMAGE를 둘다 서치하는 API를 구현

 

Retrofit_client.kt

object retrofit_client {

    //API 서비스 객체 반환
    val apiService: Retrofit_interface
        get() = instance.create(Retrofit_interface::class.java)

    private val instance: Retrofit
        private get() {
            val gson = GsonBuilder().setLenient().create()

            return Retrofit.Builder()
                .baseUrl(net.flow9.thisiskotlin.videosearch.Constants.BASE_URL)
                .addConverterFactory(GsonConverterFactory.create(gson))
                .build()
        }




}

 

 

Retrofit_interface

interface Retrofit_interface {

    @GET("v2/search/image") //대문자 V2가 아니라 소문자 v2
    fun image_search(
        @Header("Authorization") apiKey: String?,
        @Query("query") query: String,
        @Query("sort") sort: String?,
        @Query("page") page: Int,
        @Query("size") size: Int
    ): Call<ImageModel>

    @GET("v2/search/vclip") //대문자 V2가 아니라 소문자 v2
    fun video_search(
        @Header("Authorization") apiKey: String?,
        @Query("query") query: String,
        @Query("sort") sort: String?,
        @Query("page") page: Int,
        @Query("size") size: Int
    ): Call<VideoModel?>?

}

 

Constants.kt

/**
 * Constants 객체는 앱 전체에서 공통적으로 사용되는 상수 값을 모아둔 싱글턴 객체
 * 의미있는 이름을 갖는 상수를 사용 가능
 * 가독성 유지보수성 증가
 */

object Constants {
    // 기본 API 엔드포인트.
    // 여기서 모든 API 요청의 기본 URL
    var BASE_URL = "https://dapi.kakao.com"

    // Kakao API를 사용하기 위한 인증 헤더
    var AUTH_HEADER = "KakaoAK 본인카카오api키값"

    // 이미지 검색을 나타내는 타입 코드
    var SEARCH_TYPE_IMAGE = 0

    // 비디오 검색을 나타내는 타입 코드
    var SEARCH_TYPE_VIDEO = 1

    // 이미지 "좋아요" 상태 저장을 위한 Shared Preferences 키
    //var PREF_KEY = "IMAGE_LIKE_PREF"
}

 

 

SearchModel

data class SearchModel (
    var type : Int, // 타입
    var title: String, // 제목
    var dateTime: String, // 시간
    var url: String, // url 주소

    var isLike: Boolean = false // 좋아요 부분
)

 

 

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".DetailActivity">

    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:ignore="UselessParent">

        <androidx.constraintlayout.widget.ConstraintLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:padding="20dp">

            <!-- 내용을 스크롤할 레이아웃 -->
            <!-- 여기에 필요한 UI 요소들을 추가하세요 -->

        </androidx.constraintlayout.widget.ConstraintLayout>

    </ScrollView>

</androidx.constraintlayout.widget.ConstraintLayout>

<!-- 해당 스크롤뷰 적용시에코드-->