반응형
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>
<!-- 해당 스크롤뷰 적용시에코드-->
반응형
'개발일기' 카테고리의 다른 글
23.10.16 96일차 TIL git branch 확인하기 (0) | 2023.10.16 |
---|---|
23.10.10 90일차 Binding 하기 (0) | 2023.10.10 |
23.10.05 85일차 TIL BottomNavigation (0) | 2023.10.05 |
23.10.04 84일차 TIL fragment 생명주기 (0) | 2023.10.04 |
23.09.27 77일차 TIL (0) | 2023.09.27 |