diff --git a/Eden/.gitignore b/Eden/.gitignore new file mode 100644 index 00000000..aa724b77 --- /dev/null +++ b/Eden/.gitignore @@ -0,0 +1,15 @@ +*.iml +.gradle +/local.properties +/.idea/caches +/.idea/libraries +/.idea/modules.xml +/.idea/workspace.xml +/.idea/navEditor.xml +/.idea/assetWizardSettings.xml +.DS_Store +/build +/captures +.externalNativeBuild +.cxx +local.properties diff --git a/Eden/.idea/.gitignore b/Eden/.idea/.gitignore new file mode 100644 index 00000000..26d33521 --- /dev/null +++ b/Eden/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/Eden/.idea/.name b/Eden/.idea/.name new file mode 100644 index 00000000..a5b75c1e --- /dev/null +++ b/Eden/.idea/.name @@ -0,0 +1 @@ +week5 \ No newline at end of file diff --git a/Eden/.idea/compiler.xml b/Eden/.idea/compiler.xml new file mode 100644 index 00000000..b589d56e --- /dev/null +++ b/Eden/.idea/compiler.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/Eden/.idea/deploymentTargetSelector.xml b/Eden/.idea/deploymentTargetSelector.xml new file mode 100644 index 00000000..b268ef36 --- /dev/null +++ b/Eden/.idea/deploymentTargetSelector.xml @@ -0,0 +1,10 @@ + + + + + + + + + \ No newline at end of file diff --git a/Eden/.idea/gradle.xml b/Eden/.idea/gradle.xml new file mode 100644 index 00000000..32522c1e --- /dev/null +++ b/Eden/.idea/gradle.xml @@ -0,0 +1,18 @@ + + + + + + \ No newline at end of file diff --git a/Eden/.idea/kotlinc.xml b/Eden/.idea/kotlinc.xml new file mode 100644 index 00000000..fdf8d994 --- /dev/null +++ b/Eden/.idea/kotlinc.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/Eden/.idea/migrations.xml b/Eden/.idea/migrations.xml new file mode 100644 index 00000000..f8051a6f --- /dev/null +++ b/Eden/.idea/migrations.xml @@ -0,0 +1,10 @@ + + + + + + \ No newline at end of file diff --git a/Eden/.idea/misc.xml b/Eden/.idea/misc.xml new file mode 100644 index 00000000..0ad17cbd --- /dev/null +++ b/Eden/.idea/misc.xml @@ -0,0 +1,10 @@ + + + + + + + + + \ No newline at end of file diff --git a/Eden/.idea/vcs.xml b/Eden/.idea/vcs.xml new file mode 100644 index 00000000..6c0b8635 --- /dev/null +++ b/Eden/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/Eden/Clone_Coding/.gitignore b/Eden/Clone_Coding/.gitignore new file mode 100644 index 00000000..aa724b77 --- /dev/null +++ b/Eden/Clone_Coding/.gitignore @@ -0,0 +1,15 @@ +*.iml +.gradle +/local.properties +/.idea/caches +/.idea/libraries +/.idea/modules.xml +/.idea/workspace.xml +/.idea/navEditor.xml +/.idea/assetWizardSettings.xml +.DS_Store +/build +/captures +.externalNativeBuild +.cxx +local.properties diff --git a/Eden/Clone_Coding/.idea/.gitignore b/Eden/Clone_Coding/.idea/.gitignore new file mode 100644 index 00000000..26d33521 --- /dev/null +++ b/Eden/Clone_Coding/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/Eden/Clone_Coding/.idea/.name b/Eden/Clone_Coding/.idea/.name new file mode 100644 index 00000000..8a1ee29e --- /dev/null +++ b/Eden/Clone_Coding/.idea/.name @@ -0,0 +1 @@ +Clone_Coding \ No newline at end of file diff --git a/Eden/Clone_Coding/.idea/compiler.xml b/Eden/Clone_Coding/.idea/compiler.xml new file mode 100644 index 00000000..b589d56e --- /dev/null +++ b/Eden/Clone_Coding/.idea/compiler.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/Eden/Clone_Coding/.idea/deploymentTargetSelector.xml b/Eden/Clone_Coding/.idea/deploymentTargetSelector.xml new file mode 100644 index 00000000..c885bc97 --- /dev/null +++ b/Eden/Clone_Coding/.idea/deploymentTargetSelector.xml @@ -0,0 +1,18 @@ + + + + + + + + + \ No newline at end of file diff --git a/Eden/Clone_Coding/.idea/gradle.xml b/Eden/Clone_Coding/.idea/gradle.xml new file mode 100644 index 00000000..0897082f --- /dev/null +++ b/Eden/Clone_Coding/.idea/gradle.xml @@ -0,0 +1,19 @@ + + + + + + + \ No newline at end of file diff --git a/Eden/Clone_Coding/.idea/kotlinc.xml b/Eden/Clone_Coding/.idea/kotlinc.xml new file mode 100644 index 00000000..fdf8d994 --- /dev/null +++ b/Eden/Clone_Coding/.idea/kotlinc.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/Eden/Clone_Coding/.idea/migrations.xml b/Eden/Clone_Coding/.idea/migrations.xml new file mode 100644 index 00000000..f8051a6f --- /dev/null +++ b/Eden/Clone_Coding/.idea/migrations.xml @@ -0,0 +1,10 @@ + + + + + + \ No newline at end of file diff --git a/Eden/Clone_Coding/.idea/misc.xml b/Eden/Clone_Coding/.idea/misc.xml new file mode 100644 index 00000000..8978d23d --- /dev/null +++ b/Eden/Clone_Coding/.idea/misc.xml @@ -0,0 +1,9 @@ + + + + + + + + \ No newline at end of file diff --git a/Eden/Clone_Coding/.idea/vcs.xml b/Eden/Clone_Coding/.idea/vcs.xml new file mode 100644 index 00000000..b2bdec2d --- /dev/null +++ b/Eden/Clone_Coding/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/Eden/Clone_Coding/app/.gitignore b/Eden/Clone_Coding/app/.gitignore new file mode 100644 index 00000000..42afabfd --- /dev/null +++ b/Eden/Clone_Coding/app/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/Eden/Clone_Coding/app/build.gradle.kts b/Eden/Clone_Coding/app/build.gradle.kts new file mode 100644 index 00000000..03fa574c --- /dev/null +++ b/Eden/Clone_Coding/app/build.gradle.kts @@ -0,0 +1,58 @@ +plugins { + alias(libs.plugins.android.application) + alias(libs.plugins.kotlin.android) +} + +android { + namespace = "com.example.clone_coding" + compileSdk = 34 + + defaultConfig { + applicationId = "com.example.clone_coding" + minSdk = 24 + targetSdk = 34 + versionCode = 1 + versionName = "1.0" + + testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" + } + + buildTypes { + release { + isMinifyEnabled = false + proguardFiles( + getDefaultProguardFile("proguard-android-optimize.txt"), + "proguard-rules.pro" + ) + } + } + compileOptions { + sourceCompatibility = JavaVersion.VERSION_1_8 + targetCompatibility = JavaVersion.VERSION_1_8 + } + kotlinOptions { + jvmTarget = "1.8" + } + + buildFeatures { + viewBinding = true + } +} + +dependencies { + + implementation(libs.androidx.core.ktx) + implementation(libs.androidx.appcompat) + implementation(libs.material) + implementation(libs.androidx.activity) + implementation(libs.androidx.constraintlayout) + testImplementation(libs.junit) + androidTestImplementation(libs.androidx.junit) + androidTestImplementation(libs.androidx.espresso.core) + implementation(libs.androidx.viewpager2) + implementation(libs.circle.indicator) //circleindicator + implementation(libs.androidx.core.splashscreen) + implementation (libs.gson) + + +} \ No newline at end of file diff --git a/Eden/Clone_Coding/app/proguard-rules.pro b/Eden/Clone_Coding/app/proguard-rules.pro new file mode 100644 index 00000000..481bb434 --- /dev/null +++ b/Eden/Clone_Coding/app/proguard-rules.pro @@ -0,0 +1,21 @@ +# Add project specific ProGuard rules here. +# You can control the set of applied configuration files using the +# proguardFiles setting in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable + +# If you keep the line number information, uncomment this to +# hide the original source file name. +#-renamesourcefileattribute SourceFile \ No newline at end of file diff --git a/Eden/Clone_Coding/app/src/androidTest/java/com/example/clone_coding/ExampleInstrumentedTest.kt b/Eden/Clone_Coding/app/src/androidTest/java/com/example/clone_coding/ExampleInstrumentedTest.kt new file mode 100644 index 00000000..59b8bcc0 --- /dev/null +++ b/Eden/Clone_Coding/app/src/androidTest/java/com/example/clone_coding/ExampleInstrumentedTest.kt @@ -0,0 +1,24 @@ +package com.example.clone_coding + +import androidx.test.platform.app.InstrumentationRegistry +import androidx.test.ext.junit.runners.AndroidJUnit4 + +import org.junit.Test +import org.junit.runner.RunWith + +import org.junit.Assert.* + +/** + * Instrumented test, which will execute on an Android device. + * + * See [testing documentation](http://d.android.com/tools/testing). + */ +@RunWith(AndroidJUnit4::class) +class ExampleInstrumentedTest { + @Test + fun useAppContext() { + // Context of the app under test. + val appContext = InstrumentationRegistry.getInstrumentation().targetContext + assertEquals("com.example.clone_coding", appContext.packageName) + } +} \ No newline at end of file diff --git a/Eden/Clone_Coding/app/src/main/AndroidManifest.xml b/Eden/Clone_Coding/app/src/main/AndroidManifest.xml new file mode 100644 index 00000000..35ad8457 --- /dev/null +++ b/Eden/Clone_Coding/app/src/main/AndroidManifest.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Eden/Clone_Coding/app/src/main/ic_flo_logo_new-playstore.png b/Eden/Clone_Coding/app/src/main/ic_flo_logo_new-playstore.png new file mode 100644 index 00000000..9a2e6b66 Binary files /dev/null and b/Eden/Clone_Coding/app/src/main/ic_flo_logo_new-playstore.png differ diff --git a/Eden/Clone_Coding/app/src/main/java/com/example/clone_coding/Album.kt b/Eden/Clone_Coding/app/src/main/java/com/example/clone_coding/Album.kt new file mode 100644 index 00000000..db936f97 --- /dev/null +++ b/Eden/Clone_Coding/app/src/main/java/com/example/clone_coding/Album.kt @@ -0,0 +1,9 @@ +package com.example.clone_coding + +data class Album( + var title: String? = "", + var singer: String? = "", + var coverimg: Int? = null, + var songs: ArrayList? = null, + var isSwitchOn : Boolean = false +) diff --git a/Eden/Clone_Coding/app/src/main/java/com/example/clone_coding/AlbumFragment.kt b/Eden/Clone_Coding/app/src/main/java/com/example/clone_coding/AlbumFragment.kt new file mode 100644 index 00000000..fc8f6fe9 --- /dev/null +++ b/Eden/Clone_Coding/app/src/main/java/com/example/clone_coding/AlbumFragment.kt @@ -0,0 +1,75 @@ +package com.example.clone_coding + +import android.os.Bundle +import androidx.fragment.app.Fragment +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import com.example.clone_coding.databinding.FragmentAlbumBinding +import com.google.android.material.tabs.TabLayoutMediator +import com.google.gson.Gson + +class AlbumFragment() : Fragment() { + lateinit var binding: FragmentAlbumBinding + private var gson: Gson = Gson() + private var information = arrayListOf("수록곡", "상세정보", "영상") + + + 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) + +// // Bundle에서 데이터 가져오기 +// val albumTitle = arguments?.getString("albumTitle") +// val singer = arguments?.getString("singer") +// val info = arguments?.getString("info") +// val img = arguments?.getInt("img") +// +// // UI에 데이터 설정 +// binding.albumMusicTitleTv.text = albumTitle +// binding.albumSingerNameTv.text = singer +// binding.albumMusicTitleInfoTv.text = info +// +// // ImageView에 이미지 리소스를 설정 +// img?.let { +// if (it != 0) { +// binding.albumAlbumIv.setImageResource(it) +// } +// } + + //뒤로가기 버튼 액션 + binding.albumBackIv.setOnClickListener { + (context as MainActivity).supportFragmentManager.beginTransaction() + .replace(R.id.main_frm , HomeFragment()) + .commitAllowingStateLoss() + } + + + val albumAdapter = AlbumVPAdapter(this) + binding.albumContentVp.adapter = albumAdapter + + TabLayoutMediator(binding.albumContentTb, binding.albumContentVp){ + tab, position -> tab.text = information[position] + }.attach() + + + return binding.root + } + + private fun setInit(album: Album) { + binding.albumAlbumIv.setImageResource(album.coverimg!!) + binding.albumMusicTitleTv.text = album.title.toString() + binding.albumSingerNameTv.text = album.singer.toString() + + } + + +} \ No newline at end of file diff --git a/Eden/Clone_Coding/app/src/main/java/com/example/clone_coding/AlbumLockerRVAdapter.kt b/Eden/Clone_Coding/app/src/main/java/com/example/clone_coding/AlbumLockerRVAdapter.kt new file mode 100644 index 00000000..4d6c83a4 --- /dev/null +++ b/Eden/Clone_Coding/app/src/main/java/com/example/clone_coding/AlbumLockerRVAdapter.kt @@ -0,0 +1,62 @@ +package com.example.clone_coding + +import android.util.Log +import android.view.LayoutInflater +import android.view.ViewGroup +import androidx.recyclerview.widget.RecyclerView +import com.example.clone_coding.databinding.ItemLockerSongBinding + +class AlbumLockerRVAdapter(private val albumList : ArrayList): RecyclerView.Adapter() { + interface MyItemClickListener{ + fun onRemoveSong(position: Int) + } + + private lateinit var myItemClickListener: MyItemClickListener + + fun setMyItemClickListener(itemClickListener: MyItemClickListener){ + myItemClickListener = itemClickListener + } + + override fun onCreateViewHolder(viewGroup: ViewGroup, viewType: Int): AlbumLockerRVAdapter.ViewHolder { + val binding: ItemLockerSongBinding = ItemLockerSongBinding.inflate(LayoutInflater.from(viewGroup.context), viewGroup, false) + + return ViewHolder(binding) + } + + override fun onBindViewHolder(holder: AlbumLockerRVAdapter.ViewHolder, position: Int) { + val item = albumList[position] // 현재 아이템 + + holder.bind(item) + holder.binding.itemSongMoreIv.setOnClickListener { + myItemClickListener.onRemoveSong(position) + } + } + + override fun getItemCount(): Int = albumList.size + + fun removeSong(position: Int){ + albumList.removeAt(position) + notifyDataSetChanged() + } + + inner class ViewHolder(val binding: ItemLockerSongBinding) : RecyclerView.ViewHolder(binding.root) { + fun bind(album: Album) { + // 기본 데이터 바인딩 + binding.itemSongImgIv.setImageResource(album.coverimg!!) + binding.itemSongTitleTv.text = album.title + binding.itemSongSingerTv.text = album.singer + + // Switch 상태를 데이터 모델 값으로 설정 + binding.itemSwitch.apply { + setOnCheckedChangeListener(null) // 기존 리스너 초기화 + isChecked = album.isSwitchOn + + // Switch 상태 변경 리스너 설정 + setOnCheckedChangeListener { _, isChecked -> + album.isSwitchOn = isChecked + } + } + } + } + +} \ No newline at end of file diff --git a/Eden/Clone_Coding/app/src/main/java/com/example/clone_coding/AlbumRVAdapter.kt b/Eden/Clone_Coding/app/src/main/java/com/example/clone_coding/AlbumRVAdapter.kt new file mode 100644 index 00000000..80fdef67 --- /dev/null +++ b/Eden/Clone_Coding/app/src/main/java/com/example/clone_coding/AlbumRVAdapter.kt @@ -0,0 +1,46 @@ +package com.example.clone_coding + +import android.view.LayoutInflater +import android.view.ViewGroup +import androidx.recyclerview.widget.RecyclerView +import com.example.clone_coding.databinding.ItemAlbumBinding + +class AlbumRVAdapter(private val albumList : ArrayList):RecyclerView.Adapter() { + + interface MyItemClickListener{ + //외부에서 오는 클릭을 처리하기 위한 인터페이스 + fun onItemClick(album: Album) + fun onPlayClick(album: Album) + } + + private lateinit var myItemClickListener: MyItemClickListener //전달받은 리스너 저장할 변수 + fun setMyItemClickListener(itemClickListener: MyItemClickListener){ //리스너 전달받을 함수 + myItemClickListener = itemClickListener + } + + 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{ + myItemClickListener.onItemClick(albumList[position]) + } + holder.binding.itemAlbumPlayImgIv.setOnClickListener { + myItemClickListener.onPlayClick(albumList[position]) + } + } + + 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.singer + binding.itemAlbumCoverImgIv.setImageResource(album.coverimg!!) + } + } +} \ No newline at end of file diff --git a/Eden/Clone_Coding/app/src/main/java/com/example/clone_coding/AlbumVPAdapter.kt b/Eden/Clone_Coding/app/src/main/java/com/example/clone_coding/AlbumVPAdapter.kt new file mode 100644 index 00000000..04500ef9 --- /dev/null +++ b/Eden/Clone_Coding/app/src/main/java/com/example/clone_coding/AlbumVPAdapter.kt @@ -0,0 +1,18 @@ +package com.example.clone_coding + +import androidx.fragment.app.Fragment +import androidx.viewpager2.adapter.FragmentStateAdapter + +class AlbumVPAdapter(fragment: Fragment) : FragmentStateAdapter(fragment) { + override fun getItemCount(): Int = 3 + + override fun createFragment(position: Int): Fragment { + return when(position){ + 0->SongFragment() + 1->DetailFragment() + else -> VideoFragment() + } + + } + +} \ No newline at end of file diff --git a/Eden/Clone_Coding/app/src/main/java/com/example/clone_coding/BannerFragment.kt b/Eden/Clone_Coding/app/src/main/java/com/example/clone_coding/BannerFragment.kt new file mode 100644 index 00000000..c5306cc8 --- /dev/null +++ b/Eden/Clone_Coding/app/src/main/java/com/example/clone_coding/BannerFragment.kt @@ -0,0 +1,28 @@ +package com.example.clone_coding + +import android.os.Bundle +import androidx.fragment.app.Fragment +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import com.example.clone_coding.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) //이미지 리소스 id값 넘겨받아서 적용 + + return binding.root + } + + +} \ No newline at end of file diff --git a/Eden/Clone_Coding/app/src/main/java/com/example/clone_coding/BannerVPAdapter.kt b/Eden/Clone_Coding/app/src/main/java/com/example/clone_coding/BannerVPAdapter.kt new file mode 100644 index 00000000..1465295d --- /dev/null +++ b/Eden/Clone_Coding/app/src/main/java/com/example/clone_coding/BannerVPAdapter.kt @@ -0,0 +1,20 @@ +package com.example.clone_coding + +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/Eden/Clone_Coding/app/src/main/java/com/example/clone_coding/DetailFragment.kt b/Eden/Clone_Coding/app/src/main/java/com/example/clone_coding/DetailFragment.kt new file mode 100644 index 00000000..525decdb --- /dev/null +++ b/Eden/Clone_Coding/app/src/main/java/com/example/clone_coding/DetailFragment.kt @@ -0,0 +1,22 @@ +package com.example.clone_coding + +import android.os.Bundle +import androidx.fragment.app.Fragment +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import com.example.clone_coding.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/Eden/Clone_Coding/app/src/main/java/com/example/clone_coding/HomeFragment.kt b/Eden/Clone_Coding/app/src/main/java/com/example/clone_coding/HomeFragment.kt new file mode 100644 index 00000000..3206da98 --- /dev/null +++ b/Eden/Clone_Coding/app/src/main/java/com/example/clone_coding/HomeFragment.kt @@ -0,0 +1,130 @@ +package com.example.clone_coding + +import android.os.Bundle +import android.os.Handler +import android.os.Looper +import androidx.fragment.app.Fragment +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.recyclerview.widget.LinearLayoutManager +import androidx.viewpager2.widget.ViewPager2 +import com.example.clone_coding.databinding.FragmentHomeBinding +import com.google.gson.Gson +import java.util.Timer +import kotlin.concurrent.scheduleAtFixedRate + + +class HomeFragment : Fragment() { + private lateinit var binding: FragmentHomeBinding + private val timer = Timer() + private val handler = Handler(Looper.getMainLooper()) + private var albumDatas = ArrayList() + + + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ): View { + binding = FragmentHomeBinding.inflate(inflater, container, false) + + //ViewPager2 어댑터 설정 + val panelAdapter = PannerVPAdapter(this) + binding.homePannelBackgroundVp.adapter = panelAdapter + //ViewPager2와 인디케이터 연결 + binding.homePannelBackgroundIndi.setViewPager(binding.homePannelBackgroundVp) + //자동 전환 + startAutoSlide(panelAdapter) + +// //특정 정보를 담을 AlbumFragment을 생성 +// var lilacFragment = AlbumFragment() +// //bundle 이용해 정보 전달 +// var lilacBundle = Bundle() +// lilacBundle.putString("albumTitle", "IU 5th Album 'LILAC'") +// lilacBundle.putString("singer", "IU") +// lilacBundle.putString("info", "2021.03.25 | 정규 | 댄스 팝") +// lilacBundle.putInt("img", R.drawable.img_album_exp2) +// lilacFragment.arguments = lilacBundle +// +// var butterFragment = AlbumFragment() +// +// var butterBundle = Bundle() +// butterBundle.putString("albumTitle", "Butter (feat. Megan Thee Stallion)") +// butterBundle.putString("singer", "방탄소년단") +// butterBundle.putString("info", "2021.08.27 | 싱글 | 국내 댄스/일렉") +// butterBundle.putInt("img", R.drawable.img_album_exp) +// butterFragment.arguments = butterBundle + + //더미 데이터 + albumDatas.apply { + add(Album("라일락", "아이유(IU)", R.drawable.img_album_exp2, + ArrayList().apply{add(Song("라일락", "아이유", 0, 215, false, "music_lilac"))}, false)) + add(Album("엄", "헌준타워", R.drawable.img_album_phj, + ArrayList().apply{add(Song("한 페이지가 될 수 있게", "두둥탁", 0, 206, false, "music_page"))}, false)) + add(Album("Next Level", "에스파", R.drawable.img_album_exp3,null,false)) + add(Album("Boy with Luv", "방탄소년단(BTS)", R.drawable.img_album_exp4,null,false)) + add(Album("Weekend", "태연", R.drawable.img_album_exp6,null,false)) + } + + var 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 onPlayClick(album: Album) { + playAlbum(album) + } + }) + + val bannerAdapter = BannerVPAdapter(this) + bannerAdapter.addFragment(BannerFragment(R.drawable.img_home_viewpager_exp)) //이미지 리소스 id값 넘기기 + bannerAdapter.addFragment(BannerFragment(R.drawable.img_home_viewpager_exp2)) + bannerAdapter.addFragment(BannerFragment(R.drawable.img_home_viewpager_exp)) + binding.homeBannerVp.adapter = bannerAdapter + binding.homeBannerVp.orientation = ViewPager2.ORIENTATION_HORIZONTAL + + return binding.root + } + + private fun playAlbum(album: Album) { + val mainActivity = requireActivity() as MainActivity + + mainActivity.setNewSong(album.songs?.get(0) ?: Song("Unknown", "Unknown Artist")) + mainActivity.setAlbumcover(album.coverimg!!) + } + + 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 : PannerVPAdapter){ + //3초마다 전환 + timer.scheduleAtFixedRate(3000, 3000){ + handler.post{ + val nextItem = binding.homePannelBackgroundVp.currentItem + 1 + if(nextItem < adapter.itemCount ){ + //다음 페이지 있을 경우 + binding.homePannelBackgroundVp.currentItem = nextItem + } + else{ + //마지막 페이지일 경우 첫 페이지로 + binding.homePannelBackgroundVp.currentItem = 0 + } + } + } + + } +} \ No newline at end of file diff --git a/Eden/Clone_Coding/app/src/main/java/com/example/clone_coding/HomePanel1Fragment.kt b/Eden/Clone_Coding/app/src/main/java/com/example/clone_coding/HomePanel1Fragment.kt new file mode 100644 index 00000000..39761909 --- /dev/null +++ b/Eden/Clone_Coding/app/src/main/java/com/example/clone_coding/HomePanel1Fragment.kt @@ -0,0 +1,20 @@ +package com.example.clone_coding + +import android.os.Bundle +import androidx.fragment.app.Fragment +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import com.example.clone_coding.databinding.FragmentHomePanel1Binding + +class HomePanel1Fragment : Fragment() { + private lateinit var binding : FragmentHomePanel1Binding + + override fun onCreateView( + inflater: LayoutInflater, container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + binding = FragmentHomePanel1Binding.inflate(inflater,container,false) + return binding.root + } +} \ No newline at end of file diff --git a/Eden/Clone_Coding/app/src/main/java/com/example/clone_coding/HomePanel2Fragment.kt b/Eden/Clone_Coding/app/src/main/java/com/example/clone_coding/HomePanel2Fragment.kt new file mode 100644 index 00000000..4f8a29a9 --- /dev/null +++ b/Eden/Clone_Coding/app/src/main/java/com/example/clone_coding/HomePanel2Fragment.kt @@ -0,0 +1,20 @@ +package com.example.clone_coding + +import android.os.Bundle +import androidx.fragment.app.Fragment +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import com.example.clone_coding.databinding.FragmentHomePanel2Binding + +class HomePanel2Fragment : Fragment() { + private lateinit var binding : FragmentHomePanel2Binding + + override fun onCreateView( + inflater: LayoutInflater, container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + binding = FragmentHomePanel2Binding.inflate(inflater, container, false) + return binding.root + } +} \ No newline at end of file diff --git a/Eden/Clone_Coding/app/src/main/java/com/example/clone_coding/HomePanel3Fragment.kt b/Eden/Clone_Coding/app/src/main/java/com/example/clone_coding/HomePanel3Fragment.kt new file mode 100644 index 00000000..eefdfa7c --- /dev/null +++ b/Eden/Clone_Coding/app/src/main/java/com/example/clone_coding/HomePanel3Fragment.kt @@ -0,0 +1,21 @@ +package com.example.clone_coding + +import android.os.Bundle +import androidx.fragment.app.Fragment +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import com.example.clone_coding.databinding.FragmentHomePanel3Binding + +class HomePanel3Fragment : Fragment() { + private lateinit var binding: FragmentHomePanel3Binding + + override fun onCreateView( + inflater: LayoutInflater, container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + binding = FragmentHomePanel3Binding.inflate(inflater, container, false) + return binding.root + } + +} \ No newline at end of file diff --git a/Eden/Clone_Coding/app/src/main/java/com/example/clone_coding/LockerFragment.kt b/Eden/Clone_Coding/app/src/main/java/com/example/clone_coding/LockerFragment.kt new file mode 100644 index 00000000..41be3d19 --- /dev/null +++ b/Eden/Clone_Coding/app/src/main/java/com/example/clone_coding/LockerFragment.kt @@ -0,0 +1,36 @@ +package com.example.clone_coding + +import android.os.Bundle +import androidx.fragment.app.Fragment +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.recyclerview.widget.LinearLayoutManager +import com.example.clone_coding.databinding.FragmentLockerBinding +import com.google.android.material.tabs.TabLayoutMediator + + +class LockerFragment : Fragment() { + + private 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/Eden/Clone_Coding/app/src/main/java/com/example/clone_coding/LockerVPAdapter.kt b/Eden/Clone_Coding/app/src/main/java/com/example/clone_coding/LockerVPAdapter.kt new file mode 100644 index 00000000..c69c275e --- /dev/null +++ b/Eden/Clone_Coding/app/src/main/java/com/example/clone_coding/LockerVPAdapter.kt @@ -0,0 +1,17 @@ +package com.example.clone_coding + +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 -> SavedSongFragment() + else -> MusicFileFragment() + } + } + + +} \ No newline at end of file diff --git a/Eden/Clone_Coding/app/src/main/java/com/example/clone_coding/LookFragment.kt b/Eden/Clone_Coding/app/src/main/java/com/example/clone_coding/LookFragment.kt new file mode 100644 index 00000000..df9e5bb4 --- /dev/null +++ b/Eden/Clone_Coding/app/src/main/java/com/example/clone_coding/LookFragment.kt @@ -0,0 +1,24 @@ +package com.example.clone_coding + +import android.os.Bundle +import androidx.fragment.app.Fragment +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import com.example.clone_coding.databinding.FragmentLookBinding + +class LookFragment : Fragment() { + private 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/Eden/Clone_Coding/app/src/main/java/com/example/clone_coding/MainActivity.kt b/Eden/Clone_Coding/app/src/main/java/com/example/clone_coding/MainActivity.kt new file mode 100644 index 00000000..72a60c59 --- /dev/null +++ b/Eden/Clone_Coding/app/src/main/java/com/example/clone_coding/MainActivity.kt @@ -0,0 +1,141 @@ +package com.example.clone_coding + +import android.app.Activity +import android.content.Intent +import android.os.Bundle +import android.os.Handler +import android.os.Looper +import android.util.Log +import android.widget.Toast +import androidx.activity.result.contract.ActivityResultContracts +import androidx.appcompat.app.AppCompatActivity +import androidx.core.splashscreen.SplashScreen.Companion.installSplashScreen +import com.example.clone_coding.databinding.ActivityMainBinding +import com.google.gson.Gson + +class MainActivity : AppCompatActivity() { + lateinit var binding: ActivityMainBinding + + private var song : Song = Song() + private var gson : Gson = Gson() + private var albumCoverimg : Int = 0 + + private val getResultText = registerForActivityResult( + ActivityResultContracts.StartActivityForResult() + ){result-> + if(result.resultCode == Activity.RESULT_OK){ + val returnString = result.data?.getStringExtra("title") + Toast.makeText(this, returnString, Toast.LENGTH_SHORT).show() + } + } + + override fun onCreate(savedInstanceState: Bundle?) { + // 스플래시 화면 설치(실행 시간 연장용) + val splashScreen = installSplashScreen() + + // 스플래시 화면 지연 시간 설정 + splashScreen.setKeepOnScreenCondition { true } + Handler(Looper.getMainLooper()).postDelayed({ + splashScreen.setKeepOnScreenCondition { false } + }, 1000) // 1초 지연 + + super.onCreate(savedInstanceState) + setTheme(R.style.Theme_FLO) + + binding = ActivityMainBinding.inflate(layoutInflater) + setContentView(binding.root) + + initBottomNavigation() + + // 플레이어 띄울 때 데이터 전달 + binding.mainPlayerCl.setOnClickListener { + // JSON 데이터 전달로 방식 변경 + val gson = Gson() + val songJson = gson.toJson(song) + + val intent = Intent(this, SongActivity::class.java) + + intent.putExtra("song_player", songJson) + + intent.putExtra("album_img", albumCoverimg) + + try { + getResultText.launch(intent) + } catch (e: Exception) { + Log.e("DEBUG_LOG2", "getResultText.launch 호출 중 오류 발생: ${e.message}") + } + } + } + + 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.mainProgressSb.progress = (song.currentTime*100000)/song.playTime + } + + 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") + }else{ + gson.fromJson(songJson, Song::class.java) + } + + setMiniPlayer(song) + } + + fun setNewSong(newSong: Song){ + song = newSong + setMiniPlayer(song) + } + fun getSong(): String { + return song.title + } + + fun setAlbumcover(resImg : Int){ + albumCoverimg = resImg + } + +} \ No newline at end of file diff --git a/Eden/Clone_Coding/app/src/main/java/com/example/clone_coding/MusicFileFragment.kt b/Eden/Clone_Coding/app/src/main/java/com/example/clone_coding/MusicFileFragment.kt new file mode 100644 index 00000000..80051a62 --- /dev/null +++ b/Eden/Clone_Coding/app/src/main/java/com/example/clone_coding/MusicFileFragment.kt @@ -0,0 +1,23 @@ +package com.example.clone_coding + +import android.os.Bundle +import androidx.fragment.app.Fragment +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import com.example.clone_coding.databinding.FragmentMusicFileBinding +import com.example.clone_coding.databinding.FragmentSongBinding + +class MusicFileFragment : Fragment() { + private 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/Eden/Clone_Coding/app/src/main/java/com/example/clone_coding/PannerVPAdapter.kt b/Eden/Clone_Coding/app/src/main/java/com/example/clone_coding/PannerVPAdapter.kt new file mode 100644 index 00000000..d116e5b4 --- /dev/null +++ b/Eden/Clone_Coding/app/src/main/java/com/example/clone_coding/PannerVPAdapter.kt @@ -0,0 +1,16 @@ +package com.example.clone_coding + +import androidx.fragment.app.Fragment +import androidx.viewpager2.adapter.FragmentStateAdapter + +class PannerVPAdapter(fragment : Fragment) : FragmentStateAdapter(fragment) { + override fun getItemCount(): Int = 3 + + override fun createFragment(position: Int): Fragment { + return when(position){ + 0->HomePanel1Fragment() + 1->HomePanel2Fragment() + else->HomePanel3Fragment() + } + } +} \ No newline at end of file diff --git a/Eden/Clone_Coding/app/src/main/java/com/example/clone_coding/SavedSongFragment.kt b/Eden/Clone_Coding/app/src/main/java/com/example/clone_coding/SavedSongFragment.kt new file mode 100644 index 00000000..4cc590ab --- /dev/null +++ b/Eden/Clone_Coding/app/src/main/java/com/example/clone_coding/SavedSongFragment.kt @@ -0,0 +1,58 @@ +package com.example.clone_coding + +import android.os.Bundle +import androidx.fragment.app.Fragment +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.recyclerview.widget.LinearLayoutManager +import com.example.clone_coding.databinding.FragmentSavedSongBinding + +class SavedSongFragment : Fragment() { + private lateinit var binding : FragmentSavedSongBinding + private var lockerAlbumDatas = ArrayList() + + + override fun onCreateView( + inflater: LayoutInflater, container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + binding = FragmentSavedSongBinding.inflate(inflater, container, false) + + lockerAlbumDatas.apply { + add(Album("처음", "두둥탁", R.drawable.img_phj_poster)) + add(Album("로고", "두둥탁", R.drawable.img_phj_logo)) + add(Album("엄", "엄헌준", R.drawable.img_phj_um)) + add(Album("Champagne Supernova", "피아노헌준", R.drawable.img_phj_piano)) + add(Album("정류장에서", "마스크헌준", R.drawable.img_phj_bus)) + add(Album("나도 졸업하고 싶다", "20박헌준", R.drawable.img_phj_good)) + add(Album("처음2", "두둥탁", R.drawable.img_phj_poster)) + add(Album("로고2", "두둥탁", R.drawable.img_phj_logo)) + add(Album("엄2", "엄헌준", R.drawable.img_phj_um)) + add(Album("Champagne Supernova2", "피아노헌준", R.drawable.img_phj_piano)) + add(Album("정류장에서2", "마스크헌준", R.drawable.img_phj_bus)) + add(Album("나도 졸업하고 싶다2", "20박헌준", R.drawable.img_phj_good)) + add(Album("처음3", "두둥탁", R.drawable.img_phj_poster)) + add(Album("로고3", "두둥탁", R.drawable.img_phj_logo)) + add(Album("엄3", "엄헌준", R.drawable.img_phj_um)) + add(Album("Champagne Supernova3", "피아노헌준", R.drawable.img_phj_piano)) + add(Album("정류장에서3", "마스크헌준", R.drawable.img_phj_bus)) + add(Album("나도 졸업하고 싶다3", "20박헌준", R.drawable.img_phj_good)) + } + + var albumLockerRVAdapter = AlbumLockerRVAdapter(lockerAlbumDatas) + binding.lockerSavedSongRecyclerView.adapter = albumLockerRVAdapter + binding.lockerSavedSongRecyclerView.layoutManager = LinearLayoutManager(context, LinearLayoutManager.VERTICAL, false) + + albumLockerRVAdapter.setMyItemClickListener(object : AlbumLockerRVAdapter.MyItemClickListener{ + override fun onRemoveSong(position: Int) { + albumLockerRVAdapter.removeSong(position) + } + + }) + + + + return binding.root + } +} \ No newline at end of file diff --git a/Eden/Clone_Coding/app/src/main/java/com/example/clone_coding/SearchFragment.kt b/Eden/Clone_Coding/app/src/main/java/com/example/clone_coding/SearchFragment.kt new file mode 100644 index 00000000..10fac89f --- /dev/null +++ b/Eden/Clone_Coding/app/src/main/java/com/example/clone_coding/SearchFragment.kt @@ -0,0 +1,23 @@ +package com.example.clone_coding + +import android.os.Bundle +import androidx.fragment.app.Fragment +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import com.example.clone_coding.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/Eden/Clone_Coding/app/src/main/java/com/example/clone_coding/Song.kt b/Eden/Clone_Coding/app/src/main/java/com/example/clone_coding/Song.kt new file mode 100644 index 00000000..9c600be7 --- /dev/null +++ b/Eden/Clone_Coding/app/src/main/java/com/example/clone_coding/Song.kt @@ -0,0 +1,11 @@ +package com.example.clone_coding + +//제목, 가수, 현재 재생 시간, 재생 시간, 재생 여부 +data class Song( + val title : String = "", + val singer : String = "", + var currentTime : Int = 0, + var playTime : Int =1, //ArithmeticException 방지 + var isPlaying : Boolean = false, + var music : String = "" +) diff --git a/Eden/Clone_Coding/app/src/main/java/com/example/clone_coding/SongActivity.kt b/Eden/Clone_Coding/app/src/main/java/com/example/clone_coding/SongActivity.kt new file mode 100644 index 00000000..7dfc8d8d --- /dev/null +++ b/Eden/Clone_Coding/app/src/main/java/com/example/clone_coding/SongActivity.kt @@ -0,0 +1,201 @@ +package com.example.clone_coding + +import android.app.Activity +import android.content.Intent +import android.content.res.ColorStateList +import android.media.MediaPlayer +import android.os.Bundle +import android.util.Log +import android.view.View +import androidx.appcompat.app.AppCompatActivity +import androidx.core.content.ContextCompat +import com.example.clone_coding.databinding.ActivitySongBinding +import com.google.gson.Gson +import java.util.Locale + +class SongActivity : AppCompatActivity() { + + private lateinit var binding : ActivitySongBinding + private var isRandomColorChanged = false + private lateinit var song : Song + private lateinit var timer: Timer + private var mediaPlayer : MediaPlayer? = null + private var gson : Gson = Gson() + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + binding = ActivitySongBinding.inflate(layoutInflater) + setContentView(binding.root) + + initSong() + setPlayer(song) + + binding.songDownIb.setOnClickListener { + val title = binding.songMusicTitleTv.text.toString() + val intent = Intent(this, MainActivity::class.java) + intent.putExtra("title", title) + setResult(Activity.RESULT_OK, intent) + + finish() + } + + //반복재생 설정 + val images = listOf(R.drawable.nugu_btn_repeat_inactive, R.drawable.nugu_btn_repeat_all_active, R.drawable.nugu_btn_repeat_one_active) // 사용할 이미지 리스트 + var currentIndex = 0 + binding.songRepeatIv.setOnClickListener { + currentIndex = (currentIndex + 1) % images.size // 인덱스 순환 설정 + binding.songRepeatIv.setImageResource(images[currentIndex]) + + if(currentIndex==2){ + mediaPlayer?.isLooping = true + } + else{ + mediaPlayer?.isLooping = false + } + } + + //랜덤재생 설정 + binding.songRandomIv.setOnClickListener { + if (isRandomColorChanged) { +// binding.songRandomIv.setColorFilter(ContextCompat.getColor(this, R.color.flo), PorterDuff.Mode.SRC_ATOP) //ColorFilter 방식 + binding.songRandomIv.imageTintList = ColorStateList.valueOf(ContextCompat.getColor(this@SongActivity, R.color.flo)) //Tint 방식 + } else { +// binding.songRandomIv.setColorFilter(ContextCompat.getColor(this, R.color.colorPrimaryGrey), PorterDuff.Mode.SRC_ATOP) + binding.songRandomIv.imageTintList = ColorStateList.valueOf(ContextCompat.getColor(this@SongActivity, R.color.colorPrimaryGrey)) + + } + isRandomColorChanged = !isRandomColorChanged // 상태 반전 + } + + + //재생, 정지 상태 전환 + binding.songMiniplayerIv.setOnClickListener { + setPlayerStatus(true) + } + binding.songPauseIv.setOnClickListener { + setPlayerStatus(false) + } + + try { + binding.songMusicTitleTv.text = song.title + binding.songSingerNameTv.text = song.singer + binding.songEndTimeTv.text = String.format(Locale.US, "%d:%02d", (song.playTime) / 60, (song.playTime) % 60) + Log.d("DEBUG_LOG2", "Song 정보가 레이아웃에 적용되었습니다.") + } catch (e: Exception) { + Log.e("DEBUG_LOG2", "레이아웃 적용 중 오류 발생: ${e.message}") + } + binding.songAlbumIv.setImageResource(intent.getIntExtra("album_img", R.drawable.img_album_exp2)) + } + + //사용자가 포커스 잃었을 때 음악 중지 + override fun onPause() { + super.onPause() + setPlayerStatus(false) + song.currentTime = ((binding.songProgressSb.progress * song.playTime)/100)/1000 //SeekBar의 현재 위치 받아오기. ms 기준이라 /1000 + val sharedPreferences = getSharedPreferences("song", MODE_PRIVATE) + val editor = sharedPreferences.edit() + val songJson = gson.toJson(song) + editor.putString("songData", songJson) + + editor.apply() + } + + //스레드 종료 + override fun onDestroy() { + super.onDestroy() + timer.interrupt() + mediaPlayer?.release() //MediaPlayer가 가지고 있던 리소스 해제 + mediaPlayer = null //MediaPlayer 해제 + } + + //intent 기반 Song 객체 생성 + private fun initSong(){ + val songJson = intent.getStringExtra("song_player") + song = gson.fromJson(songJson, Song::class.java) + + //기본값 설정 + if(song.title=="Unknown"){ + song = Song("Unknown", "Unknown Artist", 0, 1, false, "music_lilac") + } + + startTimer() //초기화와 동시에 타이머 시작 + } + + //Song 객체 기반 UI 세팅 + private fun setPlayer(song: Song){ + binding.songMusicTitleTv.text = song.title + binding.songSingerNameTv.text = song.singer + binding.songStartTimeTv.text = String.format(Locale.US, "%02d:%02d", song.currentTime/60, song.currentTime%60) + binding.songEndTimeTv.text = String.format(Locale.US, "%02d:%02d", song.playTime/60, song.playTime%60) + binding.songProgressSb.progress = (song.currentTime*100000/song.playTime) //Seekbar의 max 값 100000 + mediaPlayer = MediaPlayer.create(this, resources.getIdentifier(song.music, "raw", packageName)) + + setPlayerStatus(song.isPlaying) + } + + //정지, 재생 상태에 따른 아이콘 변경 + private fun setPlayerStatus (isPlaying : Boolean){ + song.isPlaying = isPlaying + timer.isPlaying = isPlaying + + if(isPlaying){ + binding.songMiniplayerIv.visibility = View.GONE + binding.songPauseIv.visibility = View.VISIBLE + mediaPlayer?.start() + } else { + binding.songMiniplayerIv.visibility = View.VISIBLE + binding.songPauseIv.visibility = View.GONE + if(mediaPlayer?.isPlaying == true){ + mediaPlayer?.pause() + } + } + + } + + //타이머 시작 + private fun startTimer(){ + timer = Timer(song.playTime, song.isPlaying) + timer.start() + } + + //타이머 스레드 + 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){ + break + } + + if(isPlaying){ + //50ms 단위로 seekbar 업데이트 + sleep(50) + mills += 50 + + runOnUiThread{ + binding.songProgressSb.progress = (((mills/1000)/playTime)*100000).toInt() //진행률을 백분율로 표시 + } + + if(mills%1000==0f){ + //1000ms, 즉 1초 증가 시 UI의 현재 시간 부분 업데이트 + runOnUiThread { + binding.songStartTimeTv.text = String.format(Locale.US, "%02d:%02d", second/60, second%60) + } + second++ + } + } + + } + }catch (e: InterruptedException){ + Log.d("song", "쓰레드가 죽었습니다") + } + + } + + } +} \ No newline at end of file diff --git a/Eden/Clone_Coding/app/src/main/java/com/example/clone_coding/SongFragment.kt b/Eden/Clone_Coding/app/src/main/java/com/example/clone_coding/SongFragment.kt new file mode 100644 index 00000000..07f92327 --- /dev/null +++ b/Eden/Clone_Coding/app/src/main/java/com/example/clone_coding/SongFragment.kt @@ -0,0 +1,50 @@ +package com.example.clone_coding + +import android.os.Bundle +import androidx.fragment.app.Fragment +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.Toast +import androidx.core.view.isVisible +import com.example.clone_coding.databinding.FragmentSongBinding + +class SongFragment : Fragment() { + lateinit var binding: FragmentSongBinding + + + override fun onCreateView( + inflater: LayoutInflater, container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + binding = FragmentSongBinding.inflate(inflater, container, false) + + binding.songLalacLayout.setOnClickListener{ + Toast.makeText(activity, "LILAC", Toast.LENGTH_SHORT).show() + } + + //MIX 버튼 상태 변경 + binding.songMixoffTg.setOnClickListener { + changeMIXStatus(true) + } + binding.songMixonTg.setOnClickListener { + changeMIXStatus(false) + } + + return binding.root + + + } + + private fun changeMIXStatus(isMIX : Boolean){ + if(isMIX){ + binding.songMixoffTg.visibility = View.GONE + binding.songMixonTg.visibility = View.VISIBLE + } + else{ + binding.songMixonTg.visibility = View.GONE + binding.songMixoffTg.visibility = View.VISIBLE + } + } + +} \ No newline at end of file diff --git a/Eden/Clone_Coding/app/src/main/java/com/example/clone_coding/VideoFragment.kt b/Eden/Clone_Coding/app/src/main/java/com/example/clone_coding/VideoFragment.kt new file mode 100644 index 00000000..1650c9d9 --- /dev/null +++ b/Eden/Clone_Coding/app/src/main/java/com/example/clone_coding/VideoFragment.kt @@ -0,0 +1,21 @@ +package com.example.clone_coding + +import android.os.Bundle +import androidx.fragment.app.Fragment +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import com.example.clone_coding.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/Eden/Clone_Coding/app/src/main/res/animator/scale_with_alpha.xml b/Eden/Clone_Coding/app/src/main/res/animator/scale_with_alpha.xml new file mode 100644 index 00000000..8ef7f85d --- /dev/null +++ b/Eden/Clone_Coding/app/src/main/res/animator/scale_with_alpha.xml @@ -0,0 +1,22 @@ + + + + + + + + + \ No newline at end of file diff --git a/Eden/Clone_Coding/app/src/main/res/drawable/apple_44.png b/Eden/Clone_Coding/app/src/main/res/drawable/apple_44.png new file mode 100644 index 00000000..f365d20c Binary files /dev/null and b/Eden/Clone_Coding/app/src/main/res/drawable/apple_44.png differ diff --git a/Eden/Clone_Coding/app/src/main/res/drawable/btm_color_selector.xml b/Eden/Clone_Coding/app/src/main/res/drawable/btm_color_selector.xml new file mode 100644 index 00000000..3ecf8a7a --- /dev/null +++ b/Eden/Clone_Coding/app/src/main/res/drawable/btm_color_selector.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/Eden/Clone_Coding/app/src/main/res/drawable/btn_actionbar_close.png b/Eden/Clone_Coding/app/src/main/res/drawable/btn_actionbar_close.png new file mode 100644 index 00000000..b6cc3cc0 Binary files /dev/null and b/Eden/Clone_Coding/app/src/main/res/drawable/btn_actionbar_close.png differ diff --git a/Eden/Clone_Coding/app/src/main/res/drawable/btn_actionbar_instagram.png b/Eden/Clone_Coding/app/src/main/res/drawable/btn_actionbar_instagram.png new file mode 100644 index 00000000..90bc0277 Binary files /dev/null and b/Eden/Clone_Coding/app/src/main/res/drawable/btn_actionbar_instagram.png differ diff --git a/Eden/Clone_Coding/app/src/main/res/drawable/btn_arrow_black.png b/Eden/Clone_Coding/app/src/main/res/drawable/btn_arrow_black.png new file mode 100644 index 00000000..cc38ca8c Binary files /dev/null and b/Eden/Clone_Coding/app/src/main/res/drawable/btn_arrow_black.png differ diff --git a/Eden/Clone_Coding/app/src/main/res/drawable/btn_arrow_more.png b/Eden/Clone_Coding/app/src/main/res/drawable/btn_arrow_more.png new file mode 100644 index 00000000..59e410c5 Binary files /dev/null and b/Eden/Clone_Coding/app/src/main/res/drawable/btn_arrow_more.png differ diff --git a/Eden/Clone_Coding/app/src/main/res/drawable/btn_input_password.png b/Eden/Clone_Coding/app/src/main/res/drawable/btn_input_password.png new file mode 100644 index 00000000..8c2eb186 Binary files /dev/null and b/Eden/Clone_Coding/app/src/main/res/drawable/btn_input_password.png differ diff --git a/Eden/Clone_Coding/app/src/main/res/drawable/btn_input_password_off.png b/Eden/Clone_Coding/app/src/main/res/drawable/btn_input_password_off.png new file mode 100644 index 00000000..8234f538 Binary files /dev/null and b/Eden/Clone_Coding/app/src/main/res/drawable/btn_input_password_off.png differ diff --git a/Eden/Clone_Coding/app/src/main/res/drawable/btn_main_arrow_more.png b/Eden/Clone_Coding/app/src/main/res/drawable/btn_main_arrow_more.png new file mode 100644 index 00000000..59e410c5 Binary files /dev/null and b/Eden/Clone_Coding/app/src/main/res/drawable/btn_main_arrow_more.png differ diff --git a/Eden/Clone_Coding/app/src/main/res/drawable/btn_main_mike.png b/Eden/Clone_Coding/app/src/main/res/drawable/btn_main_mike.png new file mode 100644 index 00000000..9bddec69 Binary files /dev/null and b/Eden/Clone_Coding/app/src/main/res/drawable/btn_main_mike.png differ diff --git a/Eden/Clone_Coding/app/src/main/res/drawable/btn_main_setting.png b/Eden/Clone_Coding/app/src/main/res/drawable/btn_main_setting.png new file mode 100644 index 00000000..7a8d5d6a Binary files /dev/null and b/Eden/Clone_Coding/app/src/main/res/drawable/btn_main_setting.png differ diff --git a/Eden/Clone_Coding/app/src/main/res/drawable/btn_main_ticket.png b/Eden/Clone_Coding/app/src/main/res/drawable/btn_main_ticket.png new file mode 100644 index 00000000..52b6d64f Binary files /dev/null and b/Eden/Clone_Coding/app/src/main/res/drawable/btn_main_ticket.png differ diff --git a/Eden/Clone_Coding/app/src/main/res/drawable/btn_miniplay_mvpause.png b/Eden/Clone_Coding/app/src/main/res/drawable/btn_miniplay_mvpause.png new file mode 100644 index 00000000..470e0467 Binary files /dev/null and b/Eden/Clone_Coding/app/src/main/res/drawable/btn_miniplay_mvpause.png differ diff --git a/Eden/Clone_Coding/app/src/main/res/drawable/btn_miniplay_mvplay.png b/Eden/Clone_Coding/app/src/main/res/drawable/btn_miniplay_mvplay.png new file mode 100644 index 00000000..d1186774 Binary files /dev/null and b/Eden/Clone_Coding/app/src/main/res/drawable/btn_miniplay_mvplay.png differ diff --git a/Eden/Clone_Coding/app/src/main/res/drawable/btn_miniplay_pause.png b/Eden/Clone_Coding/app/src/main/res/drawable/btn_miniplay_pause.png new file mode 100644 index 00000000..470e0467 Binary files /dev/null and b/Eden/Clone_Coding/app/src/main/res/drawable/btn_miniplay_pause.png differ diff --git a/Eden/Clone_Coding/app/src/main/res/drawable/btn_miniplayer_go_list.png b/Eden/Clone_Coding/app/src/main/res/drawable/btn_miniplayer_go_list.png new file mode 100644 index 00000000..1b2d9774 Binary files /dev/null and b/Eden/Clone_Coding/app/src/main/res/drawable/btn_miniplayer_go_list.png differ diff --git a/Eden/Clone_Coding/app/src/main/res/drawable/btn_miniplayer_next.png b/Eden/Clone_Coding/app/src/main/res/drawable/btn_miniplayer_next.png new file mode 100644 index 00000000..3aedba3c Binary files /dev/null and b/Eden/Clone_Coding/app/src/main/res/drawable/btn_miniplayer_next.png differ diff --git a/Eden/Clone_Coding/app/src/main/res/drawable/btn_miniplayer_play.png b/Eden/Clone_Coding/app/src/main/res/drawable/btn_miniplayer_play.png new file mode 100644 index 00000000..f6190725 Binary files /dev/null and b/Eden/Clone_Coding/app/src/main/res/drawable/btn_miniplayer_play.png differ diff --git a/Eden/Clone_Coding/app/src/main/res/drawable/btn_miniplayer_previous.png b/Eden/Clone_Coding/app/src/main/res/drawable/btn_miniplayer_previous.png new file mode 100644 index 00000000..d0bf1f66 Binary files /dev/null and b/Eden/Clone_Coding/app/src/main/res/drawable/btn_miniplayer_previous.png differ diff --git a/Eden/Clone_Coding/app/src/main/res/drawable/btn_nugu.png b/Eden/Clone_Coding/app/src/main/res/drawable/btn_nugu.png new file mode 100644 index 00000000..9bddec69 Binary files /dev/null and b/Eden/Clone_Coding/app/src/main/res/drawable/btn_nugu.png differ diff --git a/Eden/Clone_Coding/app/src/main/res/drawable/btn_panel_play_large.png b/Eden/Clone_Coding/app/src/main/res/drawable/btn_panel_play_large.png new file mode 100644 index 00000000..4ac71038 Binary files /dev/null and b/Eden/Clone_Coding/app/src/main/res/drawable/btn_panel_play_large.png differ diff --git a/Eden/Clone_Coding/app/src/main/res/drawable/btn_player_eq_off.png b/Eden/Clone_Coding/app/src/main/res/drawable/btn_player_eq_off.png new file mode 100644 index 00000000..f23d9c6c Binary files /dev/null and b/Eden/Clone_Coding/app/src/main/res/drawable/btn_player_eq_off.png differ diff --git a/Eden/Clone_Coding/app/src/main/res/drawable/btn_player_go_list.png b/Eden/Clone_Coding/app/src/main/res/drawable/btn_player_go_list.png new file mode 100644 index 00000000..1b2d9774 Binary files /dev/null and b/Eden/Clone_Coding/app/src/main/res/drawable/btn_player_go_list.png differ diff --git a/Eden/Clone_Coding/app/src/main/res/drawable/btn_player_more.png b/Eden/Clone_Coding/app/src/main/res/drawable/btn_player_more.png new file mode 100644 index 00000000..a8ad9e62 Binary files /dev/null and b/Eden/Clone_Coding/app/src/main/res/drawable/btn_player_more.png differ diff --git a/Eden/Clone_Coding/app/src/main/res/drawable/btn_player_play.png b/Eden/Clone_Coding/app/src/main/res/drawable/btn_player_play.png new file mode 100644 index 00000000..f6c3201c Binary files /dev/null and b/Eden/Clone_Coding/app/src/main/res/drawable/btn_player_play.png differ diff --git a/Eden/Clone_Coding/app/src/main/res/drawable/btn_player_related.png b/Eden/Clone_Coding/app/src/main/res/drawable/btn_player_related.png new file mode 100644 index 00000000..9026fe5e Binary files /dev/null and b/Eden/Clone_Coding/app/src/main/res/drawable/btn_player_related.png differ diff --git a/Eden/Clone_Coding/app/src/main/res/drawable/btn_player_setting.png b/Eden/Clone_Coding/app/src/main/res/drawable/btn_player_setting.png new file mode 100644 index 00000000..0df8f69a Binary files /dev/null and b/Eden/Clone_Coding/app/src/main/res/drawable/btn_player_setting.png differ diff --git a/Eden/Clone_Coding/app/src/main/res/drawable/btn_player_unlike_off.png b/Eden/Clone_Coding/app/src/main/res/drawable/btn_player_unlike_off.png new file mode 100644 index 00000000..b5395047 Binary files /dev/null and b/Eden/Clone_Coding/app/src/main/res/drawable/btn_player_unlike_off.png differ diff --git a/Eden/Clone_Coding/app/src/main/res/drawable/btn_player_unlike_on.png b/Eden/Clone_Coding/app/src/main/res/drawable/btn_player_unlike_on.png new file mode 100644 index 00000000..45a43cae Binary files /dev/null and b/Eden/Clone_Coding/app/src/main/res/drawable/btn_player_unlike_on.png differ diff --git a/Eden/Clone_Coding/app/src/main/res/drawable/btn_playlist_select_off.png b/Eden/Clone_Coding/app/src/main/res/drawable/btn_playlist_select_off.png new file mode 100644 index 00000000..62ef45ca Binary files /dev/null and b/Eden/Clone_Coding/app/src/main/res/drawable/btn_playlist_select_off.png differ diff --git a/Eden/Clone_Coding/app/src/main/res/drawable/btn_playlist_select_on.png b/Eden/Clone_Coding/app/src/main/res/drawable/btn_playlist_select_on.png new file mode 100644 index 00000000..2d3b6afe Binary files /dev/null and b/Eden/Clone_Coding/app/src/main/res/drawable/btn_playlist_select_on.png differ diff --git a/Eden/Clone_Coding/app/src/main/res/drawable/btn_setting_phone.png b/Eden/Clone_Coding/app/src/main/res/drawable/btn_setting_phone.png new file mode 100644 index 00000000..d6de4c69 Binary files /dev/null and b/Eden/Clone_Coding/app/src/main/res/drawable/btn_setting_phone.png differ diff --git a/Eden/Clone_Coding/app/src/main/res/drawable/btn_textbox_close.png b/Eden/Clone_Coding/app/src/main/res/drawable/btn_textbox_close.png new file mode 100644 index 00000000..10f1f636 Binary files /dev/null and b/Eden/Clone_Coding/app/src/main/res/drawable/btn_textbox_close.png differ diff --git a/Eden/Clone_Coding/app/src/main/res/drawable/btn_titlebar_close.png b/Eden/Clone_Coding/app/src/main/res/drawable/btn_titlebar_close.png new file mode 100644 index 00000000..6615deff Binary files /dev/null and b/Eden/Clone_Coding/app/src/main/res/drawable/btn_titlebar_close.png differ diff --git a/Eden/Clone_Coding/app/src/main/res/drawable/btn_toggle_off.png b/Eden/Clone_Coding/app/src/main/res/drawable/btn_toggle_off.png new file mode 100644 index 00000000..983360df Binary files /dev/null and b/Eden/Clone_Coding/app/src/main/res/drawable/btn_toggle_off.png differ diff --git a/Eden/Clone_Coding/app/src/main/res/drawable/btn_toggle_on.png b/Eden/Clone_Coding/app/src/main/res/drawable/btn_toggle_on.png new file mode 100644 index 00000000..fb609f46 Binary files /dev/null and b/Eden/Clone_Coding/app/src/main/res/drawable/btn_toggle_on.png differ diff --git a/Eden/Clone_Coding/app/src/main/res/drawable/button_background_black_color.xml b/Eden/Clone_Coding/app/src/main/res/drawable/button_background_black_color.xml new file mode 100644 index 00000000..cad3794f --- /dev/null +++ b/Eden/Clone_Coding/app/src/main/res/drawable/button_background_black_color.xml @@ -0,0 +1,10 @@ + + + + + + + diff --git a/Eden/Clone_Coding/app/src/main/res/drawable/button_background_flo_color.xml b/Eden/Clone_Coding/app/src/main/res/drawable/button_background_flo_color.xml new file mode 100644 index 00000000..d5e92f35 --- /dev/null +++ b/Eden/Clone_Coding/app/src/main/res/drawable/button_background_flo_color.xml @@ -0,0 +1,10 @@ + + + + + + + diff --git a/Eden/Clone_Coding/app/src/main/res/drawable/button_background_gray_color.xml b/Eden/Clone_Coding/app/src/main/res/drawable/button_background_gray_color.xml new file mode 100644 index 00000000..dbcaae2b --- /dev/null +++ b/Eden/Clone_Coding/app/src/main/res/drawable/button_background_gray_color.xml @@ -0,0 +1,10 @@ + + + + + + + diff --git a/Eden/Clone_Coding/app/src/main/res/drawable/button_background_white_color.xml b/Eden/Clone_Coding/app/src/main/res/drawable/button_background_white_color.xml new file mode 100644 index 00000000..32e95830 --- /dev/null +++ b/Eden/Clone_Coding/app/src/main/res/drawable/button_background_white_color.xml @@ -0,0 +1,10 @@ + + + + + + + diff --git a/Eden/Clone_Coding/app/src/main/res/drawable/discovery_banner_aos.jpg b/Eden/Clone_Coding/app/src/main/res/drawable/discovery_banner_aos.jpg new file mode 100644 index 00000000..c9055156 Binary files /dev/null and b/Eden/Clone_Coding/app/src/main/res/drawable/discovery_banner_aos.jpg differ diff --git a/Eden/Clone_Coding/app/src/main/res/drawable/flo_radius.xml b/Eden/Clone_Coding/app/src/main/res/drawable/flo_radius.xml new file mode 100644 index 00000000..012829d2 --- /dev/null +++ b/Eden/Clone_Coding/app/src/main/res/drawable/flo_radius.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/Eden/Clone_Coding/app/src/main/res/drawable/fragment_look_chart_background.xml b/Eden/Clone_Coding/app/src/main/res/drawable/fragment_look_chart_background.xml new file mode 100644 index 00000000..64c040f5 --- /dev/null +++ b/Eden/Clone_Coding/app/src/main/res/drawable/fragment_look_chart_background.xml @@ -0,0 +1,16 @@ + + + + + + + + diff --git a/Eden/Clone_Coding/app/src/main/res/drawable/fragment_look_chip_off_background.xml b/Eden/Clone_Coding/app/src/main/res/drawable/fragment_look_chip_off_background.xml new file mode 100644 index 00000000..43005ce6 --- /dev/null +++ b/Eden/Clone_Coding/app/src/main/res/drawable/fragment_look_chip_off_background.xml @@ -0,0 +1,16 @@ + + + + + + + + diff --git a/Eden/Clone_Coding/app/src/main/res/drawable/fragment_look_chip_on_background.xml b/Eden/Clone_Coding/app/src/main/res/drawable/fragment_look_chip_on_background.xml new file mode 100644 index 00000000..ce894ed7 --- /dev/null +++ b/Eden/Clone_Coding/app/src/main/res/drawable/fragment_look_chip_on_background.xml @@ -0,0 +1,16 @@ + + + + + + + + diff --git a/Eden/Clone_Coding/app/src/main/res/drawable/gray_radius.xml b/Eden/Clone_Coding/app/src/main/res/drawable/gray_radius.xml new file mode 100644 index 00000000..72390ab2 --- /dev/null +++ b/Eden/Clone_Coding/app/src/main/res/drawable/gray_radius.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/Eden/Clone_Coding/app/src/main/res/drawable/ic_bottom_home_no_select.png b/Eden/Clone_Coding/app/src/main/res/drawable/ic_bottom_home_no_select.png new file mode 100644 index 00000000..69a8ab6c Binary files /dev/null and b/Eden/Clone_Coding/app/src/main/res/drawable/ic_bottom_home_no_select.png differ diff --git a/Eden/Clone_Coding/app/src/main/res/drawable/ic_bottom_home_select.png b/Eden/Clone_Coding/app/src/main/res/drawable/ic_bottom_home_select.png new file mode 100644 index 00000000..c0ff48e7 Binary files /dev/null and b/Eden/Clone_Coding/app/src/main/res/drawable/ic_bottom_home_select.png differ diff --git a/Eden/Clone_Coding/app/src/main/res/drawable/ic_bottom_locker_no_select.png b/Eden/Clone_Coding/app/src/main/res/drawable/ic_bottom_locker_no_select.png new file mode 100644 index 00000000..a67dec39 Binary files /dev/null and b/Eden/Clone_Coding/app/src/main/res/drawable/ic_bottom_locker_no_select.png differ diff --git a/Eden/Clone_Coding/app/src/main/res/drawable/ic_bottom_locker_select.png b/Eden/Clone_Coding/app/src/main/res/drawable/ic_bottom_locker_select.png new file mode 100644 index 00000000..042489f1 Binary files /dev/null and b/Eden/Clone_Coding/app/src/main/res/drawable/ic_bottom_locker_select.png differ diff --git a/Eden/Clone_Coding/app/src/main/res/drawable/ic_bottom_look_no_select.png b/Eden/Clone_Coding/app/src/main/res/drawable/ic_bottom_look_no_select.png new file mode 100644 index 00000000..6c2f4f0c Binary files /dev/null and b/Eden/Clone_Coding/app/src/main/res/drawable/ic_bottom_look_no_select.png differ diff --git a/Eden/Clone_Coding/app/src/main/res/drawable/ic_bottom_look_select.png b/Eden/Clone_Coding/app/src/main/res/drawable/ic_bottom_look_select.png new file mode 100644 index 00000000..3d169e48 Binary files /dev/null and b/Eden/Clone_Coding/app/src/main/res/drawable/ic_bottom_look_select.png differ diff --git a/Eden/Clone_Coding/app/src/main/res/drawable/ic_bottom_my_no_select.png b/Eden/Clone_Coding/app/src/main/res/drawable/ic_bottom_my_no_select.png new file mode 100644 index 00000000..a67dec39 Binary files /dev/null and b/Eden/Clone_Coding/app/src/main/res/drawable/ic_bottom_my_no_select.png differ diff --git a/Eden/Clone_Coding/app/src/main/res/drawable/ic_bottom_my_select.png b/Eden/Clone_Coding/app/src/main/res/drawable/ic_bottom_my_select.png new file mode 100644 index 00000000..042489f1 Binary files /dev/null and b/Eden/Clone_Coding/app/src/main/res/drawable/ic_bottom_my_select.png differ diff --git a/Eden/Clone_Coding/app/src/main/res/drawable/ic_bottom_search_no_select.png b/Eden/Clone_Coding/app/src/main/res/drawable/ic_bottom_search_no_select.png new file mode 100644 index 00000000..a77b8c57 Binary files /dev/null and b/Eden/Clone_Coding/app/src/main/res/drawable/ic_bottom_search_no_select.png differ diff --git a/Eden/Clone_Coding/app/src/main/res/drawable/ic_bottom_search_select.png b/Eden/Clone_Coding/app/src/main/res/drawable/ic_bottom_search_select.png new file mode 100644 index 00000000..d5c8a722 Binary files /dev/null and b/Eden/Clone_Coding/app/src/main/res/drawable/ic_bottom_search_select.png differ diff --git a/Eden/Clone_Coding/app/src/main/res/drawable/ic_browse_arrow_right.png b/Eden/Clone_Coding/app/src/main/res/drawable/ic_browse_arrow_right.png new file mode 100644 index 00000000..71b588bf Binary files /dev/null and b/Eden/Clone_Coding/app/src/main/res/drawable/ic_browse_arrow_right.png differ diff --git a/Eden/Clone_Coding/app/src/main/res/drawable/ic_flo_logo.png b/Eden/Clone_Coding/app/src/main/res/drawable/ic_flo_logo.png new file mode 100644 index 00000000..643224de Binary files /dev/null and b/Eden/Clone_Coding/app/src/main/res/drawable/ic_flo_logo.png differ diff --git a/Eden/Clone_Coding/app/src/main/res/drawable/ic_launcher_background.xml b/Eden/Clone_Coding/app/src/main/res/drawable/ic_launcher_background.xml new file mode 100644 index 00000000..07d5da9c --- /dev/null +++ b/Eden/Clone_Coding/app/src/main/res/drawable/ic_launcher_background.xml @@ -0,0 +1,170 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Eden/Clone_Coding/app/src/main/res/drawable/ic_launcher_foreground.xml b/Eden/Clone_Coding/app/src/main/res/drawable/ic_launcher_foreground.xml new file mode 100644 index 00000000..2b068d11 --- /dev/null +++ b/Eden/Clone_Coding/app/src/main/res/drawable/ic_launcher_foreground.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/Eden/Clone_Coding/app/src/main/res/drawable/ic_main_facebook.png b/Eden/Clone_Coding/app/src/main/res/drawable/ic_main_facebook.png new file mode 100644 index 00000000..83e97321 Binary files /dev/null and b/Eden/Clone_Coding/app/src/main/res/drawable/ic_main_facebook.png differ diff --git a/Eden/Clone_Coding/app/src/main/res/drawable/ic_main_facebook_btn.png b/Eden/Clone_Coding/app/src/main/res/drawable/ic_main_facebook_btn.png new file mode 100644 index 00000000..83e97321 Binary files /dev/null and b/Eden/Clone_Coding/app/src/main/res/drawable/ic_main_facebook_btn.png differ diff --git a/Eden/Clone_Coding/app/src/main/res/drawable/ic_main_instagram.png b/Eden/Clone_Coding/app/src/main/res/drawable/ic_main_instagram.png new file mode 100644 index 00000000..398ce614 Binary files /dev/null and b/Eden/Clone_Coding/app/src/main/res/drawable/ic_main_instagram.png differ diff --git a/Eden/Clone_Coding/app/src/main/res/drawable/ic_main_instagram_btn.png b/Eden/Clone_Coding/app/src/main/res/drawable/ic_main_instagram_btn.png new file mode 100644 index 00000000..398ce614 Binary files /dev/null and b/Eden/Clone_Coding/app/src/main/res/drawable/ic_main_instagram_btn.png differ diff --git a/Eden/Clone_Coding/app/src/main/res/drawable/ic_main_twitter.png b/Eden/Clone_Coding/app/src/main/res/drawable/ic_main_twitter.png new file mode 100644 index 00000000..6ddc68ee Binary files /dev/null and b/Eden/Clone_Coding/app/src/main/res/drawable/ic_main_twitter.png differ diff --git a/Eden/Clone_Coding/app/src/main/res/drawable/ic_main_twitter_btn.png b/Eden/Clone_Coding/app/src/main/res/drawable/ic_main_twitter_btn.png new file mode 100644 index 00000000..6ddc68ee Binary files /dev/null and b/Eden/Clone_Coding/app/src/main/res/drawable/ic_main_twitter_btn.png differ diff --git a/Eden/Clone_Coding/app/src/main/res/drawable/ic_main_youtube.png b/Eden/Clone_Coding/app/src/main/res/drawable/ic_main_youtube.png new file mode 100644 index 00000000..0c4ec932 Binary files /dev/null and b/Eden/Clone_Coding/app/src/main/res/drawable/ic_main_youtube.png differ diff --git a/Eden/Clone_Coding/app/src/main/res/drawable/ic_main_youtube_btn.png b/Eden/Clone_Coding/app/src/main/res/drawable/ic_main_youtube_btn.png new file mode 100644 index 00000000..0c4ec932 Binary files /dev/null and b/Eden/Clone_Coding/app/src/main/res/drawable/ic_main_youtube_btn.png differ diff --git a/Eden/Clone_Coding/app/src/main/res/drawable/ic_my_like_off.png b/Eden/Clone_Coding/app/src/main/res/drawable/ic_my_like_off.png new file mode 100644 index 00000000..c06e139d Binary files /dev/null and b/Eden/Clone_Coding/app/src/main/res/drawable/ic_my_like_off.png differ diff --git a/Eden/Clone_Coding/app/src/main/res/drawable/ic_my_like_on.png b/Eden/Clone_Coding/app/src/main/res/drawable/ic_my_like_on.png new file mode 100644 index 00000000..22577c0b Binary files /dev/null and b/Eden/Clone_Coding/app/src/main/res/drawable/ic_my_like_on.png differ diff --git a/Eden/Clone_Coding/app/src/main/res/drawable/ico_20_logo_tid_white.png b/Eden/Clone_Coding/app/src/main/res/drawable/ico_20_logo_tid_white.png new file mode 100644 index 00000000..c6f4d4f9 Binary files /dev/null and b/Eden/Clone_Coding/app/src/main/res/drawable/ico_20_logo_tid_white.png differ diff --git a/Eden/Clone_Coding/app/src/main/res/drawable/icon_browse_arrow_right.png b/Eden/Clone_Coding/app/src/main/res/drawable/icon_browse_arrow_right.png new file mode 100644 index 00000000..71b588bf Binary files /dev/null and b/Eden/Clone_Coding/app/src/main/res/drawable/icon_browse_arrow_right.png differ diff --git a/Eden/Clone_Coding/app/src/main/res/drawable/img_album_exp.png b/Eden/Clone_Coding/app/src/main/res/drawable/img_album_exp.png new file mode 100644 index 00000000..6e3f38af Binary files /dev/null and b/Eden/Clone_Coding/app/src/main/res/drawable/img_album_exp.png differ diff --git a/Eden/Clone_Coding/app/src/main/res/drawable/img_album_exp2.png b/Eden/Clone_Coding/app/src/main/res/drawable/img_album_exp2.png new file mode 100644 index 00000000..28ea3ee5 Binary files /dev/null and b/Eden/Clone_Coding/app/src/main/res/drawable/img_album_exp2.png differ diff --git a/Eden/Clone_Coding/app/src/main/res/drawable/img_album_exp3.jpg b/Eden/Clone_Coding/app/src/main/res/drawable/img_album_exp3.jpg new file mode 100644 index 00000000..66416001 Binary files /dev/null and b/Eden/Clone_Coding/app/src/main/res/drawable/img_album_exp3.jpg differ diff --git a/Eden/Clone_Coding/app/src/main/res/drawable/img_album_exp4.jpg b/Eden/Clone_Coding/app/src/main/res/drawable/img_album_exp4.jpg new file mode 100644 index 00000000..aecebb6a Binary files /dev/null and b/Eden/Clone_Coding/app/src/main/res/drawable/img_album_exp4.jpg differ diff --git a/Eden/Clone_Coding/app/src/main/res/drawable/img_album_exp5.jpg b/Eden/Clone_Coding/app/src/main/res/drawable/img_album_exp5.jpg new file mode 100644 index 00000000..6a8d8701 Binary files /dev/null and b/Eden/Clone_Coding/app/src/main/res/drawable/img_album_exp5.jpg differ diff --git a/Eden/Clone_Coding/app/src/main/res/drawable/img_album_exp6.jpg b/Eden/Clone_Coding/app/src/main/res/drawable/img_album_exp6.jpg new file mode 100644 index 00000000..48202f2d Binary files /dev/null and b/Eden/Clone_Coding/app/src/main/res/drawable/img_album_exp6.jpg differ diff --git a/Eden/Clone_Coding/app/src/main/res/drawable/img_album_lp.png b/Eden/Clone_Coding/app/src/main/res/drawable/img_album_lp.png new file mode 100644 index 00000000..29fb1b4d Binary files /dev/null and b/Eden/Clone_Coding/app/src/main/res/drawable/img_album_lp.png differ diff --git a/Eden/Clone_Coding/app/src/main/res/drawable/img_album_phj.jpg b/Eden/Clone_Coding/app/src/main/res/drawable/img_album_phj.jpg new file mode 100644 index 00000000..fe7717f0 Binary files /dev/null and b/Eden/Clone_Coding/app/src/main/res/drawable/img_album_phj.jpg differ diff --git a/Eden/Clone_Coding/app/src/main/res/drawable/img_default_4_x_1.png b/Eden/Clone_Coding/app/src/main/res/drawable/img_default_4_x_1.png new file mode 100644 index 00000000..926d34f5 Binary files /dev/null and b/Eden/Clone_Coding/app/src/main/res/drawable/img_default_4_x_1.png differ diff --git a/Eden/Clone_Coding/app/src/main/res/drawable/img_first_album_default.png b/Eden/Clone_Coding/app/src/main/res/drawable/img_first_album_default.png new file mode 100644 index 00000000..926d34f5 Binary files /dev/null and b/Eden/Clone_Coding/app/src/main/res/drawable/img_first_album_default.png differ diff --git a/Eden/Clone_Coding/app/src/main/res/drawable/img_home_viewpager_exp.png b/Eden/Clone_Coding/app/src/main/res/drawable/img_home_viewpager_exp.png new file mode 100644 index 00000000..da780323 Binary files /dev/null and b/Eden/Clone_Coding/app/src/main/res/drawable/img_home_viewpager_exp.png differ diff --git a/Eden/Clone_Coding/app/src/main/res/drawable/img_home_viewpager_exp2.png b/Eden/Clone_Coding/app/src/main/res/drawable/img_home_viewpager_exp2.png new file mode 100644 index 00000000..50fa4be8 Binary files /dev/null and b/Eden/Clone_Coding/app/src/main/res/drawable/img_home_viewpager_exp2.png differ diff --git a/Eden/Clone_Coding/app/src/main/res/drawable/img_jenre_exp_1.png b/Eden/Clone_Coding/app/src/main/res/drawable/img_jenre_exp_1.png new file mode 100644 index 00000000..0d43e8e4 Binary files /dev/null and b/Eden/Clone_Coding/app/src/main/res/drawable/img_jenre_exp_1.png differ diff --git a/Eden/Clone_Coding/app/src/main/res/drawable/img_jenre_exp_2.png b/Eden/Clone_Coding/app/src/main/res/drawable/img_jenre_exp_2.png new file mode 100644 index 00000000..f03efb22 Binary files /dev/null and b/Eden/Clone_Coding/app/src/main/res/drawable/img_jenre_exp_2.png differ diff --git a/Eden/Clone_Coding/app/src/main/res/drawable/img_jenre_exp_3.png b/Eden/Clone_Coding/app/src/main/res/drawable/img_jenre_exp_3.png new file mode 100644 index 00000000..51de6849 Binary files /dev/null and b/Eden/Clone_Coding/app/src/main/res/drawable/img_jenre_exp_3.png differ diff --git a/Eden/Clone_Coding/app/src/main/res/drawable/img_phj_bus.jpg b/Eden/Clone_Coding/app/src/main/res/drawable/img_phj_bus.jpg new file mode 100644 index 00000000..68e23c3e Binary files /dev/null and b/Eden/Clone_Coding/app/src/main/res/drawable/img_phj_bus.jpg differ diff --git a/Eden/Clone_Coding/app/src/main/res/drawable/img_phj_good.jpg b/Eden/Clone_Coding/app/src/main/res/drawable/img_phj_good.jpg new file mode 100644 index 00000000..e6b8c9da Binary files /dev/null and b/Eden/Clone_Coding/app/src/main/res/drawable/img_phj_good.jpg differ diff --git a/Eden/Clone_Coding/app/src/main/res/drawable/img_phj_logo.png b/Eden/Clone_Coding/app/src/main/res/drawable/img_phj_logo.png new file mode 100644 index 00000000..b43e0c64 Binary files /dev/null and b/Eden/Clone_Coding/app/src/main/res/drawable/img_phj_logo.png differ diff --git a/Eden/Clone_Coding/app/src/main/res/drawable/img_phj_piano.jpg b/Eden/Clone_Coding/app/src/main/res/drawable/img_phj_piano.jpg new file mode 100644 index 00000000..d458a543 Binary files /dev/null and b/Eden/Clone_Coding/app/src/main/res/drawable/img_phj_piano.jpg differ diff --git a/Eden/Clone_Coding/app/src/main/res/drawable/img_phj_poster.jpg b/Eden/Clone_Coding/app/src/main/res/drawable/img_phj_poster.jpg new file mode 100644 index 00000000..09c18a12 Binary files /dev/null and b/Eden/Clone_Coding/app/src/main/res/drawable/img_phj_poster.jpg differ diff --git a/Eden/Clone_Coding/app/src/main/res/drawable/img_phj_um.png b/Eden/Clone_Coding/app/src/main/res/drawable/img_phj_um.png new file mode 100644 index 00000000..dc3d2ac4 Binary files /dev/null and b/Eden/Clone_Coding/app/src/main/res/drawable/img_phj_um.png differ diff --git a/Eden/Clone_Coding/app/src/main/res/drawable/img_potcast_exp.png b/Eden/Clone_Coding/app/src/main/res/drawable/img_potcast_exp.png new file mode 100644 index 00000000..50a46e03 Binary files /dev/null and b/Eden/Clone_Coding/app/src/main/res/drawable/img_potcast_exp.png differ diff --git a/Eden/Clone_Coding/app/src/main/res/drawable/img_video_exp.png b/Eden/Clone_Coding/app/src/main/res/drawable/img_video_exp.png new file mode 100644 index 00000000..7f6b05f2 Binary files /dev/null and b/Eden/Clone_Coding/app/src/main/res/drawable/img_video_exp.png differ diff --git a/Eden/Clone_Coding/app/src/main/res/drawable/kakako_44.png b/Eden/Clone_Coding/app/src/main/res/drawable/kakako_44.png new file mode 100644 index 00000000..243298e0 Binary files /dev/null and b/Eden/Clone_Coding/app/src/main/res/drawable/kakako_44.png differ diff --git a/Eden/Clone_Coding/app/src/main/res/drawable/main_btm_color_selector.xml b/Eden/Clone_Coding/app/src/main/res/drawable/main_btm_color_selector.xml new file mode 100644 index 00000000..3ecf8a7a --- /dev/null +++ b/Eden/Clone_Coding/app/src/main/res/drawable/main_btm_color_selector.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/Eden/Clone_Coding/app/src/main/res/drawable/main_btm_home_selector.xml b/Eden/Clone_Coding/app/src/main/res/drawable/main_btm_home_selector.xml new file mode 100644 index 00000000..b018478e --- /dev/null +++ b/Eden/Clone_Coding/app/src/main/res/drawable/main_btm_home_selector.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/Eden/Clone_Coding/app/src/main/res/drawable/main_btm_look_selector.xml b/Eden/Clone_Coding/app/src/main/res/drawable/main_btm_look_selector.xml new file mode 100644 index 00000000..89ced75d --- /dev/null +++ b/Eden/Clone_Coding/app/src/main/res/drawable/main_btm_look_selector.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/Eden/Clone_Coding/app/src/main/res/drawable/main_btm_my_selector.xml b/Eden/Clone_Coding/app/src/main/res/drawable/main_btm_my_selector.xml new file mode 100644 index 00000000..d6739bf2 --- /dev/null +++ b/Eden/Clone_Coding/app/src/main/res/drawable/main_btm_my_selector.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/Eden/Clone_Coding/app/src/main/res/drawable/main_btm_search_selector.xml b/Eden/Clone_Coding/app/src/main/res/drawable/main_btm_search_selector.xml new file mode 100644 index 00000000..e6e823fd --- /dev/null +++ b/Eden/Clone_Coding/app/src/main/res/drawable/main_btm_search_selector.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/Eden/Clone_Coding/app/src/main/res/drawable/naver_44.png b/Eden/Clone_Coding/app/src/main/res/drawable/naver_44.png new file mode 100644 index 00000000..d9844877 Binary files /dev/null and b/Eden/Clone_Coding/app/src/main/res/drawable/naver_44.png differ diff --git a/Eden/Clone_Coding/app/src/main/res/drawable/nugu_btn_down.png b/Eden/Clone_Coding/app/src/main/res/drawable/nugu_btn_down.png new file mode 100644 index 00000000..03a04c57 Binary files /dev/null and b/Eden/Clone_Coding/app/src/main/res/drawable/nugu_btn_down.png differ diff --git a/Eden/Clone_Coding/app/src/main/res/drawable/nugu_btn_pause_32.png b/Eden/Clone_Coding/app/src/main/res/drawable/nugu_btn_pause_32.png new file mode 100644 index 00000000..9388aa33 Binary files /dev/null and b/Eden/Clone_Coding/app/src/main/res/drawable/nugu_btn_pause_32.png differ diff --git a/Eden/Clone_Coding/app/src/main/res/drawable/nugu_btn_play_32.png b/Eden/Clone_Coding/app/src/main/res/drawable/nugu_btn_play_32.png new file mode 100644 index 00000000..b781e4c8 Binary files /dev/null and b/Eden/Clone_Coding/app/src/main/res/drawable/nugu_btn_play_32.png differ diff --git a/Eden/Clone_Coding/app/src/main/res/drawable/nugu_btn_random_inactive.png b/Eden/Clone_Coding/app/src/main/res/drawable/nugu_btn_random_inactive.png new file mode 100644 index 00000000..fe4f880b Binary files /dev/null and b/Eden/Clone_Coding/app/src/main/res/drawable/nugu_btn_random_inactive.png differ diff --git a/Eden/Clone_Coding/app/src/main/res/drawable/nugu_btn_repeat_all_active.png b/Eden/Clone_Coding/app/src/main/res/drawable/nugu_btn_repeat_all_active.png new file mode 100644 index 00000000..11ce3016 Binary files /dev/null and b/Eden/Clone_Coding/app/src/main/res/drawable/nugu_btn_repeat_all_active.png differ diff --git a/Eden/Clone_Coding/app/src/main/res/drawable/nugu_btn_repeat_inactive.png b/Eden/Clone_Coding/app/src/main/res/drawable/nugu_btn_repeat_inactive.png new file mode 100644 index 00000000..1e4044dc Binary files /dev/null and b/Eden/Clone_Coding/app/src/main/res/drawable/nugu_btn_repeat_inactive.png differ diff --git a/Eden/Clone_Coding/app/src/main/res/drawable/nugu_btn_repeat_one_active.png b/Eden/Clone_Coding/app/src/main/res/drawable/nugu_btn_repeat_one_active.png new file mode 100644 index 00000000..e0eff902 Binary files /dev/null and b/Eden/Clone_Coding/app/src/main/res/drawable/nugu_btn_repeat_one_active.png differ diff --git a/Eden/Clone_Coding/app/src/main/res/drawable/nugu_btn_skip_next_32.png b/Eden/Clone_Coding/app/src/main/res/drawable/nugu_btn_skip_next_32.png new file mode 100644 index 00000000..fc02f28f Binary files /dev/null and b/Eden/Clone_Coding/app/src/main/res/drawable/nugu_btn_skip_next_32.png differ diff --git a/Eden/Clone_Coding/app/src/main/res/drawable/nugu_btn_skip_previous_32.png b/Eden/Clone_Coding/app/src/main/res/drawable/nugu_btn_skip_previous_32.png new file mode 100644 index 00000000..03ec854c Binary files /dev/null and b/Eden/Clone_Coding/app/src/main/res/drawable/nugu_btn_skip_previous_32.png differ diff --git a/Eden/Clone_Coding/app/src/main/res/drawable/splash.xml b/Eden/Clone_Coding/app/src/main/res/drawable/splash.xml new file mode 100644 index 00000000..ace8a7d8 --- /dev/null +++ b/Eden/Clone_Coding/app/src/main/res/drawable/splash.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/Eden/Clone_Coding/app/src/main/res/drawable/textview_background_radius.xml b/Eden/Clone_Coding/app/src/main/res/drawable/textview_background_radius.xml new file mode 100644 index 00000000..53beead7 --- /dev/null +++ b/Eden/Clone_Coding/app/src/main/res/drawable/textview_background_radius.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + diff --git a/Eden/Clone_Coding/app/src/main/res/drawable/textview_background_select_color_radius.xml b/Eden/Clone_Coding/app/src/main/res/drawable/textview_background_select_color_radius.xml new file mode 100644 index 00000000..ea8dc88c --- /dev/null +++ b/Eden/Clone_Coding/app/src/main/res/drawable/textview_background_select_color_radius.xml @@ -0,0 +1,13 @@ + + + + + + + + + diff --git a/Eden/Clone_Coding/app/src/main/res/drawable/widget_black_play.png b/Eden/Clone_Coding/app/src/main/res/drawable/widget_black_play.png new file mode 100644 index 00000000..0ec27005 Binary files /dev/null and b/Eden/Clone_Coding/app/src/main/res/drawable/widget_black_play.png differ diff --git a/Eden/Clone_Coding/app/src/main/res/layout/activity_main.xml b/Eden/Clone_Coding/app/src/main/res/layout/activity_main.xml new file mode 100644 index 00000000..ac61fc50 --- /dev/null +++ b/Eden/Clone_Coding/app/src/main/res/layout/activity_main.xml @@ -0,0 +1,131 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Eden/Clone_Coding/app/src/main/res/layout/activity_song.xml b/Eden/Clone_Coding/app/src/main/res/layout/activity_song.xml new file mode 100644 index 00000000..d282f958 --- /dev/null +++ b/Eden/Clone_Coding/app/src/main/res/layout/activity_song.xml @@ -0,0 +1,284 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Eden/Clone_Coding/app/src/main/res/layout/fragment_album.xml b/Eden/Clone_Coding/app/src/main/res/layout/fragment_album.xml new file mode 100644 index 00000000..a709af8a --- /dev/null +++ b/Eden/Clone_Coding/app/src/main/res/layout/fragment_album.xml @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Eden/Clone_Coding/app/src/main/res/layout/fragment_banner.xml b/Eden/Clone_Coding/app/src/main/res/layout/fragment_banner.xml new file mode 100644 index 00000000..ff8b14ef --- /dev/null +++ b/Eden/Clone_Coding/app/src/main/res/layout/fragment_banner.xml @@ -0,0 +1,21 @@ + + + + + + + \ No newline at end of file diff --git a/Eden/Clone_Coding/app/src/main/res/layout/fragment_detail.xml b/Eden/Clone_Coding/app/src/main/res/layout/fragment_detail.xml new file mode 100644 index 00000000..413125cb --- /dev/null +++ b/Eden/Clone_Coding/app/src/main/res/layout/fragment_detail.xml @@ -0,0 +1,17 @@ + + + + + + \ No newline at end of file diff --git a/Eden/Clone_Coding/app/src/main/res/layout/fragment_home.xml b/Eden/Clone_Coding/app/src/main/res/layout/fragment_home.xml new file mode 100644 index 00000000..9f561f56 --- /dev/null +++ b/Eden/Clone_Coding/app/src/main/res/layout/fragment_home.xml @@ -0,0 +1,341 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Eden/Clone_Coding/app/src/main/res/layout/fragment_home_panel1.xml b/Eden/Clone_Coding/app/src/main/res/layout/fragment_home_panel1.xml new file mode 100644 index 00000000..9aceed7d --- /dev/null +++ b/Eden/Clone_Coding/app/src/main/res/layout/fragment_home_panel1.xml @@ -0,0 +1,88 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Eden/Clone_Coding/app/src/main/res/layout/fragment_home_panel2.xml b/Eden/Clone_Coding/app/src/main/res/layout/fragment_home_panel2.xml new file mode 100644 index 00000000..e510b380 --- /dev/null +++ b/Eden/Clone_Coding/app/src/main/res/layout/fragment_home_panel2.xml @@ -0,0 +1,88 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Eden/Clone_Coding/app/src/main/res/layout/fragment_home_panel3.xml b/Eden/Clone_Coding/app/src/main/res/layout/fragment_home_panel3.xml new file mode 100644 index 00000000..ce116a7a --- /dev/null +++ b/Eden/Clone_Coding/app/src/main/res/layout/fragment_home_panel3.xml @@ -0,0 +1,88 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Eden/Clone_Coding/app/src/main/res/layout/fragment_locker.xml b/Eden/Clone_Coding/app/src/main/res/layout/fragment_locker.xml new file mode 100644 index 00000000..364d796f --- /dev/null +++ b/Eden/Clone_Coding/app/src/main/res/layout/fragment_locker.xml @@ -0,0 +1,105 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/Eden/Clone_Coding/app/src/main/res/layout/fragment_look.xml b/Eden/Clone_Coding/app/src/main/res/layout/fragment_look.xml new file mode 100644 index 00000000..6912b1ad --- /dev/null +++ b/Eden/Clone_Coding/app/src/main/res/layout/fragment_look.xml @@ -0,0 +1,515 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Eden/Clone_Coding/app/src/main/res/layout/fragment_music_file.xml b/Eden/Clone_Coding/app/src/main/res/layout/fragment_music_file.xml new file mode 100644 index 00000000..34d10323 --- /dev/null +++ b/Eden/Clone_Coding/app/src/main/res/layout/fragment_music_file.xml @@ -0,0 +1,21 @@ + + + + + + \ No newline at end of file diff --git a/Eden/Clone_Coding/app/src/main/res/layout/fragment_saved_song.xml b/Eden/Clone_Coding/app/src/main/res/layout/fragment_saved_song.xml new file mode 100644 index 00000000..a515809a --- /dev/null +++ b/Eden/Clone_Coding/app/src/main/res/layout/fragment_saved_song.xml @@ -0,0 +1,17 @@ + + + + + \ No newline at end of file diff --git a/Eden/Clone_Coding/app/src/main/res/layout/fragment_search.xml b/Eden/Clone_Coding/app/src/main/res/layout/fragment_search.xml new file mode 100644 index 00000000..6fbc0a95 --- /dev/null +++ b/Eden/Clone_Coding/app/src/main/res/layout/fragment_search.xml @@ -0,0 +1,16 @@ + + + + + + \ No newline at end of file diff --git a/Eden/Clone_Coding/app/src/main/res/layout/fragment_song.xml b/Eden/Clone_Coding/app/src/main/res/layout/fragment_song.xml new file mode 100644 index 00000000..51aa046c --- /dev/null +++ b/Eden/Clone_Coding/app/src/main/res/layout/fragment_song.xml @@ -0,0 +1,556 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Eden/Clone_Coding/app/src/main/res/layout/fragment_video.xml b/Eden/Clone_Coding/app/src/main/res/layout/fragment_video.xml new file mode 100644 index 00000000..e86dad11 --- /dev/null +++ b/Eden/Clone_Coding/app/src/main/res/layout/fragment_video.xml @@ -0,0 +1,17 @@ + + + + + + \ No newline at end of file diff --git a/Eden/Clone_Coding/app/src/main/res/layout/item_album.xml b/Eden/Clone_Coding/app/src/main/res/layout/item_album.xml new file mode 100644 index 00000000..5eba725e --- /dev/null +++ b/Eden/Clone_Coding/app/src/main/res/layout/item_album.xml @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Eden/Clone_Coding/app/src/main/res/layout/item_locker_song.xml b/Eden/Clone_Coding/app/src/main/res/layout/item_locker_song.xml new file mode 100644 index 00000000..392fd904 --- /dev/null +++ b/Eden/Clone_Coding/app/src/main/res/layout/item_locker_song.xml @@ -0,0 +1,105 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Eden/Clone_Coding/app/src/main/res/menu/bottom_nav_menu.xml b/Eden/Clone_Coding/app/src/main/res/menu/bottom_nav_menu.xml new file mode 100644 index 00000000..9a55b1a3 --- /dev/null +++ b/Eden/Clone_Coding/app/src/main/res/menu/bottom_nav_menu.xml @@ -0,0 +1,28 @@ + + + + + + + + \ No newline at end of file diff --git a/Eden/Clone_Coding/app/src/main/res/mipmap-anydpi-v26/ic_flo_logo_new.xml b/Eden/Clone_Coding/app/src/main/res/mipmap-anydpi-v26/ic_flo_logo_new.xml new file mode 100644 index 00000000..119b7959 --- /dev/null +++ b/Eden/Clone_Coding/app/src/main/res/mipmap-anydpi-v26/ic_flo_logo_new.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/Eden/Clone_Coding/app/src/main/res/mipmap-anydpi-v26/ic_flo_logo_new_round.xml b/Eden/Clone_Coding/app/src/main/res/mipmap-anydpi-v26/ic_flo_logo_new_round.xml new file mode 100644 index 00000000..119b7959 --- /dev/null +++ b/Eden/Clone_Coding/app/src/main/res/mipmap-anydpi-v26/ic_flo_logo_new_round.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/Eden/Clone_Coding/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/Eden/Clone_Coding/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml new file mode 100644 index 00000000..6f3b755b --- /dev/null +++ b/Eden/Clone_Coding/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/Eden/Clone_Coding/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/Eden/Clone_Coding/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml new file mode 100644 index 00000000..6f3b755b --- /dev/null +++ b/Eden/Clone_Coding/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/Eden/Clone_Coding/app/src/main/res/mipmap-hdpi/ic_flo_logo_new.png b/Eden/Clone_Coding/app/src/main/res/mipmap-hdpi/ic_flo_logo_new.png new file mode 100644 index 00000000..0ebd7c43 Binary files /dev/null and b/Eden/Clone_Coding/app/src/main/res/mipmap-hdpi/ic_flo_logo_new.png differ diff --git a/Eden/Clone_Coding/app/src/main/res/mipmap-hdpi/ic_flo_logo_new_foreground.png b/Eden/Clone_Coding/app/src/main/res/mipmap-hdpi/ic_flo_logo_new_foreground.png new file mode 100644 index 00000000..a19c2b5c Binary files /dev/null and b/Eden/Clone_Coding/app/src/main/res/mipmap-hdpi/ic_flo_logo_new_foreground.png differ diff --git a/Eden/Clone_Coding/app/src/main/res/mipmap-hdpi/ic_flo_logo_new_round.png b/Eden/Clone_Coding/app/src/main/res/mipmap-hdpi/ic_flo_logo_new_round.png new file mode 100644 index 00000000..0ebd7c43 Binary files /dev/null and b/Eden/Clone_Coding/app/src/main/res/mipmap-hdpi/ic_flo_logo_new_round.png differ diff --git a/Eden/Clone_Coding/app/src/main/res/mipmap-hdpi/ic_launcher.webp b/Eden/Clone_Coding/app/src/main/res/mipmap-hdpi/ic_launcher.webp new file mode 100644 index 00000000..c209e78e Binary files /dev/null and b/Eden/Clone_Coding/app/src/main/res/mipmap-hdpi/ic_launcher.webp differ diff --git a/Eden/Clone_Coding/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp b/Eden/Clone_Coding/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp new file mode 100644 index 00000000..b2dfe3d1 Binary files /dev/null and b/Eden/Clone_Coding/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp differ diff --git a/Eden/Clone_Coding/app/src/main/res/mipmap-mdpi/ic_flo_logo_new.png b/Eden/Clone_Coding/app/src/main/res/mipmap-mdpi/ic_flo_logo_new.png new file mode 100644 index 00000000..5d294c77 Binary files /dev/null and b/Eden/Clone_Coding/app/src/main/res/mipmap-mdpi/ic_flo_logo_new.png differ diff --git a/Eden/Clone_Coding/app/src/main/res/mipmap-mdpi/ic_flo_logo_new_foreground.png b/Eden/Clone_Coding/app/src/main/res/mipmap-mdpi/ic_flo_logo_new_foreground.png new file mode 100644 index 00000000..efe8e4e7 Binary files /dev/null and b/Eden/Clone_Coding/app/src/main/res/mipmap-mdpi/ic_flo_logo_new_foreground.png differ diff --git a/Eden/Clone_Coding/app/src/main/res/mipmap-mdpi/ic_flo_logo_new_round.png b/Eden/Clone_Coding/app/src/main/res/mipmap-mdpi/ic_flo_logo_new_round.png new file mode 100644 index 00000000..5d294c77 Binary files /dev/null and b/Eden/Clone_Coding/app/src/main/res/mipmap-mdpi/ic_flo_logo_new_round.png differ diff --git a/Eden/Clone_Coding/app/src/main/res/mipmap-mdpi/ic_launcher.webp b/Eden/Clone_Coding/app/src/main/res/mipmap-mdpi/ic_launcher.webp new file mode 100644 index 00000000..4f0f1d64 Binary files /dev/null and b/Eden/Clone_Coding/app/src/main/res/mipmap-mdpi/ic_launcher.webp differ diff --git a/Eden/Clone_Coding/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp b/Eden/Clone_Coding/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp new file mode 100644 index 00000000..62b611da Binary files /dev/null and b/Eden/Clone_Coding/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp differ diff --git a/Eden/Clone_Coding/app/src/main/res/mipmap-xhdpi/ic_flo_logo_new.png b/Eden/Clone_Coding/app/src/main/res/mipmap-xhdpi/ic_flo_logo_new.png new file mode 100644 index 00000000..f49730fe Binary files /dev/null and b/Eden/Clone_Coding/app/src/main/res/mipmap-xhdpi/ic_flo_logo_new.png differ diff --git a/Eden/Clone_Coding/app/src/main/res/mipmap-xhdpi/ic_flo_logo_new_foreground.png b/Eden/Clone_Coding/app/src/main/res/mipmap-xhdpi/ic_flo_logo_new_foreground.png new file mode 100644 index 00000000..186b8cc0 Binary files /dev/null and b/Eden/Clone_Coding/app/src/main/res/mipmap-xhdpi/ic_flo_logo_new_foreground.png differ diff --git a/Eden/Clone_Coding/app/src/main/res/mipmap-xhdpi/ic_flo_logo_new_round.png b/Eden/Clone_Coding/app/src/main/res/mipmap-xhdpi/ic_flo_logo_new_round.png new file mode 100644 index 00000000..f49730fe Binary files /dev/null and b/Eden/Clone_Coding/app/src/main/res/mipmap-xhdpi/ic_flo_logo_new_round.png differ diff --git a/Eden/Clone_Coding/app/src/main/res/mipmap-xhdpi/ic_launcher.webp b/Eden/Clone_Coding/app/src/main/res/mipmap-xhdpi/ic_launcher.webp new file mode 100644 index 00000000..948a3070 Binary files /dev/null and b/Eden/Clone_Coding/app/src/main/res/mipmap-xhdpi/ic_launcher.webp differ diff --git a/Eden/Clone_Coding/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp b/Eden/Clone_Coding/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp new file mode 100644 index 00000000..1b9a6956 Binary files /dev/null and b/Eden/Clone_Coding/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp differ diff --git a/Eden/Clone_Coding/app/src/main/res/mipmap-xxhdpi/ic_flo_logo_new.png b/Eden/Clone_Coding/app/src/main/res/mipmap-xxhdpi/ic_flo_logo_new.png new file mode 100644 index 00000000..d131ae61 Binary files /dev/null and b/Eden/Clone_Coding/app/src/main/res/mipmap-xxhdpi/ic_flo_logo_new.png differ diff --git a/Eden/Clone_Coding/app/src/main/res/mipmap-xxhdpi/ic_flo_logo_new_foreground.png b/Eden/Clone_Coding/app/src/main/res/mipmap-xxhdpi/ic_flo_logo_new_foreground.png new file mode 100644 index 00000000..ee555b5c Binary files /dev/null and b/Eden/Clone_Coding/app/src/main/res/mipmap-xxhdpi/ic_flo_logo_new_foreground.png differ diff --git a/Eden/Clone_Coding/app/src/main/res/mipmap-xxhdpi/ic_flo_logo_new_round.png b/Eden/Clone_Coding/app/src/main/res/mipmap-xxhdpi/ic_flo_logo_new_round.png new file mode 100644 index 00000000..d131ae61 Binary files /dev/null and b/Eden/Clone_Coding/app/src/main/res/mipmap-xxhdpi/ic_flo_logo_new_round.png differ diff --git a/Eden/Clone_Coding/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp b/Eden/Clone_Coding/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp new file mode 100644 index 00000000..28d4b77f Binary files /dev/null and b/Eden/Clone_Coding/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp differ diff --git a/Eden/Clone_Coding/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp b/Eden/Clone_Coding/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp new file mode 100644 index 00000000..9287f508 Binary files /dev/null and b/Eden/Clone_Coding/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp differ diff --git a/Eden/Clone_Coding/app/src/main/res/mipmap-xxxhdpi/ic_flo_logo_new.png b/Eden/Clone_Coding/app/src/main/res/mipmap-xxxhdpi/ic_flo_logo_new.png new file mode 100644 index 00000000..fbd64d49 Binary files /dev/null and b/Eden/Clone_Coding/app/src/main/res/mipmap-xxxhdpi/ic_flo_logo_new.png differ diff --git a/Eden/Clone_Coding/app/src/main/res/mipmap-xxxhdpi/ic_flo_logo_new_foreground.png b/Eden/Clone_Coding/app/src/main/res/mipmap-xxxhdpi/ic_flo_logo_new_foreground.png new file mode 100644 index 00000000..bf1f1771 Binary files /dev/null and b/Eden/Clone_Coding/app/src/main/res/mipmap-xxxhdpi/ic_flo_logo_new_foreground.png differ diff --git a/Eden/Clone_Coding/app/src/main/res/mipmap-xxxhdpi/ic_flo_logo_new_round.png b/Eden/Clone_Coding/app/src/main/res/mipmap-xxxhdpi/ic_flo_logo_new_round.png new file mode 100644 index 00000000..fbd64d49 Binary files /dev/null and b/Eden/Clone_Coding/app/src/main/res/mipmap-xxxhdpi/ic_flo_logo_new_round.png differ diff --git a/Eden/Clone_Coding/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp b/Eden/Clone_Coding/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp new file mode 100644 index 00000000..aa7d6427 Binary files /dev/null and b/Eden/Clone_Coding/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp differ diff --git a/Eden/Clone_Coding/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp b/Eden/Clone_Coding/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp new file mode 100644 index 00000000..9126ae37 Binary files /dev/null and b/Eden/Clone_Coding/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp differ diff --git a/Eden/Clone_Coding/app/src/main/res/raw/music_bboom.mp3 b/Eden/Clone_Coding/app/src/main/res/raw/music_bboom.mp3 new file mode 100644 index 00000000..b5555914 Binary files /dev/null and b/Eden/Clone_Coding/app/src/main/res/raw/music_bboom.mp3 differ diff --git a/Eden/Clone_Coding/app/src/main/res/raw/music_boy.mp3 b/Eden/Clone_Coding/app/src/main/res/raw/music_boy.mp3 new file mode 100644 index 00000000..c19f2391 Binary files /dev/null and b/Eden/Clone_Coding/app/src/main/res/raw/music_boy.mp3 differ diff --git a/Eden/Clone_Coding/app/src/main/res/raw/music_butter.mp3 b/Eden/Clone_Coding/app/src/main/res/raw/music_butter.mp3 new file mode 100644 index 00000000..a6b952fc Binary files /dev/null and b/Eden/Clone_Coding/app/src/main/res/raw/music_butter.mp3 differ diff --git a/Eden/Clone_Coding/app/src/main/res/raw/music_flu.mp3 b/Eden/Clone_Coding/app/src/main/res/raw/music_flu.mp3 new file mode 100644 index 00000000..e6a0d7e4 Binary files /dev/null and b/Eden/Clone_Coding/app/src/main/res/raw/music_flu.mp3 differ diff --git a/Eden/Clone_Coding/app/src/main/res/raw/music_lilac.mp3 b/Eden/Clone_Coding/app/src/main/res/raw/music_lilac.mp3 new file mode 100644 index 00000000..2e3c0d98 Binary files /dev/null and b/Eden/Clone_Coding/app/src/main/res/raw/music_lilac.mp3 differ diff --git a/Eden/Clone_Coding/app/src/main/res/raw/music_next.mp3 b/Eden/Clone_Coding/app/src/main/res/raw/music_next.mp3 new file mode 100644 index 00000000..6261b050 Binary files /dev/null and b/Eden/Clone_Coding/app/src/main/res/raw/music_next.mp3 differ diff --git a/Eden/Clone_Coding/app/src/main/res/raw/music_page.mp3 b/Eden/Clone_Coding/app/src/main/res/raw/music_page.mp3 new file mode 100644 index 00000000..4ffb61ba Binary files /dev/null and b/Eden/Clone_Coding/app/src/main/res/raw/music_page.mp3 differ diff --git a/Eden/Clone_Coding/app/src/main/res/values-night/themes.xml b/Eden/Clone_Coding/app/src/main/res/values-night/themes.xml new file mode 100644 index 00000000..f430368e --- /dev/null +++ b/Eden/Clone_Coding/app/src/main/res/values-night/themes.xml @@ -0,0 +1,16 @@ + + + + \ No newline at end of file diff --git a/Eden/Clone_Coding/app/src/main/res/values/colors.xml b/Eden/Clone_Coding/app/src/main/res/values/colors.xml new file mode 100644 index 00000000..e9c100db --- /dev/null +++ b/Eden/Clone_Coding/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/Eden/Clone_Coding/app/src/main/res/values/ic_flo_logo_new_background.xml b/Eden/Clone_Coding/app/src/main/res/values/ic_flo_logo_new_background.xml new file mode 100644 index 00000000..c261688f --- /dev/null +++ b/Eden/Clone_Coding/app/src/main/res/values/ic_flo_logo_new_background.xml @@ -0,0 +1,4 @@ + + + #FFFFFFFF + \ No newline at end of file diff --git a/Eden/Clone_Coding/app/src/main/res/values/strings.xml b/Eden/Clone_Coding/app/src/main/res/values/strings.xml new file mode 100644 index 00000000..63f5ff1c --- /dev/null +++ b/Eden/Clone_Coding/app/src/main/res/values/strings.xml @@ -0,0 +1,5 @@ + + FLO + + Hello blank fragment + \ No newline at end of file diff --git a/Eden/Clone_Coding/app/src/main/res/values/themes.xml b/Eden/Clone_Coding/app/src/main/res/values/themes.xml new file mode 100644 index 00000000..70ea3eb6 --- /dev/null +++ b/Eden/Clone_Coding/app/src/main/res/values/themes.xml @@ -0,0 +1,34 @@ + + + + + + + + + + \ No newline at end of file diff --git a/Eden/Clone_Coding/app/src/main/res/xml/backup_rules.xml b/Eden/Clone_Coding/app/src/main/res/xml/backup_rules.xml new file mode 100644 index 00000000..fa0f996d --- /dev/null +++ b/Eden/Clone_Coding/app/src/main/res/xml/backup_rules.xml @@ -0,0 +1,13 @@ + + + + \ No newline at end of file diff --git a/Eden/Clone_Coding/app/src/main/res/xml/data_extraction_rules.xml b/Eden/Clone_Coding/app/src/main/res/xml/data_extraction_rules.xml new file mode 100644 index 00000000..9ee9997b --- /dev/null +++ b/Eden/Clone_Coding/app/src/main/res/xml/data_extraction_rules.xml @@ -0,0 +1,19 @@ + + + + + + + \ No newline at end of file diff --git a/Eden/Clone_Coding/app/src/test/java/com/example/clone_coding/ExampleUnitTest.kt b/Eden/Clone_Coding/app/src/test/java/com/example/clone_coding/ExampleUnitTest.kt new file mode 100644 index 00000000..e3f59fa4 --- /dev/null +++ b/Eden/Clone_Coding/app/src/test/java/com/example/clone_coding/ExampleUnitTest.kt @@ -0,0 +1,17 @@ +package com.example.clone_coding + +import org.junit.Test + +import org.junit.Assert.* + +/** + * Example local unit test, which will execute on the development machine (host). + * + * See [testing documentation](http://d.android.com/tools/testing). + */ +class ExampleUnitTest { + @Test + fun addition_isCorrect() { + assertEquals(4, 2 + 2) + } +} \ No newline at end of file diff --git a/Eden/Clone_Coding/build.gradle.kts b/Eden/Clone_Coding/build.gradle.kts new file mode 100644 index 00000000..922f5511 --- /dev/null +++ b/Eden/Clone_Coding/build.gradle.kts @@ -0,0 +1,5 @@ +// Top-level build file where you can add configuration options common to all sub-projects/modules. +plugins { + alias(libs.plugins.android.application) apply false + alias(libs.plugins.kotlin.android) apply false +} \ No newline at end of file diff --git a/Eden/Clone_Coding/gradle.properties b/Eden/Clone_Coding/gradle.properties new file mode 100644 index 00000000..20e2a015 --- /dev/null +++ b/Eden/Clone_Coding/gradle.properties @@ -0,0 +1,23 @@ +# Project-wide Gradle settings. +# IDE (e.g. Android Studio) users: +# Gradle settings configured through the IDE *will override* +# any settings specified in this file. +# For more details on how to configure your build environment visit +# http://www.gradle.org/docs/current/userguide/build_environment.html +# Specifies the JVM arguments used for the daemon process. +# The setting is particularly useful for tweaking memory settings. +org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8 +# When configured, Gradle will run in incubating parallel mode. +# This option should only be used with decoupled projects. For more details, visit +# https://developer.android.com/r/tools/gradle-multi-project-decoupled-projects +# org.gradle.parallel=true +# AndroidX package structure to make it clearer which packages are bundled with the +# Android operating system, and which are packaged with your app's APK +# https://developer.android.com/topic/libraries/support-library/androidx-rn +android.useAndroidX=true +# Kotlin code style for this project: "official" or "obsolete": +kotlin.code.style=official +# Enables namespacing of each library's R class so that its R class includes only the +# resources declared in the library itself and none from the library's dependencies, +# thereby reducing the size of the R class for that library +android.nonTransitiveRClass=true \ No newline at end of file diff --git a/Eden/Clone_Coding/gradle/libs.versions.toml b/Eden/Clone_Coding/gradle/libs.versions.toml new file mode 100644 index 00000000..b389df4c --- /dev/null +++ b/Eden/Clone_Coding/gradle/libs.versions.toml @@ -0,0 +1,37 @@ +[versions] +agp = "8.6.0" +kotlin = "1.9.0" +coreKtx = "1.13.1" +junit = "4.13.2" +junitVersion = "1.2.1" +espressoCore = "3.6.1" +appcompat = "1.7.0" +material = "1.12.0" +activity = "1.9.2" +constraintlayout = "2.1.4" +viewpager2 = "1.0.0" +circleIndicator = "2.1.6" +core-splashscreen = "1.0.0" +gson = "2.8.2" + + +[libraries] +androidx-core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "coreKtx" } +junit = { group = "junit", name = "junit", version.ref = "junit" } +androidx-junit = { group = "androidx.test.ext", name = "junit", version.ref = "junitVersion" } +androidx-espresso-core = { group = "androidx.test.espresso", name = "espresso-core", version.ref = "espressoCore" } +androidx-appcompat = { group = "androidx.appcompat", name = "appcompat", version.ref = "appcompat" } +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" } +androidx-viewpager2 = { group = "androidx.viewpager2", name = "viewpager2", version.ref = "viewpager2" } +circle-indicator = { group = "me.relex", name = "circleindicator", version.ref = "circleIndicator" } +androidx-core-splashscreen = { module = "androidx.core:core-splashscreen", version.ref = "core-splashscreen" } +gson = { group = "com.google.code.gson", name = "gson", version.ref = "gson" } + + + +[plugins] +android-application = { id = "com.android.application", version.ref = "agp" } +kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" } + diff --git a/Eden/Clone_Coding/gradle/wrapper/gradle-wrapper.jar b/Eden/Clone_Coding/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 00000000..e708b1c0 Binary files /dev/null and b/Eden/Clone_Coding/gradle/wrapper/gradle-wrapper.jar differ diff --git a/Eden/Clone_Coding/gradle/wrapper/gradle-wrapper.properties b/Eden/Clone_Coding/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 00000000..60a68eeb --- /dev/null +++ b/Eden/Clone_Coding/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,6 @@ +#Wed Oct 09 02:20:03 KST 2024 +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/Eden/Clone_Coding/gradlew b/Eden/Clone_Coding/gradlew new file mode 100644 index 00000000..4f906e0c --- /dev/null +++ b/Eden/Clone_Coding/gradlew @@ -0,0 +1,185 @@ +#!/usr/bin/env sh + +# +# Copyright 2015 the original author or authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn () { + echo "$*" +} + +die () { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; + NONSTOP* ) + nonstop=true + ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin or MSYS, switch paths to Windows format before running java +if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=`expr $i + 1` + done + case $i in + 0) set -- ;; + 1) set -- "$args0" ;; + 2) set -- "$args0" "$args1" ;; + 3) set -- "$args0" "$args1" "$args2" ;; + 4) set -- "$args0" "$args1" "$args2" "$args3" ;; + 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " +} +APP_ARGS=`save "$@"` + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +exec "$JAVACMD" "$@" diff --git a/Eden/Clone_Coding/gradlew.bat b/Eden/Clone_Coding/gradlew.bat new file mode 100644 index 00000000..107acd32 --- /dev/null +++ b/Eden/Clone_Coding/gradlew.bat @@ -0,0 +1,89 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto execute + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/Eden/Clone_Coding/settings.gradle.kts b/Eden/Clone_Coding/settings.gradle.kts new file mode 100644 index 00000000..e5210cba --- /dev/null +++ b/Eden/Clone_Coding/settings.gradle.kts @@ -0,0 +1,24 @@ +pluginManagement { + repositories { + google { + content { + includeGroupByRegex("com\\.android.*") + includeGroupByRegex("com\\.google.*") + includeGroupByRegex("androidx.*") + } + } + mavenCentral() + gradlePluginPortal() + } +} +dependencyResolutionManagement { + repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) + repositories { + google() + mavenCentral() + } +} + +rootProject.name = "Clone_Coding" +include(":app") + \ No newline at end of file diff --git a/Eden/app/.gitignore b/Eden/app/.gitignore new file mode 100644 index 00000000..42afabfd --- /dev/null +++ b/Eden/app/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/Eden/app/build.gradle.kts b/Eden/app/build.gradle.kts new file mode 100644 index 00000000..0a68c777 --- /dev/null +++ b/Eden/app/build.gradle.kts @@ -0,0 +1,51 @@ +plugins { + alias(libs.plugins.android.application) + alias(libs.plugins.kotlin.android) +} + +android { + namespace = "com.example.week5" + compileSdk = 34 + + defaultConfig { + applicationId = "com.example.week5" + minSdk = 30 + targetSdk = 34 + versionCode = 1 + versionName = "1.0" + + testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" + } + + buildTypes { + release { + isMinifyEnabled = false + proguardFiles( + getDefaultProguardFile("proguard-android-optimize.txt"), + "proguard-rules.pro" + ) + } + } + compileOptions { + sourceCompatibility = JavaVersion.VERSION_1_8 + targetCompatibility = JavaVersion.VERSION_1_8 + } + kotlinOptions { + jvmTarget = "1.8" + } + buildFeatures { + viewBinding = true + } +} + +dependencies { + + implementation(libs.androidx.core.ktx) + implementation(libs.androidx.appcompat) + implementation(libs.material) + implementation(libs.androidx.activity) + implementation(libs.androidx.constraintlayout) + testImplementation(libs.junit) + androidTestImplementation(libs.androidx.junit) + androidTestImplementation(libs.androidx.espresso.core) +} \ No newline at end of file diff --git a/Eden/app/proguard-rules.pro b/Eden/app/proguard-rules.pro new file mode 100644 index 00000000..481bb434 --- /dev/null +++ b/Eden/app/proguard-rules.pro @@ -0,0 +1,21 @@ +# Add project specific ProGuard rules here. +# You can control the set of applied configuration files using the +# proguardFiles setting in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable + +# If you keep the line number information, uncomment this to +# hide the original source file name. +#-renamesourcefileattribute SourceFile \ No newline at end of file diff --git a/Eden/app/src/androidTest/java/com/example/week5/ExampleInstrumentedTest.kt b/Eden/app/src/androidTest/java/com/example/week5/ExampleInstrumentedTest.kt new file mode 100644 index 00000000..0163bc0f --- /dev/null +++ b/Eden/app/src/androidTest/java/com/example/week5/ExampleInstrumentedTest.kt @@ -0,0 +1,24 @@ +package com.example.week5 + +import androidx.test.platform.app.InstrumentationRegistry +import androidx.test.ext.junit.runners.AndroidJUnit4 + +import org.junit.Test +import org.junit.runner.RunWith + +import org.junit.Assert.* + +/** + * Instrumented test, which will execute on an Android device. + * + * See [testing documentation](http://d.android.com/tools/testing). + */ +@RunWith(AndroidJUnit4::class) +class ExampleInstrumentedTest { + @Test + fun useAppContext() { + // Context of the app under test. + val appContext = InstrumentationRegistry.getInstrumentation().targetContext + assertEquals("com.example.week5", appContext.packageName) + } +} \ No newline at end of file diff --git a/Eden/app/src/main/AndroidManifest.xml b/Eden/app/src/main/AndroidManifest.xml new file mode 100644 index 00000000..e7096f48 --- /dev/null +++ b/Eden/app/src/main/AndroidManifest.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Eden/app/src/main/java/com/example/week5/MainActivity.kt b/Eden/app/src/main/java/com/example/week5/MainActivity.kt new file mode 100644 index 00000000..5758f1f4 --- /dev/null +++ b/Eden/app/src/main/java/com/example/week5/MainActivity.kt @@ -0,0 +1,15 @@ +package com.example.week5 + +import android.os.Bundle +import androidx.activity.enableEdgeToEdge +import androidx.appcompat.app.AppCompatActivity +import androidx.core.view.ViewCompat +import androidx.core.view.WindowInsetsCompat + +class MainActivity : AppCompatActivity() { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_main) + + } +} \ No newline at end of file diff --git a/Eden/app/src/main/res/drawable/baseline_note_24.xml b/Eden/app/src/main/res/drawable/baseline_note_24.xml new file mode 100644 index 00000000..3c55384e --- /dev/null +++ b/Eden/app/src/main/res/drawable/baseline_note_24.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/Eden/app/src/main/res/drawable/ic_launcher_background.xml b/Eden/app/src/main/res/drawable/ic_launcher_background.xml new file mode 100644 index 00000000..07d5da9c --- /dev/null +++ b/Eden/app/src/main/res/drawable/ic_launcher_background.xml @@ -0,0 +1,170 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Eden/app/src/main/res/drawable/ic_launcher_foreground.xml b/Eden/app/src/main/res/drawable/ic_launcher_foreground.xml new file mode 100644 index 00000000..2b068d11 --- /dev/null +++ b/Eden/app/src/main/res/drawable/ic_launcher_foreground.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/Eden/app/src/main/res/layout/activity_main.xml b/Eden/app/src/main/res/layout/activity_main.xml new file mode 100644 index 00000000..9affce0f --- /dev/null +++ b/Eden/app/src/main/res/layout/activity_main.xml @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/Eden/app/src/main/res/mipmap-anydpi/ic_launcher.xml b/Eden/app/src/main/res/mipmap-anydpi/ic_launcher.xml new file mode 100644 index 00000000..6f3b755b --- /dev/null +++ b/Eden/app/src/main/res/mipmap-anydpi/ic_launcher.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/Eden/app/src/main/res/mipmap-anydpi/ic_launcher_round.xml b/Eden/app/src/main/res/mipmap-anydpi/ic_launcher_round.xml new file mode 100644 index 00000000..6f3b755b --- /dev/null +++ b/Eden/app/src/main/res/mipmap-anydpi/ic_launcher_round.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/Eden/app/src/main/res/mipmap-hdpi/ic_launcher.webp b/Eden/app/src/main/res/mipmap-hdpi/ic_launcher.webp new file mode 100644 index 00000000..c209e78e Binary files /dev/null and b/Eden/app/src/main/res/mipmap-hdpi/ic_launcher.webp differ diff --git a/Eden/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp b/Eden/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp new file mode 100644 index 00000000..b2dfe3d1 Binary files /dev/null and b/Eden/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp differ diff --git a/Eden/app/src/main/res/mipmap-mdpi/ic_launcher.webp b/Eden/app/src/main/res/mipmap-mdpi/ic_launcher.webp new file mode 100644 index 00000000..4f0f1d64 Binary files /dev/null and b/Eden/app/src/main/res/mipmap-mdpi/ic_launcher.webp differ diff --git a/Eden/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp b/Eden/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp new file mode 100644 index 00000000..62b611da Binary files /dev/null and b/Eden/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp differ diff --git a/Eden/app/src/main/res/mipmap-xhdpi/ic_launcher.webp b/Eden/app/src/main/res/mipmap-xhdpi/ic_launcher.webp new file mode 100644 index 00000000..948a3070 Binary files /dev/null and b/Eden/app/src/main/res/mipmap-xhdpi/ic_launcher.webp differ diff --git a/Eden/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp b/Eden/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp new file mode 100644 index 00000000..1b9a6956 Binary files /dev/null and b/Eden/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp differ diff --git a/Eden/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp b/Eden/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp new file mode 100644 index 00000000..28d4b77f Binary files /dev/null and b/Eden/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp differ diff --git a/Eden/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp b/Eden/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp new file mode 100644 index 00000000..9287f508 Binary files /dev/null and b/Eden/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp differ diff --git a/Eden/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp b/Eden/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp new file mode 100644 index 00000000..aa7d6427 Binary files /dev/null and b/Eden/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp differ diff --git a/Eden/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp b/Eden/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp new file mode 100644 index 00000000..9126ae37 Binary files /dev/null and b/Eden/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp differ diff --git a/Eden/app/src/main/res/values-night/themes.xml b/Eden/app/src/main/res/values-night/themes.xml new file mode 100644 index 00000000..1aa047b9 --- /dev/null +++ b/Eden/app/src/main/res/values-night/themes.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/Eden/app/src/main/res/values/colors.xml b/Eden/app/src/main/res/values/colors.xml new file mode 100644 index 00000000..c8524cd9 --- /dev/null +++ b/Eden/app/src/main/res/values/colors.xml @@ -0,0 +1,5 @@ + + + #FF000000 + #FFFFFFFF + \ No newline at end of file diff --git a/Eden/app/src/main/res/values/strings.xml b/Eden/app/src/main/res/values/strings.xml new file mode 100644 index 00000000..098e55a4 --- /dev/null +++ b/Eden/app/src/main/res/values/strings.xml @@ -0,0 +1,3 @@ + + week5 + \ No newline at end of file diff --git a/Eden/app/src/main/res/values/themes.xml b/Eden/app/src/main/res/values/themes.xml new file mode 100644 index 00000000..9ca66aab --- /dev/null +++ b/Eden/app/src/main/res/values/themes.xml @@ -0,0 +1,9 @@ + + + + + + \ No newline at end of file diff --git a/Eden/week4/app/src/main/res/values/colors.xml b/Eden/week4/app/src/main/res/values/colors.xml new file mode 100644 index 00000000..c8524cd9 --- /dev/null +++ b/Eden/week4/app/src/main/res/values/colors.xml @@ -0,0 +1,5 @@ + + + #FF000000 + #FFFFFFFF + \ No newline at end of file diff --git a/Eden/week4/app/src/main/res/values/strings.xml b/Eden/week4/app/src/main/res/values/strings.xml new file mode 100644 index 00000000..ca79f85b --- /dev/null +++ b/Eden/week4/app/src/main/res/values/strings.xml @@ -0,0 +1,3 @@ + + week4 + \ No newline at end of file diff --git a/Eden/week4/app/src/main/res/values/themes.xml b/Eden/week4/app/src/main/res/values/themes.xml new file mode 100644 index 00000000..84c3eefa --- /dev/null +++ b/Eden/week4/app/src/main/res/values/themes.xml @@ -0,0 +1,9 @@ + + + + + + \ No newline at end of file diff --git a/Eden/week5/app/src/main/res/values/colors.xml b/Eden/week5/app/src/main/res/values/colors.xml new file mode 100644 index 00000000..c8524cd9 --- /dev/null +++ b/Eden/week5/app/src/main/res/values/colors.xml @@ -0,0 +1,5 @@ + + + #FF000000 + #FFFFFFFF + \ No newline at end of file diff --git a/Eden/week5/app/src/main/res/values/strings.xml b/Eden/week5/app/src/main/res/values/strings.xml new file mode 100644 index 00000000..098e55a4 --- /dev/null +++ b/Eden/week5/app/src/main/res/values/strings.xml @@ -0,0 +1,3 @@ + + week5 + \ No newline at end of file diff --git a/Eden/week5/app/src/main/res/values/themes.xml b/Eden/week5/app/src/main/res/values/themes.xml new file mode 100644 index 00000000..9ca66aab --- /dev/null +++ b/Eden/week5/app/src/main/res/values/themes.xml @@ -0,0 +1,9 @@ + + + + + + \ No newline at end of file diff --git a/Eden/week6/app/src/main/res/values/colors.xml b/Eden/week6/app/src/main/res/values/colors.xml new file mode 100644 index 00000000..c8524cd9 --- /dev/null +++ b/Eden/week6/app/src/main/res/values/colors.xml @@ -0,0 +1,5 @@ + + + #FF000000 + #FFFFFFFF + \ No newline at end of file diff --git a/Eden/week6/app/src/main/res/values/strings.xml b/Eden/week6/app/src/main/res/values/strings.xml new file mode 100644 index 00000000..0d876226 --- /dev/null +++ b/Eden/week6/app/src/main/res/values/strings.xml @@ -0,0 +1,5 @@ + + Week6 + + Hello blank fragment + \ No newline at end of file diff --git a/Eden/week6/app/src/main/res/values/themes.xml b/Eden/week6/app/src/main/res/values/themes.xml new file mode 100644 index 00000000..1b78fc53 --- /dev/null +++ b/Eden/week6/app/src/main/res/values/themes.xml @@ -0,0 +1,16 @@ + + + + + + + + \ No newline at end of file diff --git a/week4/app/src/main/res/values/colors.xml b/week4/app/src/main/res/values/colors.xml new file mode 100644 index 00000000..c8524cd9 --- /dev/null +++ b/week4/app/src/main/res/values/colors.xml @@ -0,0 +1,5 @@ + + + #FF000000 + #FFFFFFFF + \ No newline at end of file diff --git a/week4/app/src/main/res/values/strings.xml b/week4/app/src/main/res/values/strings.xml new file mode 100644 index 00000000..ca79f85b --- /dev/null +++ b/week4/app/src/main/res/values/strings.xml @@ -0,0 +1,3 @@ + + week4 + \ No newline at end of file diff --git a/week4/app/src/main/res/values/themes.xml b/week4/app/src/main/res/values/themes.xml new file mode 100644 index 00000000..84c3eefa --- /dev/null +++ b/week4/app/src/main/res/values/themes.xml @@ -0,0 +1,9 @@ + + + + +