diff --git a/Paulo/UMC_Paulo_Mission1_Linear/.gitignore b/Paulo/Flo_Clone_UMC_Bottom/.gitignore similarity index 100% rename from Paulo/UMC_Paulo_Mission1_Linear/.gitignore rename to Paulo/Flo_Clone_UMC_Bottom/.gitignore diff --git a/Paulo/UMC_Paulo_Mission1_Linear/.idea/.gitignore b/Paulo/Flo_Clone_UMC_Bottom/.idea/.gitignore similarity index 100% rename from Paulo/UMC_Paulo_Mission1_Linear/.idea/.gitignore rename to Paulo/Flo_Clone_UMC_Bottom/.idea/.gitignore diff --git a/Paulo/UMC_Paulo_Mission1_Linear/.idea/compiler.xml b/Paulo/Flo_Clone_UMC_Bottom/.idea/compiler.xml similarity index 100% rename from Paulo/UMC_Paulo_Mission1_Linear/.idea/compiler.xml rename to Paulo/Flo_Clone_UMC_Bottom/.idea/compiler.xml diff --git a/Paulo/UMC_Paulo_Mission1_Linear/.idea/deploymentTargetSelector.xml b/Paulo/Flo_Clone_UMC_Bottom/.idea/deploymentTargetSelector.xml similarity index 100% rename from Paulo/UMC_Paulo_Mission1_Linear/.idea/deploymentTargetSelector.xml rename to Paulo/Flo_Clone_UMC_Bottom/.idea/deploymentTargetSelector.xml diff --git a/Paulo/UMC_Paulo_Mission1_Linear/.idea/gradle.xml b/Paulo/Flo_Clone_UMC_Bottom/.idea/gradle.xml similarity index 100% rename from Paulo/UMC_Paulo_Mission1_Linear/.idea/gradle.xml rename to Paulo/Flo_Clone_UMC_Bottom/.idea/gradle.xml diff --git a/Paulo/UMC_Paulo_Mission1_Linear/.idea/kotlinc.xml b/Paulo/Flo_Clone_UMC_Bottom/.idea/kotlinc.xml similarity index 100% rename from Paulo/UMC_Paulo_Mission1_Linear/.idea/kotlinc.xml rename to Paulo/Flo_Clone_UMC_Bottom/.idea/kotlinc.xml diff --git a/Paulo/UMC_Paulo_Mission1_Linear/.idea/migrations.xml b/Paulo/Flo_Clone_UMC_Bottom/.idea/migrations.xml similarity index 100% rename from Paulo/UMC_Paulo_Mission1_Linear/.idea/migrations.xml rename to Paulo/Flo_Clone_UMC_Bottom/.idea/migrations.xml diff --git a/Paulo/UMC_Paulo_Mission1_Linear/.idea/misc.xml b/Paulo/Flo_Clone_UMC_Bottom/.idea/misc.xml similarity index 66% rename from Paulo/UMC_Paulo_Mission1_Linear/.idea/misc.xml rename to Paulo/Flo_Clone_UMC_Bottom/.idea/misc.xml index 0ad17cbd..59b5413a 100644 --- a/Paulo/UMC_Paulo_Mission1_Linear/.idea/misc.xml +++ b/Paulo/Flo_Clone_UMC_Bottom/.idea/misc.xml @@ -1,4 +1,3 @@ - @@ -7,4 +6,11 @@ + + + \ No newline at end of file diff --git a/Paulo/Flo_Clone_UMC_Bottom/.idea/vcs.xml b/Paulo/Flo_Clone_UMC_Bottom/.idea/vcs.xml new file mode 100644 index 00000000..b2bdec2d --- /dev/null +++ b/Paulo/Flo_Clone_UMC_Bottom/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/Paulo/UMC_Paulo_Mission1_Linear/app/.gitignore b/Paulo/Flo_Clone_UMC_Bottom/app/.gitignore similarity index 100% rename from Paulo/UMC_Paulo_Mission1_Linear/app/.gitignore rename to Paulo/Flo_Clone_UMC_Bottom/app/.gitignore diff --git a/Paulo/UMC_Paulo_Mission1_Linear/app/build.gradle.kts b/Paulo/Flo_Clone_UMC_Bottom/app/build.gradle.kts similarity index 71% rename from Paulo/UMC_Paulo_Mission1_Linear/app/build.gradle.kts rename to Paulo/Flo_Clone_UMC_Bottom/app/build.gradle.kts index f1a021f8..13995708 100644 --- a/Paulo/UMC_Paulo_Mission1_Linear/app/build.gradle.kts +++ b/Paulo/Flo_Clone_UMC_Bottom/app/build.gradle.kts @@ -4,12 +4,19 @@ plugins { } android { - namespace = "com.example.umc_paulo_mission1_2" + namespace = "com.example.flo_clone_umc_bottom" compileSdk = 34 + buildFeatures { + dataBinding = true + viewBinding { + enable = true + } + } + defaultConfig { - applicationId = "com.example.umc_paulo_mission1_2" - minSdk = 24 + applicationId = "com.example.flo_clone_umc_bottom" + minSdk = 28 targetSdk = 34 versionCode = 1 versionName = "1.0" @@ -42,7 +49,12 @@ dependencies { implementation(libs.material) implementation(libs.androidx.activity) implementation(libs.androidx.constraintlayout) + implementation(libs.car.ui.lib) + implementation("me.relex:circleindicator:2.1.6") + implementation("com.google.code.gson:gson:2.8.7") + //implementation("me.relex:circleindicator2:2.1.6") testImplementation(libs.junit) androidTestImplementation(libs.androidx.junit) androidTestImplementation(libs.androidx.espresso.core) + } \ No newline at end of file diff --git a/Paulo/UMC_Paulo_Mission1_Linear/app/proguard-rules.pro b/Paulo/Flo_Clone_UMC_Bottom/app/proguard-rules.pro similarity index 100% rename from Paulo/UMC_Paulo_Mission1_Linear/app/proguard-rules.pro rename to Paulo/Flo_Clone_UMC_Bottom/app/proguard-rules.pro diff --git a/Paulo/UMC_Paulo_Mission1_Linear/app/src/androidTest/java/com/example/umc_paulo_mission1_2/ExampleInstrumentedTest.kt b/Paulo/Flo_Clone_UMC_Bottom/app/src/androidTest/java/com/example/flo_clone_umc_bottom/ExampleInstrumentedTest.kt similarity index 84% rename from Paulo/UMC_Paulo_Mission1_Linear/app/src/androidTest/java/com/example/umc_paulo_mission1_2/ExampleInstrumentedTest.kt rename to Paulo/Flo_Clone_UMC_Bottom/app/src/androidTest/java/com/example/flo_clone_umc_bottom/ExampleInstrumentedTest.kt index 1b602cd3..5499c313 100644 --- a/Paulo/UMC_Paulo_Mission1_Linear/app/src/androidTest/java/com/example/umc_paulo_mission1_2/ExampleInstrumentedTest.kt +++ b/Paulo/Flo_Clone_UMC_Bottom/app/src/androidTest/java/com/example/flo_clone_umc_bottom/ExampleInstrumentedTest.kt @@ -1,4 +1,4 @@ -package com.example.umc_paulo_mission1_2 +package com.example.flo_clone_umc_bottom import androidx.test.platform.app.InstrumentationRegistry import androidx.test.ext.junit.runners.AndroidJUnit4 @@ -19,6 +19,6 @@ class ExampleInstrumentedTest { fun useAppContext() { // Context of the app under test. val appContext = InstrumentationRegistry.getInstrumentation().targetContext - assertEquals("com.example.umc_paulo_mission1_2", appContext.packageName) + assertEquals("com.example.flo_clone_umc_bottom", appContext.packageName) } } \ No newline at end of file diff --git a/Paulo/UMC_Paulo_Mission1_Linear/app/src/main/AndroidManifest.xml b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/AndroidManifest.xml similarity index 70% rename from Paulo/UMC_Paulo_Mission1_Linear/app/src/main/AndroidManifest.xml rename to Paulo/Flo_Clone_UMC_Bottom/app/src/main/AndroidManifest.xml index 2c06b514..99178612 100644 --- a/Paulo/UMC_Paulo_Mission1_Linear/app/src/main/AndroidManifest.xml +++ b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/AndroidManifest.xml @@ -1,6 +1,6 @@ + xmlns:tools="http://schemas.android.com/tools" > + android:theme="@style/Theme.Flo_Clone_UMC_Bottom" + tools:targetApi="31" > + android:exported="true" + android:theme="@style/SplashTheme"> + \ No newline at end of file diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/java/com/example/flo_clone_umc_bottom/Album.kt b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/java/com/example/flo_clone_umc_bottom/Album.kt new file mode 100644 index 00000000..dfe0502f --- /dev/null +++ b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/java/com/example/flo_clone_umc_bottom/Album.kt @@ -0,0 +1,10 @@ +package com.example.flo_clone_umc_bottom + +import java.util.ArrayList + +data class Album( + var title: String? = "", + var singer: String? = "", + var coverImg: Int? = null, + var songs: ArrayList? = null +) diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/java/com/example/flo_clone_umc_bottom/AlbumFragment.kt b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/java/com/example/flo_clone_umc_bottom/AlbumFragment.kt new file mode 100644 index 00000000..f17eb88e --- /dev/null +++ b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/java/com/example/flo_clone_umc_bottom/AlbumFragment.kt @@ -0,0 +1,60 @@ +package com.example.flo_clone_umc_bottom + +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.TableLayout +import android.widget.Toast +import androidx.fragment.app.Fragment +import com.example.flo_clone_umc_bottom.databinding.FragmentAlbumBinding +import com.google.android.material.tabs.TabLayoutMediator +import com.google.gson.Gson + +class AlbumFragment : Fragment() { + lateinit var binding : FragmentAlbumBinding + private var information = arrayListOf("수록곡","상세정보","영상") + private var gson: Gson = Gson() + + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + + + ): View? { + binding = FragmentAlbumBinding.inflate(inflater, container,false) + + val albumJson = arguments?.getString("album") + val album = gson.fromJson(albumJson, Album::class.java) + setInit(album) + + binding.albumBackIv.setOnClickListener { + (context as MainActivity).supportFragmentManager.beginTransaction().replace(R.id.main_frm,HomeFragment()).commitAllowingStateLoss() + } + +// val albumTitle = arguments?.getString("ALBUM_TITLE") +// val albumArtist = arguments?.getString("ALBUM_ARTIST") +// val albumImageResId = arguments?.getInt("ALBUM_IMAGE") + + val albumAdapter = AlbumVPAdapter(this, album.title, album.singer) + binding.albumContentVp.adapter = albumAdapter + TabLayoutMediator(binding.albumContentTb, binding.albumContentVp){ + tab, position -> + tab.text = information[position] + }.attach() + +// binding.albumMusicTitleTv.text = album.title ?: "Unknown Album" +// binding.albumSingerNameTv.text = album.singer ?: "Unknown Artist" +// albumImageResId?.let { binding.albumAlbumIv.setImageResource(it) } +// + val formattedTitle = String.format("%s 5th Album '%s'", album.singer,album.title) + binding.albumMusicTitleTv.text = formattedTitle + return binding.root + } + + private fun setInit(album: Album){ + binding.albumAlbumIv.setImageResource(album.coverImg!!) + } + +} \ No newline at end of file diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/java/com/example/flo_clone_umc_bottom/AlbumRVAdapter.kt b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/java/com/example/flo_clone_umc_bottom/AlbumRVAdapter.kt new file mode 100644 index 00000000..e78aa3a8 --- /dev/null +++ b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/java/com/example/flo_clone_umc_bottom/AlbumRVAdapter.kt @@ -0,0 +1,60 @@ +package com.example.flo_clone_umc_bottom + +import android.view.LayoutInflater +import android.view.ViewGroup +import androidx.recyclerview.widget.RecyclerView +import com.example.flo_clone_umc_bottom.databinding.ItemAlbumBinding + +class AlbumRVAdapter(private val albumList: ArrayList): RecyclerView.Adapter() { + interface MyItemClickListener{ + fun onItemClick(album: Album) + fun onRemoveAlbum(position: Int) + fun onIntentAlbum(album: Album) + } + + private lateinit var mItemClickListener: MyItemClickListener + fun setMyItemClickListener(itemClickListener: MyItemClickListener){ + mItemClickListener = itemClickListener + } + + fun addItem(album: Album){ + albumList.add(album) + notifyDataSetChanged() + } + + fun removeItem(position: Int){ + albumList.removeAt(position) + notifyDataSetChanged() + } + override fun onCreateViewHolder(viewGroup: ViewGroup, viewType: Int): AlbumRVAdapter.ViewHolder { + val binding: ItemAlbumBinding = ItemAlbumBinding.inflate(LayoutInflater.from(viewGroup.context), viewGroup, false) + + return ViewHolder(binding) + } + + override fun onBindViewHolder(holder: AlbumRVAdapter.ViewHolder, position: Int) { + holder.bind(albumList[position]) + holder.itemView.setOnClickListener{ + mItemClickListener.onItemClick(albumList[position]) + } + holder.binding.itemAlbumTitleTv.setOnClickListener{ + mItemClickListener.onRemoveAlbum(position) + } + holder.binding.itemAlbumPlayImgIv.setOnClickListener { + mItemClickListener.onIntentAlbum(albumList[position]) + } + //6주차 정보 전달 + } + + override fun getItemCount(): Int = albumList.size + + inner class ViewHolder(val binding: ItemAlbumBinding): RecyclerView.ViewHolder(binding.root){ + + fun bind(album: Album){ + binding.itemAlbumTitleTv.text = album.title + binding.itemAlbumSingerTv.text = album.title + binding.itemAlbumCoverImgIv.setImageResource(album.coverImg!!) + } + } + //6주차 AlbumRVAdapter 확인 전 +} \ No newline at end of file diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/java/com/example/flo_clone_umc_bottom/AlbumVPAdapter.kt b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/java/com/example/flo_clone_umc_bottom/AlbumVPAdapter.kt new file mode 100644 index 00000000..a4359657 --- /dev/null +++ b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/java/com/example/flo_clone_umc_bottom/AlbumVPAdapter.kt @@ -0,0 +1,25 @@ +package com.example.flo_clone_umc_bottom + +import android.os.Bundle +import androidx.fragment.app.Fragment +import androidx.viewpager2.adapter.FragmentStateAdapter + +class AlbumVPAdapter(fragment: Fragment, private val albumTitle: String?, + private val albumArtist: String?):FragmentStateAdapter(fragment) { + override fun getItemCount(): Int = 3 + override fun createFragment(position: Int): Fragment { + val fragment = when (position) { + 0 -> SongFragment() + 1 -> DetailFragment() + else -> VideoFragment() + } + if (fragment is SongFragment) { + val bundle = Bundle().apply { + putString("ALBUM_TITLE", albumTitle) + putString("ALBUM_ARTIST", albumArtist) + } + fragment.arguments = bundle + } + return fragment + } +} \ No newline at end of file diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/java/com/example/flo_clone_umc_bottom/BannerFragment.kt b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/java/com/example/flo_clone_umc_bottom/BannerFragment.kt new file mode 100644 index 00000000..f4698f4f --- /dev/null +++ b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/java/com/example/flo_clone_umc_bottom/BannerFragment.kt @@ -0,0 +1,24 @@ +package com.example.flo_clone_umc_bottom + +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.fragment.app.Fragment +import com.example.flo_clone_umc_bottom.databinding.FragmentBannerBinding + +class BannerFragment(val imgRes : Int) : Fragment() { + lateinit var binding : FragmentBannerBinding + + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + binding = FragmentBannerBinding.inflate(inflater, container, false) + + binding.bannerImageIv.setImageResource(imgRes) + + return binding.root + } +} \ No newline at end of file diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/java/com/example/flo_clone_umc_bottom/BannerVPAdapter.kt b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/java/com/example/flo_clone_umc_bottom/BannerVPAdapter.kt new file mode 100644 index 00000000..f5b8d409 --- /dev/null +++ b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/java/com/example/flo_clone_umc_bottom/BannerVPAdapter.kt @@ -0,0 +1,18 @@ +package com.example.flo_clone_umc_bottom + +import androidx.fragment.app.Fragment +import androidx.viewpager2.adapter.FragmentStateAdapter + +class BannerVPAdapter(fragment: Fragment) :FragmentStateAdapter(fragment) { + + private val fragmentlist : ArrayList = ArrayList() + + override fun getItemCount(): Int = fragmentlist.size + + override fun createFragment(position: Int): Fragment = fragmentlist[position] + + fun addFragment(fragment: Fragment){ + fragmentlist.add(fragment) + notifyItemInserted(fragmentlist.size-1) + } +} \ No newline at end of file diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/java/com/example/flo_clone_umc_bottom/DetailFragment.kt b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/java/com/example/flo_clone_umc_bottom/DetailFragment.kt new file mode 100644 index 00000000..c96b527d --- /dev/null +++ b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/java/com/example/flo_clone_umc_bottom/DetailFragment.kt @@ -0,0 +1,22 @@ +package com.example.flo_clone_umc_bottom + +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.fragment.app.Fragment +import com.example.flo_clone_umc_bottom.databinding.FragmentDetailBinding + +class DetailFragment : Fragment() { + + lateinit var binding: FragmentDetailBinding + + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + binding = FragmentDetailBinding.inflate(inflater,container,false) + return binding.root + } +} \ No newline at end of file diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/java/com/example/flo_clone_umc_bottom/HomeBannerVPAdapter.kt b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/java/com/example/flo_clone_umc_bottom/HomeBannerVPAdapter.kt new file mode 100644 index 00000000..7bec188e --- /dev/null +++ b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/java/com/example/flo_clone_umc_bottom/HomeBannerVPAdapter.kt @@ -0,0 +1,18 @@ +package com.example.flo_clone_umc_bottom + +import androidx.fragment.app.Fragment +import androidx.viewpager2.adapter.FragmentStateAdapter + +class HomeBannerVPAdapter(fragment: Fragment) :FragmentStateAdapter(fragment){ + + private val fragmentlist : ArrayList = ArrayList() + + override fun getItemCount(): Int = fragmentlist.size + + override fun createFragment(position: Int): Fragment = fragmentlist[position] + + fun addFragment(fragment: Fragment){ + fragmentlist.add(fragment) + notifyItemInserted(fragmentlist.size-1) + } +} \ No newline at end of file diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/java/com/example/flo_clone_umc_bottom/HomeFragment.kt b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/java/com/example/flo_clone_umc_bottom/HomeFragment.kt new file mode 100644 index 00000000..9d91c5d2 --- /dev/null +++ b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/java/com/example/flo_clone_umc_bottom/HomeFragment.kt @@ -0,0 +1,179 @@ +package com.example.flo_clone_umc_bottom + +import android.content.Context +import android.os.Bundle +import android.os.Handler +import android.os.Looper +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.flo_clone_umc_bottom.databinding.FragmentHomeBinding +import com.google.gson.Gson +import java.util.Timer +import java.util.TimerTask + +class HomeFragment : Fragment() { + + private val timer = Timer() + private val handler = Handler(Looper.getMainLooper()) + lateinit var binding: FragmentHomeBinding + private var albumDatas = ArrayList() + private var albumDataListener: AlbumRVAdapter.MyItemClickListener? = null + //6주차 데이터 전달을 위해 인터페이스를 참조하는 변수 생성 + + override fun onAttach(context: Context) { + super.onAttach(context) + if (context is AlbumRVAdapter.MyItemClickListener) { + albumDataListener = context + } else { + albumDataListener = null + } + //6주차 AlbumRVAadpter에 MyItemClickListener가 있는지 확인 + } + + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + binding = FragmentHomeBinding.inflate(inflater, container, false) + + albumDatas.apply { + add(Album("Butter", "방탄소년단 (BTS)", R.drawable.img_album_exp)) + add(Album("Lilac", "아이유 (IU)", R.drawable.img_album_exp2)) + add(Album("Next Level", "에스파 (AESPA)", R.drawable.img_album_exp3)) + add(Album("Boy with Luv", "방탄소년단 (BTS)", R.drawable.img_album_exp4)) + add(Album("BBoom BBoom", "모모랜드 (MOMOLAND)", R.drawable.img_album_exp5)) + add(Album("Weekend", "태연 (Tae Yeon)", R.drawable.img_album_exp6)) + } +// binding.homeAlbumImgIv1.setOnClickListener { +// val bundle = Bundle() +// bundle.putInt("ALBUM_IMAGE", R.drawable.img_album_exp2) +// bundle.putString("ALBUM_TITLE", "LILAC") +// bundle.putString("ALBUM_ARTIST", "아이유 (IU)") +// val fragment = AlbumFragment() +// fragment.arguments = bundle +// +// (context as MainActivity).supportFragmentManager.beginTransaction() +// .replace(R.id.main_frm, fragment) +// .commitAllowingStateLoss() +// } +// +// binding.homeAlbumImgIv2.setOnClickListener { +// val bundle = Bundle() +// bundle.putInt("ALBUM_IMAGE", R.drawable.img_album_exp1) +// bundle.putString("ALBUM_TITLE", "My NINJAS") +// bundle.putString("ALBUM_ARTIST", "플리키뱅") +// val fragment = AlbumFragment() +// fragment.arguments = bundle +// +// (context as MainActivity).supportFragmentManager.beginTransaction() +// .replace(R.id.main_frm, fragment) +// .commitAllowingStateLoss() +// } +// +// binding.homeAlbumImgIv3.setOnClickListener { +// val bundle = Bundle() +// bundle.putInt("ALBUM_IMAGE", R.drawable.img_album_exp) +// bundle.putString("ALBUM_TITLE", "Butter") +// bundle.putString("ALBUM_ARTIST", "BTS") +// val fragment = AlbumFragment() +// fragment.arguments = bundle +// +// (context as MainActivity).supportFragmentManager.beginTransaction() +// .replace(R.id.main_frm, fragment) +// .commitAllowingStateLoss() +// } + + +// binding.homeAlbumImgIv1.setOnClickListener { +// (context as MainActivity).supportFragmentManager.beginTransaction().replace(R.id.main_frm,AlbumFragment()).commitAllowingStateLoss() +// } + + 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) + } + + override fun onRemoveAlbum(position: Int) { + albumRVAdapter.removeItem(position) + } + + override fun onIntentAlbum(album: Album) { + (activity as MainActivity).updateMiniPlayer(album) + } + //6주차 미니 플레이어 업데이트 + }) + + val bannerAdapter = BannerVPAdapter(this) + bannerAdapter.addFragment(BannerFragment(R.drawable.img_home_viewpager_exp)) + bannerAdapter.addFragment(BannerFragment(R.drawable.img_home_viewpager_exp2)) + binding.homeBannerVp.adapter = bannerAdapter + binding.homeBannerVp.orientation = ViewPager2.ORIENTATION_HORIZONTAL + + val homeBannerAdapter = HomeBannerVPAdapter(this) + homeBannerAdapter.addFragment(BannerFragment(R.drawable.img_first_album_default)) + homeBannerAdapter.addFragment(BannerFragment(R.drawable.img_first_album_default)) + homeBannerAdapter.addFragment(BannerFragment(R.drawable.img_first_album_default)) + binding.homePannelBackgroundVp.adapter = homeBannerAdapter + binding.homePannelBackgroundVp.orientation = ViewPager2.ORIENTATION_HORIZONTAL + + binding.homeCircleCi.setViewPager(binding.homePannelBackgroundVp) + startAutoSlide(homeBannerAdapter) + + return binding.root + } + + 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() + } + + private fun startAutoSlide(adapter: HomeBannerVPAdapter) { + timer.scheduleAtFixedRate(object : TimerTask() { + override fun run() { + handler.post { + val nextItem = binding.homePannelBackgroundVp.currentItem + 1 + if (nextItem < adapter.itemCount) { + binding.homePannelBackgroundVp.currentItem = nextItem + } else { + binding.homePannelBackgroundVp.currentItem = 0 + } + } + } + }, 3000, 3000) + } + +// private fun startAutoSlide(adpater : BannerVPAdapter) { +// // 일정 간격으로 슬라이드 변경 (3초마다) +// timer.scheduleAtFixedRate(3000, 3000) { +// handler.post { +// val nextItem = binding.homePannelBackgroundVp.currentItem + 1 +// if (nextItem < adpater.itemCount) { +// binding.homePannelBackgroundVp.currentItem = nextItem +// } else { +// binding.homePannelBackgroundVp.currentItem = 0 // 마지막 페이지에서 첫 페이지로 순환 +// } +// } +// } +// } + + override fun onDestroy() { + super.onDestroy() + timer.cancel() + } +} \ No newline at end of file diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/java/com/example/flo_clone_umc_bottom/LockerAlbum.kt b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/java/com/example/flo_clone_umc_bottom/LockerAlbum.kt new file mode 100644 index 00000000..2dbaa404 --- /dev/null +++ b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/java/com/example/flo_clone_umc_bottom/LockerAlbum.kt @@ -0,0 +1,9 @@ +package com.example.flo_clone_umc_bottom + +data class LockerAlbum( + var title: String? = "", + var singer: String? = "", + var coverImg: Int? = null, + var info: String? = "", + var isButtonVisible: Boolean = false +) diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/java/com/example/flo_clone_umc_bottom/LockerAlbumRVAdapter.kt b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/java/com/example/flo_clone_umc_bottom/LockerAlbumRVAdapter.kt new file mode 100644 index 00000000..0845e6b7 --- /dev/null +++ b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/java/com/example/flo_clone_umc_bottom/LockerAlbumRVAdapter.kt @@ -0,0 +1,90 @@ +package com.example.flo_clone_umc_bottom + +import android.util.Log +import android.util.SparseBooleanArray +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.core.os.persistableBundleOf +import androidx.recyclerview.widget.RecyclerView +import com.example.flo_clone_umc_bottom.databinding.ItemAlbumBinding +import com.example.flo_clone_umc_bottom.databinding.ItemSavedBinding + +class LockerAlbumRVAdapter(private val savedList: ArrayList):RecyclerView.Adapter() { + + private val switchStatus = SparseBooleanArray() + + interface MyItemClickListener{ + //fun onItemClick(lockerAlbum: LockerAlbum) + fun onRemoveAlbum(position: Int) + fun onButtonClick(position: Int, click: Boolean) + } + + private lateinit var mItemClickListener: MyItemClickListener + fun setMyItemClickListener(itemClickListener: MyItemClickListener){ + mItemClickListener = itemClickListener + } + + fun removeItem(position: Int){ + savedList.removeAt(position) + notifyDataSetChanged() + } + //6주차 ... 누르면 없어지기 + + + + override fun onCreateViewHolder( viewGroup: ViewGroup, viewType: Int): LockerAlbumRVAdapter.ViewHolder { + val binding: ItemSavedBinding = ItemSavedBinding.inflate(LayoutInflater.from(viewGroup.context), viewGroup, false) + + return ViewHolder(binding) + } + + override fun onBindViewHolder(holder: LockerAlbumRVAdapter.ViewHolder, position: Int) { + holder.binding.itemSavedSwitchSw.isChecked = switchStatus.get(position, false) + + holder.bind(savedList[position]) + holder.binding.itemSavedMoreIv.setOnClickListener{ + mItemClickListener.onRemoveAlbum(position) + } + //6주차 ... 누르면 없어지기 + + holder.binding.itemSavedPlayIv.setOnClickListener { + savedList[position].isButtonVisible = false + mItemClickListener.onButtonClick(position, savedList[position].isButtonVisible) + notifyItemChanged(position) + } + + holder.binding.itemSavedPauseIv.setOnClickListener { + savedList[position].isButtonVisible = true + mItemClickListener.onButtonClick(position, savedList[position].isButtonVisible) + notifyItemChanged(position) + } + } + + override fun getItemCount(): Int = savedList.size + + inner class ViewHolder(val binding: ItemSavedBinding): RecyclerView.ViewHolder(binding.root){ + + fun bind(lockerAlbum:LockerAlbum){ + binding.itemSavedTitleTv.text = lockerAlbum.title + binding.itemSavedSingerTv.text = lockerAlbum.title + binding.itemSavedImgIv.setImageResource(lockerAlbum.coverImg!!) + + if (lockerAlbum.isButtonVisible) { + binding.itemSavedPlayIv.visibility = View.GONE + binding.itemSavedPauseIv.visibility = View.VISIBLE + } else { + binding.itemSavedPlayIv.visibility = View.VISIBLE + binding.itemSavedPauseIv.visibility = View.GONE + } + + binding.itemSavedSwitchSw.setOnCheckedChangeListener(null) + binding.itemSavedSwitchSw.isChecked = switchStatus.get(bindingAdapterPosition, false) + + binding.itemSavedSwitchSw.setOnCheckedChangeListener { _, isChecked -> + switchStatus.put(bindingAdapterPosition, isChecked) + } + //6주차 스위치 상태 저장 + } + } +} \ No newline at end of file diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/java/com/example/flo_clone_umc_bottom/LockerFragment.kt b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/java/com/example/flo_clone_umc_bottom/LockerFragment.kt new file mode 100644 index 00000000..a6b3eca6 --- /dev/null +++ b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/java/com/example/flo_clone_umc_bottom/LockerFragment.kt @@ -0,0 +1,35 @@ +package com.example.flo_clone_umc_bottom + +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.fragment.app.Fragment +import com.example.flo_clone_umc_bottom.databinding.FragmentLockerBinding +import com.example.flo_clone_umc_bottom.databinding.FragmentSavedBinding +import com.google.android.material.tabs.TabLayoutMediator +import java.util.concurrent.locks.Lock + +class LockerFragment : Fragment() { + + lateinit var binding: FragmentLockerBinding + private var information = arrayListOf("저정한 곡","음악파일") + + + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + binding = FragmentLockerBinding.inflate(inflater, container, false) + + val lockerAdapter = LockerVPAdapter(this) + binding.lockerContentVp.adapter = lockerAdapter + TabLayoutMediator(binding.lockerContentTb, binding.lockerContentVp){ + tab, position -> + tab.text = information[position] + }.attach() + + return binding.root + } +} \ No newline at end of file diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/java/com/example/flo_clone_umc_bottom/LockerVPAdapter.kt b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/java/com/example/flo_clone_umc_bottom/LockerVPAdapter.kt new file mode 100644 index 00000000..18c5d217 --- /dev/null +++ b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/java/com/example/flo_clone_umc_bottom/LockerVPAdapter.kt @@ -0,0 +1,15 @@ +package com.example.flo_clone_umc_bottom + +import androidx.fragment.app.Fragment +import androidx.viewpager2.adapter.FragmentStateAdapter + +class LockerVPAdapter(fragment: Fragment): FragmentStateAdapter(fragment){ + override fun getItemCount(): Int = 2 + + override fun createFragment(position: Int): Fragment { + return when(position) { + 0 -> SavedFragment() + else -> MusicFileFragment() + } + } +} \ No newline at end of file diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/java/com/example/flo_clone_umc_bottom/LookFragment.kt b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/java/com/example/flo_clone_umc_bottom/LookFragment.kt new file mode 100644 index 00000000..f16c12f3 --- /dev/null +++ b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/java/com/example/flo_clone_umc_bottom/LookFragment.kt @@ -0,0 +1,23 @@ +package com.example.flo_clone_umc_bottom + +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.fragment.app.Fragment +import com.example.flo_clone_umc_bottom.databinding.FragmentLookBinding + +class LookFragment : Fragment() { + + lateinit var binding: FragmentLookBinding + + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + binding = FragmentLookBinding.inflate(inflater, container, false) + + return binding.root + } +} \ No newline at end of file diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/java/com/example/flo_clone_umc_bottom/MainActivity.kt b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/java/com/example/flo_clone_umc_bottom/MainActivity.kt new file mode 100644 index 00000000..27b75d92 --- /dev/null +++ b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/java/com/example/flo_clone_umc_bottom/MainActivity.kt @@ -0,0 +1,141 @@ +package com.example.flo_clone_umc_bottom + +import android.app.Activity +import android.content.Intent +import androidx.appcompat.app.AppCompatActivity +import android.os.Bundle +import android.util.Log +import android.view.View +import android.widget.Toast +import androidx.activity.result.contract.ActivityResultContracts +import com.example.flo_clone_umc_bottom.databinding.ActivityMainBinding +import com.google.gson.Gson + +class MainActivity : AppCompatActivity() { + + lateinit var binding: ActivityMainBinding + + private var song: Song = Song() + private var gson: Gson = Gson() + + val getResultText = registerForActivityResult( + ActivityResultContracts.StartActivityForResult() + ) { result -> + if (result.resultCode == Activity.RESULT_OK) { + val albumTitle = result.data?.getStringExtra("ALBUM_TITLE") + Toast.makeText(this,albumTitle, Toast.LENGTH_SHORT).show() + } + } + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setTheme(R.style.Theme_Flo_Clone_UMC_Bottom) + binding = ActivityMainBinding.inflate(layoutInflater) + setContentView(binding.root) + + //val song = Song(binding.mainMiniplayerTitleTv.text.toString(), binding.mainMiniplayerSingerTv.text.toString(),0,60,false,"music_lilac") + //6주차 정보가 계속 초기화 되어서 들어가는 문제를 해결 + + binding.mainPlayerCl.setOnClickListener { + //startActivity(Intent(this, SongActivity::class.java)) + val intent = Intent(this, SongActivity::class.java) + intent.putExtra("title", song.title) + intent.putExtra("singer", song.singer) + intent.putExtra("second", song.second) + intent.putExtra("playTime", song.playTime) + intent.putExtra("isPlaying", song.isPlaying) + intent.putExtra("music", song.music) + intent.putExtra("coverImg", song.coverImg) + getResultText.launch(intent) + } + + + + + initBottomNavigation() + + Log.d("Song",song.title + song.singer) + } + + private fun initBottomNavigation(){ + + supportFragmentManager.beginTransaction() + .replace(R.id.main_frm, HomeFragment()) + .commitAllowingStateLoss() + + binding.mainBnv.setOnItemSelectedListener{ item -> + when (item.itemId) { + + R.id.homeFragment -> { + supportFragmentManager.beginTransaction() + .replace(R.id.main_frm, HomeFragment()) + .commitAllowingStateLoss() + return@setOnItemSelectedListener true + } + + R.id.lookFragment -> { + supportFragmentManager.beginTransaction() + .replace(R.id.main_frm, LookFragment()) + .commitAllowingStateLoss() + return@setOnItemSelectedListener true + } + R.id.searchFragment -> { + supportFragmentManager.beginTransaction() + .replace(R.id.main_frm, SearchFragment()) + .commitAllowingStateLoss() + return@setOnItemSelectedListener true + } + R.id.lockerFragment -> { + supportFragmentManager.beginTransaction() + .replace(R.id.main_frm, LockerFragment()) + .commitAllowingStateLoss() + return@setOnItemSelectedListener true + } + } + false + } + } + + + private fun setMiniPlayer(song: Song){ + binding.mainMiniplayerTitleTv.text = song.title + binding.mainMiniplayerSingerTv.text = song.singer + binding.mainMiniplayerProgressSb.progress = (song.second*100000)/song.playTime + + } + + fun updateMiniPlayer(album: Album) { + song = Song( + title = album.title, + singer = album.singer, + second = 0, + playTime = 60, + isPlaying = false, + music = "music_lilac", + coverImg = album.coverImg + ) + //6주차 SongActivity로 정보 전달을 위한 song 변수 초기화 + + binding.mainMiniplayerTitleTv.text = album.title + binding.mainMiniplayerSingerTv.text = album.singer + binding.mainMiniplayerProgressSb.progress = (song.second*100000)/song.playTime + binding.mainPlayerCl.visibility = View.VISIBLE // 미니 플레이어 표시 + } + //6주차 미니 플레이어 업데이트 + + override fun onStart() { + super.onStart() + val sharedPreferences = getSharedPreferences("song", MODE_PRIVATE) + val songJson = sharedPreferences.getString("songData",null ) + + song = if(songJson == null){ + Song("라일락", "아이유(IU)", 0, 60, false, "music_lilac", R.drawable.img_album_exp2) + } else { + gson.fromJson(songJson, Song::class.java) + } + + setMiniPlayer(song) + + + } +} \ No newline at end of file diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/java/com/example/flo_clone_umc_bottom/MusicFileFragment.kt b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/java/com/example/flo_clone_umc_bottom/MusicFileFragment.kt new file mode 100644 index 00000000..39476b41 --- /dev/null +++ b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/java/com/example/flo_clone_umc_bottom/MusicFileFragment.kt @@ -0,0 +1,23 @@ +package com.example.flo_clone_umc_bottom + +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.fragment.app.Fragment +import com.example.flo_clone_umc_bottom.databinding.FragmentMusicfileBinding +import com.example.flo_clone_umc_bottom.databinding.FragmentVideoBinding + +class MusicFileFragment : Fragment() { + + lateinit var binding: FragmentMusicfileBinding + + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + binding = FragmentMusicfileBinding.inflate(inflater, container, false) + return binding.root + } +} \ No newline at end of file diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/java/com/example/flo_clone_umc_bottom/SavedFragment.kt b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/java/com/example/flo_clone_umc_bottom/SavedFragment.kt new file mode 100644 index 00000000..9b7409f6 --- /dev/null +++ b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/java/com/example/flo_clone_umc_bottom/SavedFragment.kt @@ -0,0 +1,82 @@ +package com.example.flo_clone_umc_bottom + +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.fragment.app.Fragment +import androidx.recyclerview.widget.LinearLayoutManager +import com.example.flo_clone_umc_bottom.databinding.FragmentSavedBinding + +class SavedFragment:Fragment() { + lateinit var binding : FragmentSavedBinding + private var savedDatas = ArrayList() + + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + binding = FragmentSavedBinding.inflate(inflater,container,false) + + savedDatas.apply{ + add(LockerAlbum("Butter", "방탄소년단 (BTS)", R.drawable.img_album_exp)) + add(LockerAlbum("Lilac", "아이유 (IU)", R.drawable.img_album_exp2)) + add(LockerAlbum("Next Level", "에스파 (AESPA)", R.drawable.img_album_exp3)) + add(LockerAlbum("Boy with Luv", "방탄소년단 (BTS)", R.drawable.img_album_exp4)) + add(LockerAlbum("BBoom BBoom", "모모랜드 (MOMOLAND)", R.drawable.img_album_exp5)) + add(LockerAlbum("Weekend", "태연 (Tae Yeon)", R.drawable.img_album_exp6)) + add(LockerAlbum("Butter", "방탄소년단 (BTS)", R.drawable.img_album_exp)) + add(LockerAlbum("Lilac", "아이유 (IU)", R.drawable.img_album_exp2)) + add(LockerAlbum("Next Level", "에스파 (AESPA)", R.drawable.img_album_exp3)) + add(LockerAlbum("Boy with Luv", "방탄소년단 (BTS)", R.drawable.img_album_exp4)) + add(LockerAlbum("BBoom BBoom", "모모랜드 (MOMOLAND)", R.drawable.img_album_exp5)) + add(LockerAlbum("Weekend", "태연 (Tae Yeon)", R.drawable.img_album_exp6)) + add(LockerAlbum("Butter", "방탄소년단 (BTS)", R.drawable.img_album_exp)) + add(LockerAlbum("Lilac", "아이유 (IU)", R.drawable.img_album_exp2)) + add(LockerAlbum("Next Level", "에스파 (AESPA)", R.drawable.img_album_exp3)) + add(LockerAlbum("Boy with Luv", "방탄소년단 (BTS)", R.drawable.img_album_exp4)) + add(LockerAlbum("BBoom BBoom", "모모랜드 (MOMOLAND)", R.drawable.img_album_exp5)) + add(LockerAlbum("Weekend", "태연 (Tae Yeon)", R.drawable.img_album_exp6)) + add(LockerAlbum("Butter", "방탄소년단 (BTS)", R.drawable.img_album_exp)) + add(LockerAlbum("Lilac", "아이유 (IU)", R.drawable.img_album_exp2)) + add(LockerAlbum("Next Level", "에스파 (AESPA)", R.drawable.img_album_exp3)) + add(LockerAlbum("Boy with Luv", "방탄소년단 (BTS)", R.drawable.img_album_exp4)) + add(LockerAlbum("BBoom BBoom", "모모랜드 (MOMOLAND)", R.drawable.img_album_exp5)) + add(LockerAlbum("Weekend", "태연 (Tae Yeon)", R.drawable.img_album_exp6)) + add(LockerAlbum("Butter", "방탄소년단 (BTS)", R.drawable.img_album_exp)) + add(LockerAlbum("Lilac", "아이유 (IU)", R.drawable.img_album_exp2)) + add(LockerAlbum("Next Level", "에스파 (AESPA)", R.drawable.img_album_exp3)) + add(LockerAlbum("Boy with Luv", "방탄소년단 (BTS)", R.drawable.img_album_exp4)) + add(LockerAlbum("BBoom BBoom", "모모랜드 (MOMOLAND)", R.drawable.img_album_exp5)) + add(LockerAlbum("Weekend", "태연 (Tae Yeon)", R.drawable.img_album_exp6)) + add(LockerAlbum("Butter", "방탄소년단 (BTS)", R.drawable.img_album_exp)) + add(LockerAlbum("Lilac", "아이유 (IU)", R.drawable.img_album_exp2)) + add(LockerAlbum("Next Level", "에스파 (AESPA)", R.drawable.img_album_exp3)) + add(LockerAlbum("Boy with Luv", "방탄소년단 (BTS)", R.drawable.img_album_exp4)) + add(LockerAlbum("BBoom BBoom", "모모랜드 (MOMOLAND)", R.drawable.img_album_exp5)) + add(LockerAlbum("Weekend", "태연 (Tae Yeon)", R.drawable.img_album_exp6)) + } + //6주차 locker에 recyclerView 내용 추가 + + val lockerAlbumRVAdapter = LockerAlbumRVAdapter(savedDatas) + binding.savedAlbumInfoRv.adapter = lockerAlbumRVAdapter + binding.savedAlbumInfoRv.layoutManager = LinearLayoutManager(context, LinearLayoutManager.VERTICAL,false) + //6주차 recyclerView에 추가 + + lockerAlbumRVAdapter.setMyItemClickListener(object: LockerAlbumRVAdapter.MyItemClickListener{ + override fun onRemoveAlbum(position: Int) { + lockerAlbumRVAdapter.removeItem(position) + } + + //6주차 ... 누르면 없어지기 + override fun onButtonClick(position: Int, click: Boolean) { + savedDatas[position].isButtonVisible = !savedDatas[position].isButtonVisible + + } + }) + + + return binding.root + } +} \ No newline at end of file diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/java/com/example/flo_clone_umc_bottom/SearchFragment.kt b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/java/com/example/flo_clone_umc_bottom/SearchFragment.kt new file mode 100644 index 00000000..9e5b9088 --- /dev/null +++ b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/java/com/example/flo_clone_umc_bottom/SearchFragment.kt @@ -0,0 +1,23 @@ +package com.example.flo_clone_umc_bottom + +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.fragment.app.Fragment +import com.example.flo_clone_umc_bottom.databinding.FragmentSearchBinding + +class SearchFragment : Fragment() { + + lateinit var binding: FragmentSearchBinding + + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + binding = FragmentSearchBinding.inflate(inflater, container, false) + + return binding.root + } +} \ No newline at end of file diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/java/com/example/flo_clone_umc_bottom/Song.kt b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/java/com/example/flo_clone_umc_bottom/Song.kt new file mode 100644 index 00000000..04c09a5e --- /dev/null +++ b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/java/com/example/flo_clone_umc_bottom/Song.kt @@ -0,0 +1,11 @@ +package com.example.flo_clone_umc_bottom + +data class Song( + val title : String? = "", + val singer : String? = "", + var second : Int = 0, + val playTime : Int = 0, + var isPlaying : Boolean = false, + var music : String = "", + var coverImg: Int? = null +) diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/java/com/example/flo_clone_umc_bottom/SongActivity.kt b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/java/com/example/flo_clone_umc_bottom/SongActivity.kt new file mode 100644 index 00000000..f9d0ef80 --- /dev/null +++ b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/java/com/example/flo_clone_umc_bottom/SongActivity.kt @@ -0,0 +1,197 @@ +package com.example.flo_clone_umc_bottom + +import android.app.Activity +import android.content.Intent +import android.media.MediaPlayer +import android.os.Bundle +import android.os.PersistableBundle +import android.util.Log +import android.view.View +import androidx.appcompat.app.AppCompatActivity +import com.example.flo_clone_umc_bottom.databinding.ActivitySongBinding +import com.google.gson.Gson + +class SongActivity : AppCompatActivity() { + lateinit var binding : ActivitySongBinding + lateinit var song : Song + lateinit var timer: Timer + private var mediaPlayer: MediaPlayer? = null + private var gson : Gson = Gson() + private var repeat = false //5주차 repeat 변수 + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + binding = ActivitySongBinding.inflate(layoutInflater) + setContentView(binding.root) + + initSong() + setPlayer(song) + + binding.songMiniplayerIv.setOnClickListener { + setPlayerStatus(false) + } + binding.songPauseIv.setOnClickListener { + setPlayerStatus(true) + } + + binding.songRepeatIv.setOnClickListener { + setRepeatStatus(true) + } + binding.songRepeatingIv.setOnClickListener { + setRepeatStatus(false) + } + //5주차 setRepeatStatus 함수에 맞춰 true, false 변경 + + binding.songRandomIv.setOnClickListener { + setRandomStatus(false) + } + binding.songRandomingIv.setOnClickListener { + setRandomStatus(true) + } + + binding.songDownIb.setOnClickListener{ + val resultIntent = Intent() + resultIntent.putExtra("ALBUM_TITLE", binding.songMusicTitleTv.text) + setResult(Activity.RESULT_OK, resultIntent) + finish() + } + } + + private fun initSong(){ + if(intent.hasExtra("title") && intent.hasExtra("singer")){ + song = Song( + intent.getStringExtra("title")!!, + intent.getStringExtra("singer")!!, + intent.getIntExtra("second",0), + intent.getIntExtra("playTime",0), + intent.getBooleanExtra("isPlaying",false), + intent.getStringExtra("music")!! + ) + } + startTimer() + } + + private fun setPlayer(song : Song){ + binding.songMusicTitleTv.text = intent.getStringExtra("title") + binding.songSingerNameTv.text = intent.getStringExtra("singer") + binding.songStartTimeTv.text = String.format("%02d:%02d",song.second /60, song.second % 60) + binding.songEndTimeTv.text = String.format("%02d:%02d",song.playTime /60, song.playTime % 60) + binding.songProgressSb.progress = (song.second * 1000 / song.playTime) + //val music = resources.getIdentifier(song.music, "raw", this.packageName) + val music = R.raw.music_lilac + val coverImgResId = intent.getIntExtra("coverImg", R.drawable.img_album_exp2) + mediaPlayer = MediaPlayer.create(this,music) + binding.songAlbumIv.setImageResource(coverImgResId) + + setPlayerStatus(song.isPlaying) + } + + fun setPlayerStatus(isPlaying : Boolean){ + song.isPlaying = isPlaying + timer.isPlaying = isPlaying + if(isPlaying){ + binding.songMiniplayerIv.visibility = View.VISIBLE + binding.songPauseIv.visibility = View.GONE + mediaPlayer?.start() + } + else { + binding.songMiniplayerIv.visibility = View.GONE + binding.songPauseIv.visibility = View.VISIBLE + if(mediaPlayer?.isPlaying == true){ + mediaPlayer?.pause() + } + } + } + + private fun startTimer() { + if (::timer.isInitialized) { + timer.interrupt() + } + timer = Timer(song.playTime, song.isPlaying) + timer.start() + } + //5주차 기존 타이머 스레드 종료 및 시작 + + inner class Timer(private val playTime: Int, var isPlaying: Boolean = true): Thread() { + private var second: Int = 0 + private var mills: Float = 0f + + override fun run() { + super.run() + try { + while (true) { + if (second >= playTime) { + if (repeat) { + //5주차 repeat이 활성화된 경우, 노래를 다시 시작 + second = 0 + mills = 0f + mediaPlayer?.seekTo(0) + mediaPlayer?.start() + } else { + break + } + } + + if (isPlaying) { + sleep(50) + mills += 50 + + runOnUiThread { + binding.songProgressSb.progress = ((mills / playTime) * 100).toInt() + } + if (mills % 1000 == 0f) { + runOnUiThread { + binding.songStartTimeTv.text = String.format("%02d:%02d", second / 60, second % 60) + } + second++ + } + } + } + } catch (e: InterruptedException) { + Log.d("Song", "쓰레드가 죽었습니다. ${e.message}") + } + } + } + + override fun onPause() { + setPlayerStatus(false) + super.onPause() + song.second = ((binding.songProgressSb.progress * song.playTime)/100)/1000 + val sharedPreferences = getSharedPreferences("song", MODE_PRIVATE) + val editor = sharedPreferences.edit() + editor.putString("title", song.title) + val songJson = gson.toJson(song) + editor.putString("songData", songJson) + + editor.apply() + } + + override fun onDestroy() { + super.onDestroy() + timer.interrupt() + mediaPlayer?.release() + mediaPlayer = null + } + + fun setRepeatStatus(isRepeating: Boolean) { + repeat = isRepeating // repeat 변수 업데이트 + if (repeat) { + binding.songRepeatIv.visibility = View.GONE + binding.songRepeatingIv.visibility = View.VISIBLE + } else { + binding.songRepeatIv.visibility = View.VISIBLE + binding.songRepeatingIv.visibility = View.GONE + } + } + //5주차 repeat에 맞춰 변경 + + fun setRandomStatus(isPlaying : Boolean) { + if (isPlaying) { + binding.songRandomIv.visibility = View.VISIBLE + binding.songRandomingIv.visibility = View.GONE + } else { + binding.songRandomIv.visibility = View.GONE + binding.songRandomingIv.visibility = View.VISIBLE + } + } +} \ No newline at end of file diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/java/com/example/flo_clone_umc_bottom/SongFragment.kt b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/java/com/example/flo_clone_umc_bottom/SongFragment.kt new file mode 100644 index 00000000..81116ef1 --- /dev/null +++ b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/java/com/example/flo_clone_umc_bottom/SongFragment.kt @@ -0,0 +1,49 @@ +package com.example.flo_clone_umc_bottom + +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.Toast +import androidx.fragment.app.Fragment +import com.example.flo_clone_umc_bottom.databinding.FragmentSongvpBinding + +class SongFragment : Fragment() { + lateinit var binding: FragmentSongvpBinding + + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + binding = FragmentSongvpBinding.inflate(inflater,container,false) + //내 취향 믹스 버튼 온 오프 + binding.songMixoffTg.setOnClickListener { + setMixStatus(true) + } + binding.songMixonTg.setOnClickListener { + setMixStatus(false) + } + + val albumTitle = arguments?.getString("ALBUM_TITLE") + val albumArtist = arguments?.getString("ALBUM_ARTIST") + + binding.songMusicTitle01Tv.text = albumTitle ?: "Unknown Album" + binding.songSingerName01Tv.text = albumArtist ?: "Unknown Artist" + + binding.songLalacLayout.setOnClickListener { + Toast.makeText(activity,albumTitle, Toast.LENGTH_SHORT).show() + } + return binding.root + } + + fun setMixStatus(isPlaying : Boolean) { + if (isPlaying) { + binding.songMixoffTg.visibility = View.GONE + binding.songMixonTg.visibility = View.VISIBLE + } else { + binding.songMixoffTg.visibility = View.VISIBLE + binding.songMixonTg.visibility = View.GONE + } + } +} \ No newline at end of file diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/java/com/example/flo_clone_umc_bottom/VideoFragment.kt b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/java/com/example/flo_clone_umc_bottom/VideoFragment.kt new file mode 100644 index 00000000..5588808a --- /dev/null +++ b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/java/com/example/flo_clone_umc_bottom/VideoFragment.kt @@ -0,0 +1,22 @@ +package com.example.flo_clone_umc_bottom + +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.fragment.app.Fragment +import com.example.flo_clone_umc_bottom.databinding.FragmentDetailBinding +import com.example.flo_clone_umc_bottom.databinding.FragmentVideoBinding + +class VideoFragment : Fragment() { + lateinit var binding: FragmentVideoBinding + + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + binding = FragmentVideoBinding.inflate(inflater,container,false) + return binding.root + } +} \ No newline at end of file diff --git a/Paulo/UMC_Paulo_Mission1_Linear/app/src/main/res/drawable/drawable/ic_launcher_foreground.xml b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable-v24/ic_launcher_foreground.xml similarity index 100% rename from Paulo/UMC_Paulo_Mission1_Linear/app/src/main/res/drawable/drawable/ic_launcher_foreground.xml rename to Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable-v24/ic_launcher_foreground.xml diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/apple_44.png b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/apple_44.png new file mode 100644 index 00000000..f365d20c Binary files /dev/null and b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/apple_44.png differ diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/btm_color_selector.xml b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/btm_color_selector.xml new file mode 100644 index 00000000..3ecf8a7a --- /dev/null +++ b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/btm_color_selector.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/btn_actionbar_close.png b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/btn_actionbar_close.png new file mode 100644 index 00000000..b6cc3cc0 Binary files /dev/null and b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/btn_actionbar_close.png differ diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/btn_actionbar_instagram.png b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/btn_actionbar_instagram.png new file mode 100644 index 00000000..90bc0277 Binary files /dev/null and b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/btn_actionbar_instagram.png differ diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/btn_arrow_black.png b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/btn_arrow_black.png new file mode 100644 index 00000000..cc38ca8c Binary files /dev/null and b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/btn_arrow_black.png differ diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/btn_arrow_more.png b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/btn_arrow_more.png new file mode 100644 index 00000000..59e410c5 Binary files /dev/null and b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/btn_arrow_more.png differ diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/btn_input_password.png b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/btn_input_password.png new file mode 100644 index 00000000..8c2eb186 Binary files /dev/null and b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/btn_input_password.png differ diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/btn_input_password_off.png b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/btn_input_password_off.png new file mode 100644 index 00000000..8234f538 Binary files /dev/null and b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/btn_input_password_off.png differ diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/btn_main_arrow_more.png b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/btn_main_arrow_more.png new file mode 100644 index 00000000..59e410c5 Binary files /dev/null and b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/btn_main_arrow_more.png differ diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/btn_main_mike.png b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/btn_main_mike.png new file mode 100644 index 00000000..9bddec69 Binary files /dev/null and b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/btn_main_mike.png differ diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/btn_main_setting.png b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/btn_main_setting.png new file mode 100644 index 00000000..7a8d5d6a Binary files /dev/null and b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/btn_main_setting.png differ diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/btn_main_ticket.png b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/btn_main_ticket.png new file mode 100644 index 00000000..52b6d64f Binary files /dev/null and b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/btn_main_ticket.png differ diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/btn_miniplay_mvpause.png b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/btn_miniplay_mvpause.png new file mode 100644 index 00000000..470e0467 Binary files /dev/null and b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/btn_miniplay_mvpause.png differ diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/btn_miniplay_mvplay.png b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/btn_miniplay_mvplay.png new file mode 100644 index 00000000..d1186774 Binary files /dev/null and b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/btn_miniplay_mvplay.png differ diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/btn_miniplay_pause.png b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/btn_miniplay_pause.png new file mode 100644 index 00000000..470e0467 Binary files /dev/null and b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/btn_miniplay_pause.png differ diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/btn_miniplayer_go_list.png b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/btn_miniplayer_go_list.png new file mode 100644 index 00000000..1b2d9774 Binary files /dev/null and b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/btn_miniplayer_go_list.png differ diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/btn_miniplayer_next.png b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/btn_miniplayer_next.png new file mode 100644 index 00000000..3aedba3c Binary files /dev/null and b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/btn_miniplayer_next.png differ diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/btn_miniplayer_play.png b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/btn_miniplayer_play.png new file mode 100644 index 00000000..f6190725 Binary files /dev/null and b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/btn_miniplayer_play.png differ diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/btn_miniplayer_previous.png b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/btn_miniplayer_previous.png new file mode 100644 index 00000000..d0bf1f66 Binary files /dev/null and b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/btn_miniplayer_previous.png differ diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/btn_nugu.png b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/btn_nugu.png new file mode 100644 index 00000000..9bddec69 Binary files /dev/null and b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/btn_nugu.png differ diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/btn_panel_play_large.png b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/btn_panel_play_large.png new file mode 100644 index 00000000..4ac71038 Binary files /dev/null and b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/btn_panel_play_large.png differ diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/btn_player_eq_off.png b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/btn_player_eq_off.png new file mode 100644 index 00000000..f23d9c6c Binary files /dev/null and b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/btn_player_eq_off.png differ diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/btn_player_go_list.png b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/btn_player_go_list.png new file mode 100644 index 00000000..1b2d9774 Binary files /dev/null and b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/btn_player_go_list.png differ diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/btn_player_more.png b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/btn_player_more.png new file mode 100644 index 00000000..a8ad9e62 Binary files /dev/null and b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/btn_player_more.png differ diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/btn_player_play.png b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/btn_player_play.png new file mode 100644 index 00000000..f6c3201c Binary files /dev/null and b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/btn_player_play.png differ diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/btn_player_related.png b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/btn_player_related.png new file mode 100644 index 00000000..9026fe5e Binary files /dev/null and b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/btn_player_related.png differ diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/btn_player_setting.png b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/btn_player_setting.png new file mode 100644 index 00000000..0df8f69a Binary files /dev/null and b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/btn_player_setting.png differ diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/btn_player_unlike_off.png b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/btn_player_unlike_off.png new file mode 100644 index 00000000..b5395047 Binary files /dev/null and b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/btn_player_unlike_off.png differ diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/btn_player_unlike_on.png b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/btn_player_unlike_on.png new file mode 100644 index 00000000..45a43cae Binary files /dev/null and b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/btn_player_unlike_on.png differ diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/btn_playlist_select_off.png b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/btn_playlist_select_off.png new file mode 100644 index 00000000..62ef45ca Binary files /dev/null and b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/btn_playlist_select_off.png differ diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/btn_playlist_select_on.png b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/btn_playlist_select_on.png new file mode 100644 index 00000000..2d3b6afe Binary files /dev/null and b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/btn_playlist_select_on.png differ diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/btn_setting_phone.png b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/btn_setting_phone.png new file mode 100644 index 00000000..d6de4c69 Binary files /dev/null and b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/btn_setting_phone.png differ diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/btn_textbox_close.png b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/btn_textbox_close.png new file mode 100644 index 00000000..10f1f636 Binary files /dev/null and b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/btn_textbox_close.png differ diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/btn_titlebar_close.png b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/btn_titlebar_close.png new file mode 100644 index 00000000..6615deff Binary files /dev/null and b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/btn_titlebar_close.png differ diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/btn_toggle_off.png b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/btn_toggle_off.png new file mode 100644 index 00000000..983360df Binary files /dev/null and b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/btn_toggle_off.png differ diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/btn_toggle_on.png b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/btn_toggle_on.png new file mode 100644 index 00000000..fb609f46 Binary files /dev/null and b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/btn_toggle_on.png differ diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/button_background_black_color.xml b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/button_background_black_color.xml new file mode 100644 index 00000000..cad3794f --- /dev/null +++ b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/button_background_black_color.xml @@ -0,0 +1,10 @@ + + + + + + + diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/button_background_flo_color.xml b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/button_background_flo_color.xml new file mode 100644 index 00000000..d5e92f35 --- /dev/null +++ b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/button_background_flo_color.xml @@ -0,0 +1,10 @@ + + + + + + + diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/button_background_gray_color.xml b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/button_background_gray_color.xml new file mode 100644 index 00000000..dbcaae2b --- /dev/null +++ b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/button_background_gray_color.xml @@ -0,0 +1,10 @@ + + + + + + + diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/button_background_white_color.xml b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/button_background_white_color.xml new file mode 100644 index 00000000..32e95830 --- /dev/null +++ b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/button_background_white_color.xml @@ -0,0 +1,10 @@ + + + + + + + diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/discovery_banner_aos.jpg b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/discovery_banner_aos.jpg new file mode 100644 index 00000000..c9055156 Binary files /dev/null and b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/discovery_banner_aos.jpg differ diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/fragment_look_chart_background.xml b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/fragment_look_chart_background.xml new file mode 100644 index 00000000..64c040f5 --- /dev/null +++ b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/fragment_look_chart_background.xml @@ -0,0 +1,16 @@ + + + + + + + + diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/fragment_look_chip_off_background.xml b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/fragment_look_chip_off_background.xml new file mode 100644 index 00000000..43005ce6 --- /dev/null +++ b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/fragment_look_chip_off_background.xml @@ -0,0 +1,16 @@ + + + + + + + + diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/fragment_look_chip_on_background.xml b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/fragment_look_chip_on_background.xml new file mode 100644 index 00000000..ce894ed7 --- /dev/null +++ b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/fragment_look_chip_on_background.xml @@ -0,0 +1,16 @@ + + + + + + + + diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/ic_bottom_home_no_select.png b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/ic_bottom_home_no_select.png new file mode 100644 index 00000000..69a8ab6c Binary files /dev/null and b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/ic_bottom_home_no_select.png differ diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/ic_bottom_home_select.png b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/ic_bottom_home_select.png new file mode 100644 index 00000000..c0ff48e7 Binary files /dev/null and b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/ic_bottom_home_select.png differ diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/ic_bottom_locker_no_select.png b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/ic_bottom_locker_no_select.png new file mode 100644 index 00000000..a67dec39 Binary files /dev/null and b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/ic_bottom_locker_no_select.png differ diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/ic_bottom_locker_select.png b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/ic_bottom_locker_select.png new file mode 100644 index 00000000..042489f1 Binary files /dev/null and b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/ic_bottom_locker_select.png differ diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/ic_bottom_look_no_select.png b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/ic_bottom_look_no_select.png new file mode 100644 index 00000000..6c2f4f0c Binary files /dev/null and b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/ic_bottom_look_no_select.png differ diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/ic_bottom_look_select.png b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/ic_bottom_look_select.png new file mode 100644 index 00000000..3d169e48 Binary files /dev/null and b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/ic_bottom_look_select.png differ diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/ic_bottom_my_no_select.png b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/ic_bottom_my_no_select.png new file mode 100644 index 00000000..a67dec39 Binary files /dev/null and b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/ic_bottom_my_no_select.png differ diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/ic_bottom_my_select.png b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/ic_bottom_my_select.png new file mode 100644 index 00000000..042489f1 Binary files /dev/null and b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/ic_bottom_my_select.png differ diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/ic_bottom_search_no_select.png b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/ic_bottom_search_no_select.png new file mode 100644 index 00000000..a77b8c57 Binary files /dev/null and b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/ic_bottom_search_no_select.png differ diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/ic_bottom_search_select.png b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/ic_bottom_search_select.png new file mode 100644 index 00000000..d5c8a722 Binary files /dev/null and b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/ic_bottom_search_select.png differ diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/ic_browse_arrow_right.png b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/ic_browse_arrow_right.png new file mode 100644 index 00000000..71b588bf Binary files /dev/null and b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/ic_browse_arrow_right.png differ diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/ic_flo_logo.png b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/ic_flo_logo.png new file mode 100644 index 00000000..643224de Binary files /dev/null and b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/ic_flo_logo.png differ diff --git a/Paulo/UMC_Paulo_Mission1_Linear/app/src/main/res/drawable/drawable/ic_launcher_background.xml b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/ic_launcher_background.xml similarity index 100% rename from Paulo/UMC_Paulo_Mission1_Linear/app/src/main/res/drawable/drawable/ic_launcher_background.xml rename to Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/ic_launcher_background.xml diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/ic_main_facebook.png b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/ic_main_facebook.png new file mode 100644 index 00000000..83e97321 Binary files /dev/null and b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/ic_main_facebook.png differ diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/ic_main_facebook_btn.png b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/ic_main_facebook_btn.png new file mode 100644 index 00000000..83e97321 Binary files /dev/null and b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/ic_main_facebook_btn.png differ diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/ic_main_instagram.png b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/ic_main_instagram.png new file mode 100644 index 00000000..398ce614 Binary files /dev/null and b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/ic_main_instagram.png differ diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/ic_main_instagram_btn.png b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/ic_main_instagram_btn.png new file mode 100644 index 00000000..398ce614 Binary files /dev/null and b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/ic_main_instagram_btn.png differ diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/ic_main_twitter.png b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/ic_main_twitter.png new file mode 100644 index 00000000..6ddc68ee Binary files /dev/null and b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/ic_main_twitter.png differ diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/ic_main_twitter_btn.png b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/ic_main_twitter_btn.png new file mode 100644 index 00000000..6ddc68ee Binary files /dev/null and b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/ic_main_twitter_btn.png differ diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/ic_main_youtube.png b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/ic_main_youtube.png new file mode 100644 index 00000000..0c4ec932 Binary files /dev/null and b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/ic_main_youtube.png differ diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/ic_main_youtube_btn.png b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/ic_main_youtube_btn.png new file mode 100644 index 00000000..0c4ec932 Binary files /dev/null and b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/ic_main_youtube_btn.png differ diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/ic_my_like_off.png b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/ic_my_like_off.png new file mode 100644 index 00000000..c06e139d Binary files /dev/null and b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/ic_my_like_off.png differ diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/ic_my_like_on.png b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/ic_my_like_on.png new file mode 100644 index 00000000..22577c0b Binary files /dev/null and b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/ic_my_like_on.png differ diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/ico_20_logo_tid_white.png b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/ico_20_logo_tid_white.png new file mode 100644 index 00000000..c6f4d4f9 Binary files /dev/null and b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/ico_20_logo_tid_white.png differ diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/icon_browse_arrow_right.png b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/icon_browse_arrow_right.png new file mode 100644 index 00000000..71b588bf Binary files /dev/null and b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/icon_browse_arrow_right.png differ diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/img_album_exp.png b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/img_album_exp.png new file mode 100644 index 00000000..6e3f38af Binary files /dev/null and b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/img_album_exp.png differ diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/img_album_exp1.jpeg b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/img_album_exp1.jpeg new file mode 100644 index 00000000..3f3c205a Binary files /dev/null and b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/img_album_exp1.jpeg differ diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/img_album_exp2.png b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/img_album_exp2.png new file mode 100644 index 00000000..28ea3ee5 Binary files /dev/null and b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/img_album_exp2.png differ diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/img_album_exp3.jpg b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/img_album_exp3.jpg new file mode 100644 index 00000000..66416001 Binary files /dev/null and b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/img_album_exp3.jpg differ diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/img_album_exp4.jpg b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/img_album_exp4.jpg new file mode 100644 index 00000000..aecebb6a Binary files /dev/null and b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/img_album_exp4.jpg differ diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/img_album_exp5.jpg b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/img_album_exp5.jpg new file mode 100644 index 00000000..6a8d8701 Binary files /dev/null and b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/img_album_exp5.jpg differ diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/img_album_exp6.jpg b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/img_album_exp6.jpg new file mode 100644 index 00000000..48202f2d Binary files /dev/null and b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/img_album_exp6.jpg differ diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/img_album_lp.png b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/img_album_lp.png new file mode 100644 index 00000000..29fb1b4d Binary files /dev/null and b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/img_album_lp.png differ diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/img_default_4_x_1.png b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/img_default_4_x_1.png new file mode 100644 index 00000000..926d34f5 Binary files /dev/null and b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/img_default_4_x_1.png differ diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/img_first_album_default.png b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/img_first_album_default.png new file mode 100644 index 00000000..926d34f5 Binary files /dev/null and b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/img_first_album_default.png differ diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/img_home_viewpager_exp.png b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/img_home_viewpager_exp.png new file mode 100644 index 00000000..da780323 Binary files /dev/null and b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/img_home_viewpager_exp.png differ diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/img_home_viewpager_exp2.png b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/img_home_viewpager_exp2.png new file mode 100644 index 00000000..50fa4be8 Binary files /dev/null and b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/img_home_viewpager_exp2.png differ diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/img_jenre_exp_1.png b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/img_jenre_exp_1.png new file mode 100644 index 00000000..0d43e8e4 Binary files /dev/null and b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/img_jenre_exp_1.png differ diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/img_jenre_exp_2.png b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/img_jenre_exp_2.png new file mode 100644 index 00000000..f03efb22 Binary files /dev/null and b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/img_jenre_exp_2.png differ diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/img_jenre_exp_3.png b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/img_jenre_exp_3.png new file mode 100644 index 00000000..51de6849 Binary files /dev/null and b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/img_jenre_exp_3.png differ diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/img_potcast_exp.png b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/img_potcast_exp.png new file mode 100644 index 00000000..50a46e03 Binary files /dev/null and b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/img_potcast_exp.png differ diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/img_video_exp.png b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/img_video_exp.png new file mode 100644 index 00000000..7f6b05f2 Binary files /dev/null and b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/img_video_exp.png differ diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/kakako_44.png b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/kakako_44.png new file mode 100644 index 00000000..243298e0 Binary files /dev/null and b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/kakako_44.png differ diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/main_btm_color_selector.xml b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/main_btm_color_selector.xml new file mode 100644 index 00000000..3ecf8a7a --- /dev/null +++ b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/main_btm_color_selector.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/main_btm_home_selector.xml b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/main_btm_home_selector.xml new file mode 100644 index 00000000..b018478e --- /dev/null +++ b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/main_btm_home_selector.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/main_btm_look_selector.xml b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/main_btm_look_selector.xml new file mode 100644 index 00000000..89ced75d --- /dev/null +++ b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/main_btm_look_selector.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/main_btm_my_selector.xml b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/main_btm_my_selector.xml new file mode 100644 index 00000000..d6739bf2 --- /dev/null +++ b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/main_btm_my_selector.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/main_btm_search_selector.xml b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/main_btm_search_selector.xml new file mode 100644 index 00000000..e6e823fd --- /dev/null +++ b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/main_btm_search_selector.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/naver_44.png b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/naver_44.png new file mode 100644 index 00000000..d9844877 Binary files /dev/null and b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/naver_44.png differ diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/nugu_btn_down.png b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/nugu_btn_down.png new file mode 100644 index 00000000..03a04c57 Binary files /dev/null and b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/nugu_btn_down.png differ diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/nugu_btn_pause_32.png b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/nugu_btn_pause_32.png new file mode 100644 index 00000000..9388aa33 Binary files /dev/null and b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/nugu_btn_pause_32.png differ diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/nugu_btn_play_32.png b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/nugu_btn_play_32.png new file mode 100644 index 00000000..b781e4c8 Binary files /dev/null and b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/nugu_btn_play_32.png differ diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/nugu_btn_random_inactive.png b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/nugu_btn_random_inactive.png new file mode 100644 index 00000000..fe4f880b Binary files /dev/null and b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/nugu_btn_random_inactive.png differ diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/nugu_btn_randoming_inactive.png b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/nugu_btn_randoming_inactive.png new file mode 100644 index 00000000..c874de72 Binary files /dev/null and b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/nugu_btn_randoming_inactive.png differ diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/nugu_btn_repeat_inactive.png b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/nugu_btn_repeat_inactive.png new file mode 100644 index 00000000..1e4044dc Binary files /dev/null and b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/nugu_btn_repeat_inactive.png differ diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/nugu_btn_repeating_inactive.png b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/nugu_btn_repeating_inactive.png new file mode 100644 index 00000000..16692af9 Binary files /dev/null and b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/nugu_btn_repeating_inactive.png differ diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/nugu_btn_skip_next_32.png b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/nugu_btn_skip_next_32.png new file mode 100644 index 00000000..fc02f28f Binary files /dev/null and b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/nugu_btn_skip_next_32.png differ diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/nugu_btn_skip_previous_32.png b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/nugu_btn_skip_previous_32.png new file mode 100644 index 00000000..03ec854c Binary files /dev/null and b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/nugu_btn_skip_previous_32.png differ diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/splash.xml b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/splash.xml new file mode 100644 index 00000000..ace8a7d8 --- /dev/null +++ b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/splash.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/textview_background_radius.xml b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/textview_background_radius.xml new file mode 100644 index 00000000..53beead7 --- /dev/null +++ b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/textview_background_radius.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/textview_background_select_color_radius.xml b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/textview_background_select_color_radius.xml new file mode 100644 index 00000000..ea8dc88c --- /dev/null +++ b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/textview_background_select_color_radius.xml @@ -0,0 +1,13 @@ + + + + + + + + + diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/widget_black_play.png b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/widget_black_play.png new file mode 100644 index 00000000..0ec27005 Binary files /dev/null and b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/drawable/widget_black_play.png differ diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/layout/activity_main.xml b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/layout/activity_main.xml new file mode 100644 index 00000000..ea4cb306 --- /dev/null +++ b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/layout/activity_main.xml @@ -0,0 +1,129 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/layout/activity_song.xml b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/layout/activity_song.xml new file mode 100644 index 00000000..b66ce9a9 --- /dev/null +++ b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/layout/activity_song.xml @@ -0,0 +1,328 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/layout/activity_splash.xml b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/layout/activity_splash.xml new file mode 100644 index 00000000..84ca1014 --- /dev/null +++ b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/layout/activity_splash.xml @@ -0,0 +1,18 @@ + + + + + + \ No newline at end of file diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/layout/fragment_album.xml b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/layout/fragment_album.xml new file mode 100644 index 00000000..99b8e4ea --- /dev/null +++ b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/layout/fragment_album.xml @@ -0,0 +1,192 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/layout/fragment_banner.xml b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/layout/fragment_banner.xml new file mode 100644 index 00000000..79d444a9 --- /dev/null +++ b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/layout/fragment_banner.xml @@ -0,0 +1,19 @@ + + + + + + diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/layout/fragment_detail.xml b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/layout/fragment_detail.xml new file mode 100644 index 00000000..0c7e4d03 --- /dev/null +++ b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/layout/fragment_detail.xml @@ -0,0 +1,18 @@ + + + + + + + \ No newline at end of file diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/layout/fragment_home.xml b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/layout/fragment_home.xml new file mode 100644 index 00000000..8431bd34 --- /dev/null +++ b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/layout/fragment_home.xml @@ -0,0 +1,823 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/layout/fragment_homebanner.xml b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/layout/fragment_homebanner.xml new file mode 100644 index 00000000..a3e7339c --- /dev/null +++ b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/layout/fragment_homebanner.xml @@ -0,0 +1,19 @@ + + + + + + \ No newline at end of file diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/layout/fragment_locker.xml b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/layout/fragment_locker.xml new file mode 100644 index 00000000..1514c2c8 --- /dev/null +++ b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/layout/fragment_locker.xml @@ -0,0 +1,105 @@ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/layout/fragment_look.xml b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/layout/fragment_look.xml new file mode 100644 index 00000000..59d13593 --- /dev/null +++ b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/layout/fragment_look.xml @@ -0,0 +1,16 @@ + + + + + + \ No newline at end of file diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/layout/fragment_musicfile.xml b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/layout/fragment_musicfile.xml new file mode 100644 index 00000000..f3c36909 --- /dev/null +++ b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/layout/fragment_musicfile.xml @@ -0,0 +1,15 @@ + + + + + \ No newline at end of file diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/layout/fragment_saved.xml b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/layout/fragment_saved.xml new file mode 100644 index 00000000..277110c2 --- /dev/null +++ b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/layout/fragment_saved.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/layout/fragment_search.xml b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/layout/fragment_search.xml new file mode 100644 index 00000000..6fbc0a95 --- /dev/null +++ b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/layout/fragment_search.xml @@ -0,0 +1,16 @@ + + + + + + \ No newline at end of file diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/layout/fragment_song.xml b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/layout/fragment_song.xml new file mode 100644 index 00000000..533d0356 --- /dev/null +++ b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/layout/fragment_song.xml @@ -0,0 +1,556 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/layout/fragment_songvp.xml b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/layout/fragment_songvp.xml new file mode 100644 index 00000000..3d8a9852 --- /dev/null +++ b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/layout/fragment_songvp.xml @@ -0,0 +1,554 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/layout/fragment_video.xml b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/layout/fragment_video.xml new file mode 100644 index 00000000..3da36132 --- /dev/null +++ b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/layout/fragment_video.xml @@ -0,0 +1,18 @@ + + + + + + + \ No newline at end of file diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/layout/item_album.xml b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/layout/item_album.xml new file mode 100644 index 00000000..5eba725e --- /dev/null +++ b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/layout/item_album.xml @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/layout/item_saved.xml b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/layout/item_saved.xml new file mode 100644 index 00000000..4b577f19 --- /dev/null +++ b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/layout/item_saved.xml @@ -0,0 +1,92 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/menu/bottom_nav_menu.xml b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/menu/bottom_nav_menu.xml new file mode 100644 index 00000000..9a55b1a3 --- /dev/null +++ b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/menu/bottom_nav_menu.xml @@ -0,0 +1,28 @@ + + + + + + + + \ No newline at end of file diff --git a/Paulo/UMC_Paulo_Mission1_Linear/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml similarity index 79% rename from Paulo/UMC_Paulo_Mission1_Linear/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml rename to Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml index 6f3b755b..eca70cfe 100644 --- a/Paulo/UMC_Paulo_Mission1_Linear/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml +++ b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml @@ -2,5 +2,4 @@ - \ No newline at end of file diff --git a/Paulo/UMC_Paulo_Mission1_Linear/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml similarity index 79% rename from Paulo/UMC_Paulo_Mission1_Linear/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml rename to Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml index 6f3b755b..eca70cfe 100644 --- a/Paulo/UMC_Paulo_Mission1_Linear/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml +++ b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml @@ -2,5 +2,4 @@ - \ No newline at end of file diff --git a/Paulo/UMC_Paulo_Mission1_Linear/app/src/main/res/mipmap-hdpi/ic_launcher.webp b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/mipmap-hdpi/ic_launcher.webp similarity index 100% rename from Paulo/UMC_Paulo_Mission1_Linear/app/src/main/res/mipmap-hdpi/ic_launcher.webp rename to Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/mipmap-hdpi/ic_launcher.webp diff --git a/Paulo/UMC_Paulo_Mission1_Linear/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp similarity index 100% rename from Paulo/UMC_Paulo_Mission1_Linear/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp rename to Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp diff --git a/Paulo/UMC_Paulo_Mission1_Linear/app/src/main/res/mipmap-mdpi/ic_launcher.webp b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/mipmap-mdpi/ic_launcher.webp similarity index 100% rename from Paulo/UMC_Paulo_Mission1_Linear/app/src/main/res/mipmap-mdpi/ic_launcher.webp rename to Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/mipmap-mdpi/ic_launcher.webp diff --git a/Paulo/UMC_Paulo_Mission1_Linear/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp similarity index 100% rename from Paulo/UMC_Paulo_Mission1_Linear/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp rename to Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp diff --git a/Paulo/UMC_Paulo_Mission1_Linear/app/src/main/res/mipmap-xhdpi/ic_launcher.webp b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/mipmap-xhdpi/ic_launcher.webp similarity index 100% rename from Paulo/UMC_Paulo_Mission1_Linear/app/src/main/res/mipmap-xhdpi/ic_launcher.webp rename to Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/mipmap-xhdpi/ic_launcher.webp diff --git a/Paulo/UMC_Paulo_Mission1_Linear/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp similarity index 100% rename from Paulo/UMC_Paulo_Mission1_Linear/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp rename to Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp diff --git a/Paulo/UMC_Paulo_Mission1_Linear/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp similarity index 100% rename from Paulo/UMC_Paulo_Mission1_Linear/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp rename to Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp diff --git a/Paulo/UMC_Paulo_Mission1_Linear/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp similarity index 100% rename from Paulo/UMC_Paulo_Mission1_Linear/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp rename to Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp diff --git a/Paulo/UMC_Paulo_Mission1_Linear/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp similarity index 100% rename from Paulo/UMC_Paulo_Mission1_Linear/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp rename to Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp diff --git a/Paulo/UMC_Paulo_Mission1_Linear/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp similarity index 100% rename from Paulo/UMC_Paulo_Mission1_Linear/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp rename to Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/raw/music_bboom.mp3 b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/raw/music_bboom.mp3 new file mode 100644 index 00000000..b5555914 Binary files /dev/null and b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/raw/music_bboom.mp3 differ diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/raw/music_boy.mp3 b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/raw/music_boy.mp3 new file mode 100644 index 00000000..c19f2391 Binary files /dev/null and b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/raw/music_boy.mp3 differ diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/raw/music_butter.mp3 b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/raw/music_butter.mp3 new file mode 100644 index 00000000..a6b952fc Binary files /dev/null and b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/raw/music_butter.mp3 differ diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/raw/music_flu.mp3 b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/raw/music_flu.mp3 new file mode 100644 index 00000000..e6a0d7e4 Binary files /dev/null and b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/raw/music_flu.mp3 differ diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/raw/music_lilac.mp3 b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/raw/music_lilac.mp3 new file mode 100644 index 00000000..2e3c0d98 Binary files /dev/null and b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/raw/music_lilac.mp3 differ diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/raw/music_next.mp3 b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/raw/music_next.mp3 new file mode 100644 index 00000000..6261b050 Binary files /dev/null and b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/raw/music_next.mp3 differ diff --git a/Paulo/UMC_Paulo_Mission1_Linear/app/src/main/res/values-night/themes.xml b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/values-night/themes.xml similarity index 81% rename from Paulo/UMC_Paulo_Mission1_Linear/app/src/main/res/values-night/themes.xml rename to Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/values-night/themes.xml index 7f85b593..2e9a4b2d 100644 --- a/Paulo/UMC_Paulo_Mission1_Linear/app/src/main/res/values-night/themes.xml +++ b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/values-night/themes.xml @@ -1,6 +1,6 @@ - diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/values/colors.xml b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/values/colors.xml new file mode 100644 index 00000000..e9c100db --- /dev/null +++ b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/values/colors.xml @@ -0,0 +1,25 @@ + + + #3f3fff + + #FFBB86FC + #FF6200EE + #FF3700B3 + #FF03DAC5 + #FF018786 + #FF000000 + #FFFFFFFF + + #9cbee2 + #062342 + #424242 + #6bb2ff + + #00ff0000 + #3f3fff + #a8a8a8 + #3f3fff + #a8a8a8 + + #F11818 + \ No newline at end of file diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/values/strings.xml b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/values/strings.xml new file mode 100644 index 00000000..98ccc78f --- /dev/null +++ b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/values/strings.xml @@ -0,0 +1,3 @@ + + Flo_Clone_UMC_Bottom + \ No newline at end of file diff --git a/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/values/themes.xml b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/values/themes.xml new file mode 100644 index 00000000..5e34fd71 --- /dev/null +++ b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/values/themes.xml @@ -0,0 +1,26 @@ + + + + + + \ No newline at end of file diff --git a/Paulo/UMC_Paulo_Mission1_Linear/app/src/main/res/xml/backup_rules.xml b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/xml/backup_rules.xml similarity index 100% rename from Paulo/UMC_Paulo_Mission1_Linear/app/src/main/res/xml/backup_rules.xml rename to Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/xml/backup_rules.xml diff --git a/Paulo/UMC_Paulo_Mission1_Linear/app/src/main/res/xml/data_extraction_rules.xml b/Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/xml/data_extraction_rules.xml similarity index 100% rename from Paulo/UMC_Paulo_Mission1_Linear/app/src/main/res/xml/data_extraction_rules.xml rename to Paulo/Flo_Clone_UMC_Bottom/app/src/main/res/xml/data_extraction_rules.xml diff --git a/Paulo/UMC_Paulo_Mission1_Linear/app/src/test/java/com/example/umc_paulo_mission1_2/ExampleUnitTest.kt b/Paulo/Flo_Clone_UMC_Bottom/app/src/test/java/com/example/flo_clone_umc_bottom/ExampleUnitTest.kt similarity index 88% rename from Paulo/UMC_Paulo_Mission1_Linear/app/src/test/java/com/example/umc_paulo_mission1_2/ExampleUnitTest.kt rename to Paulo/Flo_Clone_UMC_Bottom/app/src/test/java/com/example/flo_clone_umc_bottom/ExampleUnitTest.kt index 9d4716b6..afdf7f14 100644 --- a/Paulo/UMC_Paulo_Mission1_Linear/app/src/test/java/com/example/umc_paulo_mission1_2/ExampleUnitTest.kt +++ b/Paulo/Flo_Clone_UMC_Bottom/app/src/test/java/com/example/flo_clone_umc_bottom/ExampleUnitTest.kt @@ -1,4 +1,4 @@ -package com.example.umc_paulo_mission1_2 +package com.example.flo_clone_umc_bottom import org.junit.Test diff --git a/Paulo/UMC_Paulo_Mission1_Linear/build.gradle.kts b/Paulo/Flo_Clone_UMC_Bottom/build.gradle.kts similarity index 100% rename from Paulo/UMC_Paulo_Mission1_Linear/build.gradle.kts rename to Paulo/Flo_Clone_UMC_Bottom/build.gradle.kts diff --git a/Paulo/UMC_Paulo_Mission1_Linear/gradle.properties b/Paulo/Flo_Clone_UMC_Bottom/gradle.properties similarity index 100% rename from Paulo/UMC_Paulo_Mission1_Linear/gradle.properties rename to Paulo/Flo_Clone_UMC_Bottom/gradle.properties diff --git a/Paulo/UMC_Paulo_Mission1_Linear/gradle/libs.versions.toml b/Paulo/Flo_Clone_UMC_Bottom/gradle/libs.versions.toml similarity index 91% rename from Paulo/UMC_Paulo_Mission1_Linear/gradle/libs.versions.toml rename to Paulo/Flo_Clone_UMC_Bottom/gradle/libs.versions.toml index faf6ca23..f74e5fbe 100644 --- a/Paulo/UMC_Paulo_Mission1_Linear/gradle/libs.versions.toml +++ b/Paulo/Flo_Clone_UMC_Bottom/gradle/libs.versions.toml @@ -9,6 +9,7 @@ appcompat = "1.7.0" material = "1.12.0" activity = "1.9.2" constraintlayout = "2.1.4" +carUiLib = "2.6.0" [libraries] androidx-core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "coreKtx" } @@ -19,6 +20,7 @@ androidx-appcompat = { group = "androidx.appcompat", name = "appcompat", version material = { group = "com.google.android.material", name = "material", version.ref = "material" } androidx-activity = { group = "androidx.activity", name = "activity", version.ref = "activity" } androidx-constraintlayout = { group = "androidx.constraintlayout", name = "constraintlayout", version.ref = "constraintlayout" } +car-ui-lib = { group = "com.android.car.ui", name = "car-ui-lib", version.ref = "carUiLib" } [plugins] android-application = { id = "com.android.application", version.ref = "agp" } diff --git a/Paulo/UMC_Paulo_Mission1_Linear/gradle/wrapper/gradle-wrapper.jar b/Paulo/Flo_Clone_UMC_Bottom/gradle/wrapper/gradle-wrapper.jar similarity index 100% rename from Paulo/UMC_Paulo_Mission1_Linear/gradle/wrapper/gradle-wrapper.jar rename to Paulo/Flo_Clone_UMC_Bottom/gradle/wrapper/gradle-wrapper.jar diff --git a/Paulo/UMC_Paulo_Mission1_Linear/gradle/wrapper/gradle-wrapper.properties b/Paulo/Flo_Clone_UMC_Bottom/gradle/wrapper/gradle-wrapper.properties similarity index 86% rename from Paulo/UMC_Paulo_Mission1_Linear/gradle/wrapper/gradle-wrapper.properties rename to Paulo/Flo_Clone_UMC_Bottom/gradle/wrapper/gradle-wrapper.properties index 04b8b66d..9beefb8a 100644 --- a/Paulo/UMC_Paulo_Mission1_Linear/gradle/wrapper/gradle-wrapper.properties +++ b/Paulo/Flo_Clone_UMC_Bottom/gradle/wrapper/gradle-wrapper.properties @@ -1,4 +1,4 @@ -#Sat Sep 28 01:10:49 KST 2024 +#Sun Oct 13 02:38:40 KST 2024 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip diff --git a/Paulo/UMC_Paulo_Mission1_Linear/gradlew b/Paulo/Flo_Clone_UMC_Bottom/gradlew similarity index 100% rename from Paulo/UMC_Paulo_Mission1_Linear/gradlew rename to Paulo/Flo_Clone_UMC_Bottom/gradlew diff --git a/Paulo/UMC_Paulo_Mission1_Linear/gradlew.bat b/Paulo/Flo_Clone_UMC_Bottom/gradlew.bat similarity index 100% rename from Paulo/UMC_Paulo_Mission1_Linear/gradlew.bat rename to Paulo/Flo_Clone_UMC_Bottom/gradlew.bat diff --git a/Paulo/UMC_Paulo_Mission1_Linear/settings.gradle.kts b/Paulo/Flo_Clone_UMC_Bottom/settings.gradle.kts similarity index 92% rename from Paulo/UMC_Paulo_Mission1_Linear/settings.gradle.kts rename to Paulo/Flo_Clone_UMC_Bottom/settings.gradle.kts index 944b1978..69243641 100644 --- a/Paulo/UMC_Paulo_Mission1_Linear/settings.gradle.kts +++ b/Paulo/Flo_Clone_UMC_Bottom/settings.gradle.kts @@ -19,6 +19,6 @@ dependencyResolutionManagement { } } -rootProject.name = "UMC_Paulo_Mission1_2" +rootProject.name = "Flo_Clone_UMC_Bottom" include(":app") \ No newline at end of file diff --git a/Paulo/UMC_Paulo_Mission1_Constraint/.idea/vcs.xml b/Paulo/UMC_Paulo_Mission1_Constraint/.idea/vcs.xml new file mode 100644 index 00000000..b2bdec2d --- /dev/null +++ b/Paulo/UMC_Paulo_Mission1_Constraint/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/Paulo/UMC_Paulo_Mission1_Constraint/app/build.gradle.kts b/Paulo/UMC_Paulo_Mission1_Constraint/app/build.gradle.kts index 21eb35a7..cb92b979 100644 --- a/Paulo/UMC_Paulo_Mission1_Constraint/app/build.gradle.kts +++ b/Paulo/UMC_Paulo_Mission1_Constraint/app/build.gradle.kts @@ -42,7 +42,9 @@ android { } dependencies { - + implementation ("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.0") + implementation("androidx.navigation:navigation-fragment-ktx:2.7.0") + implementation("androidx.navigation:navigation-ui-ktx:2.7.0") implementation(libs.androidx.core.ktx) implementation(libs.androidx.appcompat) implementation(libs.material) @@ -51,4 +53,5 @@ dependencies { testImplementation(libs.junit) androidTestImplementation(libs.androidx.junit) androidTestImplementation(libs.androidx.espresso.core) -} \ No newline at end of file + implementation("androidx.core:core-splashscreen:1.0.1") +} diff --git a/Paulo/UMC_Paulo_Mission1_Constraint/app/src/main/AndroidManifest.xml b/Paulo/UMC_Paulo_Mission1_Constraint/app/src/main/AndroidManifest.xml index 1996c3cb..1b5f7b87 100644 --- a/Paulo/UMC_Paulo_Mission1_Constraint/app/src/main/AndroidManifest.xml +++ b/Paulo/UMC_Paulo_Mission1_Constraint/app/src/main/AndroidManifest.xml @@ -12,12 +12,19 @@ android:supportsRtl="true" android:theme="@style/Theme.MyApplication" tools:targetApi="31"> + + + android:exported="false"/> + diff --git a/Paulo/UMC_Paulo_Mission1_Constraint/app/src/main/java/com/example/myapplication/CheckActivity.kt b/Paulo/UMC_Paulo_Mission1_Constraint/app/src/main/java/com/example/myapplication/CheckActivity.kt new file mode 100644 index 00000000..412db1c2 --- /dev/null +++ b/Paulo/UMC_Paulo_Mission1_Constraint/app/src/main/java/com/example/myapplication/CheckActivity.kt @@ -0,0 +1,21 @@ +package com.example.myapplication + +import android.os.Bundle +import androidx.appcompat.app.AppCompatActivity +import com.example.myapplication.databinding.ActivityCheckBinding + +class CheckActivity: AppCompatActivity() { + lateinit var binding: ActivityCheckBinding + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + binding = ActivityCheckBinding.inflate(layoutInflater) + setContentView(binding.root) + val gettext = intent.getStringExtra("textkey") + + binding.emptyCheckActivityTv.text = gettext; + binding.backCheckActivityBt.setOnClickListener { + setResult(RESULT_OK, intent) + finish() + } + } +} \ No newline at end of file diff --git a/Paulo/UMC_Paulo_Mission1_Constraint/app/src/main/java/com/example/myapplication/HomeFragment.kt b/Paulo/UMC_Paulo_Mission1_Constraint/app/src/main/java/com/example/myapplication/HomeFragment.kt new file mode 100644 index 00000000..48a81c18 --- /dev/null +++ b/Paulo/UMC_Paulo_Mission1_Constraint/app/src/main/java/com/example/myapplication/HomeFragment.kt @@ -0,0 +1,52 @@ +package com.example.myapplication + +import android.content.Intent +import android.os.Bundle +import androidx.fragment.app.Fragment +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import com.example.myapplication.databinding.FragmentHomeBinding + +class HomeFragment : Fragment() { + private var _binding: FragmentHomeBinding? = null + private val binding get() = _binding!! + + override fun onCreateView( + inflater: LayoutInflater, container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + // View Binding 설정 + _binding = FragmentHomeBinding.inflate(inflater, container, false) + + // 각 ImageView에 대한 클릭 리스너 설정 + binding.imageViewR.setOnClickListener { + val intent = Intent(requireActivity(), MemoActivity::class.java) + startActivity(intent) + } + binding.imageViewB.setOnClickListener { + openActivity2() + } + binding.imageViewG.setOnClickListener { + openActivity2() + } + binding.imageViewP.setOnClickListener { + openActivity2() + } + binding.imageViewY.setOnClickListener { + openActivity2() + } + + return binding.root // Inflate된 뷰 반환 + } + + private fun openActivity2() { + val intent = Intent(requireActivity(), MainActivity2::class.java) + startActivity(intent) + } + + override fun onDestroyView() { + super.onDestroyView() + _binding = null + } +} diff --git a/Paulo/UMC_Paulo_Mission1_Constraint/app/src/main/java/com/example/myapplication/MainActivity.kt b/Paulo/UMC_Paulo_Mission1_Constraint/app/src/main/java/com/example/myapplication/MainActivity.kt index 46c6dd16..44ba2875 100644 --- a/Paulo/UMC_Paulo_Mission1_Constraint/app/src/main/java/com/example/myapplication/MainActivity.kt +++ b/Paulo/UMC_Paulo_Mission1_Constraint/app/src/main/java/com/example/myapplication/MainActivity.kt @@ -1,17 +1,24 @@ package com.example.myapplication import android.app.Activity +import android.app.FragmentContainer import android.content.Intent import android.os.Bundle +import android.view.View import android.widget.ImageView import androidx.activity.enableEdgeToEdge import androidx.appcompat.app.AppCompatActivity import androidx.core.view.ViewCompat import androidx.core.view.WindowInsetsCompat +import androidx.fragment.app.FragmentContainerView +import androidx.navigation.NavOptions +import androidx.navigation.fragment.NavHostFragment +import androidx.navigation.ui.setupWithNavController import com.example.myapplication.databinding.ActivityMainBinding class MainActivity : AppCompatActivity() { + var position = 2 private lateinit var binding: ActivityMainBinding override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -20,31 +27,85 @@ class MainActivity : AppCompatActivity() { binding = ActivityMainBinding.inflate(layoutInflater) setContentView(binding.root) + val navHostFragment = supportFragmentManager.findFragmentById(R.id.fragmentcon) as NavHostFragment + val navController = navHostFragment.navController + binding.bottomnav.setupWithNavController(navController) + + + + binding.bottomnav.setOnItemSelectedListener { item -> + val navOptionsLeftToRight = NavOptions.Builder() + .setEnterAnim(R.anim.to_right) + .setExitAnim(R.anim.from_right) + .setPopEnterAnim(R.anim.to_left) + .setPopExitAnim(R.anim.from_left) + .build() + + val navOptionsRightToLeft = NavOptions.Builder() + .setEnterAnim(R.anim.to_left) + .setExitAnim(R.anim.from_left) + .setPopEnterAnim(R.anim.to_right) + .setPopExitAnim(R.anim.from_right) + .build() + + + + when (item.itemId) { + R.id.item_timer_img -> { + if(position < 4) { + navController.navigate(R.id.item_timer_img, null,navOptionsLeftToRight) + } + else if(position > 4){ + + } + position = 4 + true + } + + R.id.item_search_img -> { + if(position < 1) { + + } + else if(position > 1) { + navController.navigate(R.id.item_search_img, null, navOptionsRightToLeft) + } + position = 1 + true + } + + R.id.item_home_img -> { + if(position > 2) { + navController.navigate(R.id.item_home_img, null, navOptionsRightToLeft) + } + else if(position < 2) { + navController.navigate(R.id.item_home_img, null, navOptionsLeftToRight) + } + position = 2 + true + } + + R.id.item_setting_img -> { + if(position > 3) { + navController.navigate(R.id.item_setting_img, null, navOptionsRightToLeft) + } + else if(position < 3) { + navController.navigate(R.id.item_setting_img, null, navOptionsLeftToRight) + } + position = 3 + true + } + else -> false + } + } + + ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main)) { v, insets -> val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars()) v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom) insets } - binding.imageViewG.setOnClickListener { - val intent = Intent(this, MainActivity2::class.java) - startActivity(intent) - } - - binding.imageViewP.setOnClickListener { - val intent = Intent(this, MainActivity2::class.java) - startActivity(intent) - } - binding.imageViewR.setOnClickListener { - val intent = Intent(this, MainActivity2::class.java) - startActivity(intent) - } - - binding.imageViewY.setOnClickListener { - val intent = Intent(this, MainActivity2::class.java) - startActivity(intent) - } /* val imageB: ImageView = findViewById(R.id.imageViewB) imageB.setOnClickListener { @@ -76,4 +137,7 @@ class MainActivity : AppCompatActivity() { } */ } + fun hideBottomNavigation(state:Boolean){ + if(state) binding.bottomnav.visibility = View.GONE else binding.bottomnav.visibility=View.VISIBLE + } } \ No newline at end of file diff --git a/Paulo/UMC_Paulo_Mission1_Constraint/app/src/main/java/com/example/myapplication/MemoActivity.kt b/Paulo/UMC_Paulo_Mission1_Constraint/app/src/main/java/com/example/myapplication/MemoActivity.kt new file mode 100644 index 00000000..825a374f --- /dev/null +++ b/Paulo/UMC_Paulo_Mission1_Constraint/app/src/main/java/com/example/myapplication/MemoActivity.kt @@ -0,0 +1,48 @@ +package com.example.myapplication + +import android.content.Intent +import android.os.Bundle +import androidx.appcompat.app.AlertDialog +import androidx.appcompat.app.AppCompatActivity +import com.example.myapplication.databinding.ActivityMemoBinding + +class MemoActivity: AppCompatActivity() { + lateinit var binding: ActivityMemoBinding + var text = "" + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + binding = ActivityMemoBinding.inflate(layoutInflater) + setContentView(binding.root) + binding.checkMemoActivityBt.setOnClickListener { + val gettext = binding.textfieldMemoActivityEt.text.toString() + val intent = Intent(this, CheckActivity::class.java) + intent.putExtra("textkey",gettext) + startActivity(intent) + + } + } + + override fun onPause() { + super.onPause() + text = binding.textfieldMemoActivityEt.text.toString() + } + + override fun onResume() { + super.onResume() + binding.textfieldMemoActivityEt.setText(text) + } + + override fun onRestart() { + super.onRestart() + val builder = AlertDialog.Builder(this) + builder.setTitle("다시 작성하시겠습니까?") + builder.setPositiveButton("다시 작성"){ dialog, which -> + text = "" + binding.textfieldMemoActivityEt.setText("") + } + builder.setNegativeButton("그대로 작성"){ dialog, which -> + + } + builder.show() + } +} \ No newline at end of file diff --git a/Paulo/UMC_Paulo_Mission1_Constraint/app/src/main/java/com/example/myapplication/SearchFragment.kt b/Paulo/UMC_Paulo_Mission1_Constraint/app/src/main/java/com/example/myapplication/SearchFragment.kt new file mode 100644 index 00000000..275e36bb --- /dev/null +++ b/Paulo/UMC_Paulo_Mission1_Constraint/app/src/main/java/com/example/myapplication/SearchFragment.kt @@ -0,0 +1,18 @@ +package com.example.myapplication + +import android.os.Bundle +import androidx.fragment.app.Fragment +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup + +class SearchFragment : Fragment(R.layout.fragment_search) { + + override fun onCreateView( + inflater: LayoutInflater, container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + // Inflate the layout for this fragment + return inflater.inflate(R.layout.fragment_search, container, false) + } +} \ No newline at end of file diff --git a/Paulo/UMC_Paulo_Mission1_Constraint/app/src/main/java/com/example/myapplication/SettingFragment.kt b/Paulo/UMC_Paulo_Mission1_Constraint/app/src/main/java/com/example/myapplication/SettingFragment.kt new file mode 100644 index 00000000..e0099a23 --- /dev/null +++ b/Paulo/UMC_Paulo_Mission1_Constraint/app/src/main/java/com/example/myapplication/SettingFragment.kt @@ -0,0 +1,18 @@ +package com.example.myapplication + +import android.os.Bundle +import androidx.fragment.app.Fragment +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup + +class SettingFragment : Fragment(R.layout.fragment_setting) { + + override fun onCreateView( + inflater: LayoutInflater, container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + // Inflate the layout for this fragment + return inflater.inflate(R.layout.fragment_setting, container, false) + } +} \ No newline at end of file diff --git a/Paulo/UMC_Paulo_Mission1_Linear/app/src/main/java/com/example/umc_paulo_mission1_2/MainActivity.kt b/Paulo/UMC_Paulo_Mission1_Constraint/app/src/main/java/com/example/myapplication/SplashFragment.kt similarity index 50% rename from Paulo/UMC_Paulo_Mission1_Linear/app/src/main/java/com/example/umc_paulo_mission1_2/MainActivity.kt rename to Paulo/UMC_Paulo_Mission1_Constraint/app/src/main/java/com/example/myapplication/SplashFragment.kt index 1b79c295..fd53e5b2 100644 --- a/Paulo/UMC_Paulo_Mission1_Linear/app/src/main/java/com/example/umc_paulo_mission1_2/MainActivity.kt +++ b/Paulo/UMC_Paulo_Mission1_Constraint/app/src/main/java/com/example/myapplication/SplashFragment.kt @@ -1,16 +1,32 @@ -package com.example.umc_paulo_mission1_2 +package com.example.myapplication +import android.content.Intent import android.os.Bundle +import android.os.Handler +import android.os.Looper import androidx.activity.enableEdgeToEdge import androidx.appcompat.app.AppCompatActivity import androidx.core.view.ViewCompat import androidx.core.view.WindowInsetsCompat -class MainActivity : AppCompatActivity() { +class SplashFragment : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) + + setContentView(R.layout.activity_splash) + + // 일정 시간 지연 이후 실행하기 위한 코드 + Handler(Looper.getMainLooper()).postDelayed({ + + // 일정 시간이 지나면 MainActivity로 이동 + val intent = Intent(this, MainActivity::class.java) + startActivity(intent) + + finish() + + }, 2000) // 시간 2초 이후 실행 enableEdgeToEdge() - setContentView(R.layout.activity_main) + setContentView(R.layout.activity_splash) ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main)) { v, insets -> val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars()) v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom) diff --git a/Paulo/UMC_Paulo_Mission1_Constraint/app/src/main/java/com/example/myapplication/TimerFragment.kt b/Paulo/UMC_Paulo_Mission1_Constraint/app/src/main/java/com/example/myapplication/TimerFragment.kt new file mode 100644 index 00000000..0b337501 --- /dev/null +++ b/Paulo/UMC_Paulo_Mission1_Constraint/app/src/main/java/com/example/myapplication/TimerFragment.kt @@ -0,0 +1,74 @@ +package com.example.myapplication + +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.fragment.app.Fragment +import com.example.myapplication.databinding.FragmentTimerBinding +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.Job +import kotlinx.coroutines.delay +import kotlinx.coroutines.launch + +class TimerFragment:Fragment(R.layout.fragment_timer) { + private var _binding: FragmentTimerBinding? = null + private val binding get() = _binding!! + + private var job: Job? = null + private var timeInSeconds = 0 + private var isRunning = false + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + _binding = FragmentTimerBinding.bind(view) + binding.timerStartBu.setOnClickListener { + if(!isRunning){ + startStopwatch() + } + } + + binding.timerPauseBu.setOnClickListener { + pauseStopwatch() + } + + binding.timerResetBu.setOnClickListener { + resetStopwatch() + } + } + + override fun onDestroyView() { + super.onDestroyView() + _binding = null + } + + private fun startStopwatch() { + isRunning = true + job = CoroutineScope(Dispatchers.Main).launch { + while (isRunning) { + delay(1000L) + timeInSeconds++ + updateTimerText() + } + } + } + + private fun pauseStopwatch() { + isRunning = false + job?.cancel() + } + + private fun resetStopwatch() { + pauseStopwatch() + timeInSeconds = 0 + updateTimerText() + } + + private fun updateTimerText() { + val hours = timeInSeconds / 3600 + val minutes = (timeInSeconds % 3600) / 60 + val seconds = timeInSeconds % 60 + binding.timerTimerTv.text = String.format("%02d:%02d:%02d",hours , minutes, seconds) // "MM:SS" 형식으로 표시 + } +} \ No newline at end of file diff --git a/Paulo/UMC_Paulo_Mission1_Constraint/app/src/main/res/anim/from_left.xml b/Paulo/UMC_Paulo_Mission1_Constraint/app/src/main/res/anim/from_left.xml new file mode 100644 index 00000000..9cbfde5f --- /dev/null +++ b/Paulo/UMC_Paulo_Mission1_Constraint/app/src/main/res/anim/from_left.xml @@ -0,0 +1,9 @@ + + + + \ No newline at end of file diff --git a/Paulo/UMC_Paulo_Mission1_Constraint/app/src/main/res/anim/from_right.xml b/Paulo/UMC_Paulo_Mission1_Constraint/app/src/main/res/anim/from_right.xml new file mode 100644 index 00000000..e7464b77 --- /dev/null +++ b/Paulo/UMC_Paulo_Mission1_Constraint/app/src/main/res/anim/from_right.xml @@ -0,0 +1,9 @@ + + + + \ No newline at end of file diff --git a/Paulo/UMC_Paulo_Mission1_Constraint/app/src/main/res/anim/to_left.xml b/Paulo/UMC_Paulo_Mission1_Constraint/app/src/main/res/anim/to_left.xml new file mode 100644 index 00000000..acee93db --- /dev/null +++ b/Paulo/UMC_Paulo_Mission1_Constraint/app/src/main/res/anim/to_left.xml @@ -0,0 +1,9 @@ + + + + \ No newline at end of file diff --git a/Paulo/UMC_Paulo_Mission1_Constraint/app/src/main/res/anim/to_right.xml b/Paulo/UMC_Paulo_Mission1_Constraint/app/src/main/res/anim/to_right.xml new file mode 100644 index 00000000..1d3b4aa9 --- /dev/null +++ b/Paulo/UMC_Paulo_Mission1_Constraint/app/src/main/res/anim/to_right.xml @@ -0,0 +1,9 @@ + + + + \ No newline at end of file diff --git a/Paulo/UMC_Paulo_Mission1_Constraint/app/src/main/res/color/icon_color.xml b/Paulo/UMC_Paulo_Mission1_Constraint/app/src/main/res/color/icon_color.xml new file mode 100644 index 00000000..e4d092bd --- /dev/null +++ b/Paulo/UMC_Paulo_Mission1_Constraint/app/src/main/res/color/icon_color.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/Paulo/UMC_Paulo_Mission1_Constraint/app/src/main/res/drawable/bottomnavbackground.jpeg b/Paulo/UMC_Paulo_Mission1_Constraint/app/src/main/res/drawable/bottomnavbackground.jpeg new file mode 100644 index 00000000..ce5541ec Binary files /dev/null and b/Paulo/UMC_Paulo_Mission1_Constraint/app/src/main/res/drawable/bottomnavbackground.jpeg differ diff --git a/Paulo/UMC_Paulo_Mission1_Constraint/app/src/main/res/drawable/home_icon.xml b/Paulo/UMC_Paulo_Mission1_Constraint/app/src/main/res/drawable/home_icon.xml new file mode 100644 index 00000000..63490446 --- /dev/null +++ b/Paulo/UMC_Paulo_Mission1_Constraint/app/src/main/res/drawable/home_icon.xml @@ -0,0 +1,18 @@ + + + + + diff --git a/Paulo/UMC_Paulo_Mission1_Constraint/app/src/main/res/drawable/jjanggobackground1.jpeg b/Paulo/UMC_Paulo_Mission1_Constraint/app/src/main/res/drawable/jjanggobackground1.jpeg new file mode 100644 index 00000000..db00162e Binary files /dev/null and b/Paulo/UMC_Paulo_Mission1_Constraint/app/src/main/res/drawable/jjanggobackground1.jpeg differ diff --git a/Paulo/UMC_Paulo_Mission1_Constraint/app/src/main/res/drawable/pochacco.png b/Paulo/UMC_Paulo_Mission1_Constraint/app/src/main/res/drawable/pochacco.png new file mode 100644 index 00000000..8e260c4e Binary files /dev/null and b/Paulo/UMC_Paulo_Mission1_Constraint/app/src/main/res/drawable/pochacco.png differ diff --git a/Paulo/UMC_Paulo_Mission1_Constraint/app/src/main/res/drawable/search_icon.xml b/Paulo/UMC_Paulo_Mission1_Constraint/app/src/main/res/drawable/search_icon.xml new file mode 100644 index 00000000..09f9e99f --- /dev/null +++ b/Paulo/UMC_Paulo_Mission1_Constraint/app/src/main/res/drawable/search_icon.xml @@ -0,0 +1,14 @@ + + + + diff --git a/Paulo/UMC_Paulo_Mission1_Constraint/app/src/main/res/drawable/setting_icon.xml b/Paulo/UMC_Paulo_Mission1_Constraint/app/src/main/res/drawable/setting_icon.xml new file mode 100644 index 00000000..128ddbc2 --- /dev/null +++ b/Paulo/UMC_Paulo_Mission1_Constraint/app/src/main/res/drawable/setting_icon.xml @@ -0,0 +1,14 @@ + + + + diff --git a/Paulo/UMC_Paulo_Mission1_Constraint/app/src/main/res/drawable/splash.jpeg b/Paulo/UMC_Paulo_Mission1_Constraint/app/src/main/res/drawable/splash.jpeg new file mode 100644 index 00000000..25cea37f Binary files /dev/null and b/Paulo/UMC_Paulo_Mission1_Constraint/app/src/main/res/drawable/splash.jpeg differ diff --git a/Paulo/UMC_Paulo_Mission1_Constraint/app/src/main/res/layout/activity_check.xml b/Paulo/UMC_Paulo_Mission1_Constraint/app/src/main/res/layout/activity_check.xml new file mode 100644 index 00000000..e9f64b8b --- /dev/null +++ b/Paulo/UMC_Paulo_Mission1_Constraint/app/src/main/res/layout/activity_check.xml @@ -0,0 +1,27 @@ + + + + + +