Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion 9th_Android
Submodule 9th_Android updated from 02b731 to 7a52fe
11 changes: 6 additions & 5 deletions app/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ android {
}
buildFeatures {
viewBinding = true
dataBinding = true
}
kotlinOptions {
jvmTarget = "11"
Expand All @@ -44,7 +45,7 @@ android {

dependencies {

implementation("androidx.core:core-ktx:1.10.1")
implementation("androidx.core:core-ktx:1.13.1")
implementation(libs.androidx.appcompat)
implementation(libs.material)
implementation(libs.androidx.activity)
Expand All @@ -57,13 +58,13 @@ dependencies {
testImplementation(libs.junit)
androidTestImplementation(libs.androidx.junit)
androidTestImplementation(libs.androidx.espresso.core)
implementation("androidx.core:core-splashscreen:1.0.1")
implementation("com.google.android.material:material:1.13.0")
implementation("me.relex:circleindicator:2.1.6")

val roomVersion = "2.6.1"
// 💡 Kotlin DSL 문법에 맞게 'roomVersion' 변수를 사용합니다.
implementation("androidx.room:room-runtime:$roomVersion")

// 💡 kapt를 dependencies 블록 내부에서 함수 호출처럼 사용합니다.
kapt("androidx.room:room-compiler:$roomVersion")

implementation("androidx.room:room-ktx:$roomVersion")

}
6 changes: 6 additions & 0 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,12 @@
android:name=".SongActivity"
android:exported="false"/>

<activity android:name=".LoginActivity"
android:exported="false" />

<activity android:name=".SignupActivity"
android:exported="false" />

</application>

</manifest>
8 changes: 6 additions & 2 deletions app/src/main/java/com/example/umc/Album.kt
Original file line number Diff line number Diff line change
@@ -1,14 +1,18 @@
package com.example.umc

import androidx.room.Entity
import androidx.room.Ignore
import androidx.room.PrimaryKey
import java.util.*


@Entity(tableName = "AlbumTable")
data class Album(
@PrimaryKey(autoGenerate = false) var id: Int = 0, // album의 pk는 임의로 지정해주기 위해 autogenerate 안씁니다.
@PrimaryKey(autoGenerate = false)
var id: Int = 0,
var title: String? = "",
var singer: String? = "",
var coverImg: Int? = null
var coverImg: Int? = null,
@Ignore
val songs: List<Song> = emptyList()
)
34 changes: 0 additions & 34 deletions app/src/main/java/com/example/umc/AlbumDao.kt

This file was deleted.

6 changes: 5 additions & 1 deletion app/src/main/java/com/example/umc/AlbumRVAdapter.kt
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,14 @@ import android.text.Layout
import android.view.LayoutInflater
import android.view.ViewGroup
import androidx.recyclerview.widget.RecyclerView

import com.example.umc.databinding.ItemAlbumBinding

class AlbumRVAdapter(private val albumList:ArrayList<Album>):RecyclerView.Adapter<AlbumRVAdapter.ViewHolder>(){

interface MyItemClickListener{
fun onItemClick(album: Album)
fun onRemoveAlbum(position: Int)
fun onPlayButtonClick(album: Album)
}

private lateinit var mItemClickListener: MyItemClickListener
Expand Down Expand Up @@ -42,6 +42,10 @@ class AlbumRVAdapter(private val albumList:ArrayList<Album>):RecyclerView.Adapte
holder.bind(albumList[position])
holder.itemView.setOnClickListener { mItemClickListener.onItemClick(albumList[position])}
// holder.binding.itemAlbumTitleTv.setOnClickListener { mItemClickListener.onRemoveAlbum(position) }

holder.binding.itemAlbumPlayImgIv.setOnClickListener {
mItemClickListener.onPlayButtonClick(albumList[position])
}
}

override fun getItemCount(): Int = albumList.size
Expand Down
68 changes: 38 additions & 30 deletions app/src/main/java/com/example/umc/HomeFragment.kt
Original file line number Diff line number Diff line change
@@ -1,50 +1,50 @@
package com.example.umc

import android.os.Bundle
import android.util.Log
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.Fragment
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.viewpager2.widget.ViewPager2
import com.example.umc.databinding.FragmentHomeBinding
import java.util.zip.Inflater
import com.example.umc.AlbumFragment

import java.util.ArrayList
import com.google.gson.Gson
import java.util.ArrayList

class HomeFragment : Fragment() {
lateinit var binding : FragmentHomeBinding

lateinit var binding: FragmentHomeBinding
private var albumDatas = ArrayList<Album>()

private lateinit var songDB: SongDatabase

override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
) : View? {
): View {
binding = FragmentHomeBinding.inflate(inflater, container, false)

// binding.homePannelAlbumImgIv2.setOnClickListener {
// (context as MainActivity).supportFragmentManager.beginTransaction().replace(R.id.main_frm,AlbumFragment()).commitAllowingStateLoss()
// }
// binding.homeAlbumImgIv1.setOnClickListener {
// (context as MainActivity).supportFragmentManager.beginTransaction()
// .replace(R.id.main_frm , AlbumFragment())
// .commitAllowingStateLoss()
// }

songDB = SongDatabase.getInstance(requireContext())!!
albumDatas.addAll(songDB.albumDao().getAlbums()) // songDB에서 album list를 가져옵니다.
Log.d("albumlist", albumDatas.toString())

albumDatas.apply{
add(Album(1,"Butter", "방탄소년단 (BTS)", R.drawable.img_album_exp))
add(Album(2,"Lilac", "아이유 (IU)", R.drawable.img_album_exp2))
add(Album(3,"Next Level", "에스파 (AESPA)", R.drawable.img_album_exp3))
add(Album(4,"Boy with Luv", "방탄소년단 (BTS)", R.drawable.img_album_exp4))
add(Album(5,"BBoom BBoom", "모모랜드 (MOMOLAND)", R.drawable.img_album_exp5))
add(Album(6,"Weekend", "태연 (Tae Yeon)", R.drawable.img_album_exp6))
}

// 더미데이터랑 Adapter 연결
val albumRVAdapter = AlbumRVAdapter(albumDatas)

// 리사이클러뷰에 어댑터를 연결
binding.homeTodayMusicAlbumRv.adapter = albumRVAdapter
binding.homeTodayMusicAlbumRv.layoutManager = LinearLayoutManager(context,
LinearLayoutManager.HORIZONTAL,false)

albumRVAdapter.setMyItemClickListener(object : AlbumRVAdapter.MyItemClickListener{

override fun onItemClick(album: Album) {
changeAlbumFragment(album)
}
Expand All @@ -53,7 +53,14 @@ class HomeFragment : Fragment() {
albumRVAdapter.removeItem(position)
}

override fun onPlayButtonClick(album: Album) {
val gson = Gson()
val albumJson = gson.toJson(album)
}
})
// 레이아웃 매니저 설정
binding.homeTodayMusicAlbumRv.layoutManager = LinearLayoutManager(context, LinearLayoutManager.HORIZONTAL, false)

val bannerAdapter = BannerVPAdapter(this)
bannerAdapter.addFragment(BannerFragment(R.drawable.img_home_viewpager_exp))
bannerAdapter.addFragment(BannerFragment(R.drawable.img_home_viewpager_exp2))
Expand All @@ -62,16 +69,17 @@ class HomeFragment : Fragment() {

return binding.root
}
}

private fun HomeFragment.changeAlbumFragment(album: Album) {
(context as MainActivity).supportFragmentManager.beginTransaction()
.replace(R.id.main_frm, AlbumFragment().apply {
arguments = Bundle().apply {
val gson = Gson()
val albumJson = gson.toJson(album)
putString("album", albumJson)
}
})
.commitAllowingStateLoss()
private fun changeAlbumFragment(album: Album) {
(context as MainActivity).supportFragmentManager.beginTransaction()
.replace(R.id.main_frm, AlbumFragment().apply {
arguments = Bundle().apply {
val gson = Gson()
val albumJson = gson.toJson(album)
putString("album", albumJson)
}
})
.commitAllowingStateLoss()
}

}
17 changes: 13 additions & 4 deletions app/src/main/java/com/example/umc/LockerFragment.kt
Original file line number Diff line number Diff line change
@@ -1,13 +1,16 @@
package com.example.umc

import android.content.Intent
import android.os.Bundle
import android.util.Log
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.Button
import androidx.fragment.app.Fragment
import com.example.umc.databinding.FragmentLockerBinding
import com.google.android.material.tabs.TabLayoutMediator
import kotlin.jvm.java


class LockerFragment : Fragment() {
Expand All @@ -29,11 +32,18 @@ class LockerFragment : Fragment() {


val lockerAdapter = LockerVPAdapter(this)
val loginButton: Button = view.findViewById(R.id.locker_login_tv)

loginButton.setOnClickListener {
val intent = Intent(requireContext(), LoginActivity::class.java)

lockerAdapter.addFragment(SavedSongFragment())
lockerAdapter.addFragment(MusicFileFragment())
lockerAdapter.addFragment(SavedAlbumFragment())
startActivity(intent)

}

// lockerAdapter.addFragment(SavedSongFragment())
// lockerAdapter.addFragment(MusicFileFragment())
// lockerAdapter.addFragment(SavedAlbumFragment())

binding.lockerContentVp.adapter = lockerAdapter

Expand All @@ -42,7 +52,6 @@ class LockerFragment : Fragment() {
tab.text = information[position]
}.attach()

// 앱이 시작될 때 '저장앨범' 탭(인덱스 2)을 선택하도록 설정
binding.lockerContentVp.setCurrentItem(2, false)
}
}
28 changes: 28 additions & 0 deletions app/src/main/java/com/example/umc/LoginActivtity.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
package com.example.umc

import android.content.Intent
import android.os.Bundle
import android.widget.Button
import androidx.appcompat.app.AppCompatActivity
import com.example.umc.databinding.ActivityLoginBinding


class LoginActivity : AppCompatActivity() {
lateinit var binding: ActivityLoginBinding

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityLoginBinding.inflate(layoutInflater)
setContentView(binding.root)

val loginButton: Button = findViewById(R.id.login_sign_up_tv)

loginButton.setOnClickListener {

val intent = Intent(this, SignupActivity::class.java)

startActivity(intent)

}
}
}
Loading