diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/.gitignore" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/.gitignore" new file mode 100644 index 0000000..42afabf --- /dev/null +++ "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/.gitignore" @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/build.gradle.kts" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/build.gradle.kts" new file mode 100644 index 0000000..5f6aeaa --- /dev/null +++ "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/build.gradle.kts" @@ -0,0 +1,75 @@ +plugins { + alias(libs.plugins.android.application) + alias(libs.plugins.kotlin.android) + kotlin("plugin.serialization") version "2.0.21" + id("kotlin-kapt") +} + +android { + namespace = "com.example.myapplication" + compileSdk = 36 + + defaultConfig { + applicationId = "com.example.myapplication" + minSdk = 24 + targetSdk = 36 + 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_11 + targetCompatibility = JavaVersion.VERSION_11 + } + kotlinOptions { + jvmTarget = "11" + } + + buildFeatures { + dataBinding = 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("androidx.core:core-splashscreen:1.0.1") + implementation("me.relex:circleindicator:2.1.6") + implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.6.0") + + // RoomDB + implementation("androidx.room:room-ktx:2.4.1") + implementation("androidx.room:room-runtime:2.4.1") + kapt("androidx.room:room-compiler:2.4.1") + + //Retrofit + implementation("com.squareup.retrofit2:retrofit:2.9.0") + implementation("com.squareup.retrofit2:converter-gson:2.9.0") + implementation("com.squareup.retrofit2:adapter-rxjava2:2.9.0") + + //okHttp + implementation("com.squareup.okhttp3:okhttp:4.9.0") + implementation("com.squareup.okhttp3:logging-interceptor:4.9.0") + + //Glide + implementation("com.github.bumptech.glide:glide:4.11.0") + annotationProcessor("com.github.bumptech.glide:compiler:4.11.0") +} \ No newline at end of file diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/proguard-rules.pro" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/proguard-rules.pro" new file mode 100644 index 0000000..481bb43 --- /dev/null +++ "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/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/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/androidTest/java/com/example/myapplication/ExampleInstrumentedTest.kt" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/androidTest/java/com/example/myapplication/ExampleInstrumentedTest.kt" new file mode 100644 index 0000000..e9283cf --- /dev/null +++ "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/androidTest/java/com/example/myapplication/ExampleInstrumentedTest.kt" @@ -0,0 +1,24 @@ +package com.example.myapplication + +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.myapplication", appContext.packageName) + } +} \ No newline at end of file diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/AndroidManifest.xml" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/AndroidManifest.xml" new file mode 100644 index 0000000..172d3c3 --- /dev/null +++ "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/AndroidManifest.xml" @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/java/com/example/data/AlbumDao.kt" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/java/com/example/data/AlbumDao.kt" new file mode 100644 index 0000000..4e5da0e --- /dev/null +++ "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/java/com/example/data/AlbumDao.kt" @@ -0,0 +1,36 @@ +package com.example.data + +import androidx.room.* +import com.example.model.Album +import com.example.model.Like + + +@Dao +interface AlbumDao { + @Insert(onConflict = OnConflictStrategy.REPLACE) + fun insert(album: Album) + + @Update + fun update(album: Album) + + @Delete + fun delete(album: Album) + + @Query("SELECT * FROM AlbumTable") // 테이블의 모든 값을 가져와라 + fun getAlbums(): List + + @Query("SELECT * FROM AlbumTable WHERE id = :id") + fun getAlbum(id: Int): Album + + @Insert + fun likeAlbum(like: Like) + + @Query("DELETE FROM LikeTable WHERE userId = :userId AND albumId = :albumId") + fun disLikeAlbum(userId: Int, albumId: Int) + + @Query("SELECT id FROM LikeTable WHERE userId = :userId AND albumId = :albumId") + fun isLikedAlbum(userId: Int, albumId: Int): Int? + + @Query("SELECT AT.* FROM LikeTable as LT LEFT JOIN AlbumTable as AT ON LT.albumId = AT.id WHERE LT.userId = :userId") + fun getLikedAlbums(userId: Int): List +} \ No newline at end of file diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/java/com/example/data/SongDao.kt" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/java/com/example/data/SongDao.kt" new file mode 100644 index 0000000..7601b03 --- /dev/null +++ "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/java/com/example/data/SongDao.kt" @@ -0,0 +1,28 @@ +package com.example.data + +import androidx.room.* +import com.example.model.Song + +@Dao +interface SongDao { + @Insert + fun insert(song: Song) + + @Update + fun update(song: Song) + + @Delete + fun delete(song: Song) + + @Query("SELECT * FROM SongTable") + fun getSongs(): List + + @Query("SELECT * FROM SongTable WHERE id = :id") + fun getSong(id: Int): Song + + @Query("UPDATE SongTable SET isLike= :isLike WHERE id = :id") + fun updateIsLikeById(isLike: Boolean,id: Int) + + @Query("SELECT * FROM SongTable WHERE isLike= :isLike") + fun getLikedSongs(isLike: Boolean): List +} \ No newline at end of file diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/java/com/example/data/SongDataBase.kt" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/java/com/example/data/SongDataBase.kt" new file mode 100644 index 0000000..2ce6aac --- /dev/null +++ "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/java/com/example/data/SongDataBase.kt" @@ -0,0 +1,36 @@ +package com.example.data + +import android.content.Context +import androidx.room.Database +import androidx.room.Room +import androidx.room.RoomDatabase +import com.example.model.Album +import com.example.model.Like +import com.example.model.Song +import com.example.model.User + +@Database(entities = [Song::class, Album::class, User::class, Like::class], version = 1) +abstract class SongDatabase: RoomDatabase() { + abstract fun albumDao(): AlbumDao + abstract fun songDao(): SongDao + abstract fun userDao(): UserDao + + companion object { + private var instance: SongDatabase? = null + + @Synchronized + fun getInstance(context: Context): SongDatabase? { + if (instance == null) { + synchronized(SongDatabase::class){ + instance = Room.databaseBuilder( + context.applicationContext, + SongDatabase::class.java, + "song-database"//다른 데이터 베이스랑 이름겹치면 꼬임 + ).allowMainThreadQueries().build() + } + } + + return instance + } + } +} \ No newline at end of file diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/java/com/example/data/UserDao.kt" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/java/com/example/data/UserDao.kt" new file mode 100644 index 0000000..1314ab2 --- /dev/null +++ "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/java/com/example/data/UserDao.kt" @@ -0,0 +1,17 @@ +package com.example.data + +import androidx.room.* +import com.example.model.User + + +@Dao +interface UserDao { + @Insert + fun insert(user: User) + + @Query("SELECT * FROM UserTable") + fun getUsers(): List + + @Query("SELECT * FROM UserTable WHERE email = :email AND password = :password") + fun getUser(email: String, password: String): User? +} \ No newline at end of file diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/java/com/example/model/Album.kt" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/java/com/example/model/Album.kt" new file mode 100644 index 0000000..7368388 --- /dev/null +++ "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/java/com/example/model/Album.kt" @@ -0,0 +1,16 @@ +package com.example.model + +import androidx.room.Entity +import androidx.room.PrimaryKey + +//Album table Entity 예시 +@Entity(tableName = "AlbumTable") +data class Album ( + @PrimaryKey(autoGenerate = true) + var id: Int = 0, + + var title: String = "", + var singer: String = "", + var isLike: Boolean = false, + var coverImg: Int? = null, +) \ No newline at end of file diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/java/com/example/model/Like.kt" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/java/com/example/model/Like.kt" new file mode 100644 index 0000000..abf9bf5 --- /dev/null +++ "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/java/com/example/model/Like.kt" @@ -0,0 +1,9 @@ +package com.example.model + +import androidx.room.Entity +import androidx.room.PrimaryKey + +@Entity(tableName = "LikeTable") +data class Like(var userId: Int, var albumId: Int) { + @PrimaryKey(autoGenerate = true) var id: Int = 0 +} \ No newline at end of file diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/java/com/example/model/Song.kt" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/java/com/example/model/Song.kt" new file mode 100644 index 0000000..e321139 --- /dev/null +++ "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/java/com/example/model/Song.kt" @@ -0,0 +1,20 @@ +package com.example.model + +import androidx.room.Entity +import androidx.room.PrimaryKey + +@Entity(tableName = "SongTable") +data class Song ( + @PrimaryKey(autoGenerate = false) + var id: Int = 0, + + var title: String = "", + var singer: String = "", + var second: Int = 0, + var playTime: Int = 0, + var isPlaying: Boolean = false, + var music: String = "", + var coverImg: Int? = null, + var isLike: Boolean = false, + var albumIdx: Int = 0 +) diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/java/com/example/model/TitleItem.kt" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/java/com/example/model/TitleItem.kt" new file mode 100644 index 0000000..0bbae40 --- /dev/null +++ "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/java/com/example/model/TitleItem.kt" @@ -0,0 +1,11 @@ +package com.example.model + +data class TitleItem( + val title: String = "", + val firstAlbum: Int = -1, + val firstTitle: String = "", + val firstSinger: String = "", + val secondAlbum: Int = -1, + val secondTitle: String = "", + val secondSinger: String = "", +) diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/java/com/example/model/User.kt" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/java/com/example/model/User.kt" new file mode 100644 index 0000000..1fac3b5 --- /dev/null +++ "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/java/com/example/model/User.kt" @@ -0,0 +1,15 @@ +package com.example.model + +import androidx.room.Entity +import androidx.room.PrimaryKey +import com.google.gson.annotations.SerializedName + +@Entity(tableName = "UserTable") +data class User( + @SerializedName(value = "email")val email: String, + @SerializedName(value = "password")val password: String, + @SerializedName(value = "name")val name: String +) { + @PrimaryKey(autoGenerate = true) + var id: Int = 0 +} \ No newline at end of file diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/java/com/example/myapplication/LoginActivity.kt" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/java/com/example/myapplication/LoginActivity.kt" new file mode 100644 index 0000000..ccc3ef1 --- /dev/null +++ "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/java/com/example/myapplication/LoginActivity.kt" @@ -0,0 +1,76 @@ +package com.example.myapplication + +import android.content.Intent +import android.os.Bundle +import android.util.Log +import android.widget.Toast +import androidx.activity.enableEdgeToEdge +import androidx.appcompat.app.AppCompatActivity +import com.example.data.SongDatabase +import com.example.myapplication.databinding.ActivityLoginBinding + + +class LoginActivity : AppCompatActivity() { + lateinit var binding: ActivityLoginBinding + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + binding = ActivityLoginBinding.inflate(layoutInflater) + setContentView(binding.root) + enableEdgeToEdge() + + binding.loginSignUpTv.setOnClickListener { + startActivity(Intent(this, SignUpActivity::class.java)) + } + + binding.loginSignInBtn.setOnClickListener { + login() + } + } + + private fun login() { + if (binding.loginIdEt.text.toString() + .isEmpty() || binding.loginDirectInputEt.text.toString().isEmpty() + ) { + Toast.makeText(this, "이메일을 입력해주세요.", Toast.LENGTH_SHORT).show() + return + } + + if (binding.loginPasswordEt.text.toString().isEmpty()) { + Toast.makeText(this, "비밀번호를 입력해주세요.", Toast.LENGTH_SHORT).show() + return + } + + val email = + binding.loginIdEt.text.toString() + "@" + binding.loginDirectInputEt.text.toString() + val password = binding.loginPasswordEt.text.toString() + + val songDB = SongDatabase.getInstance(this)!! + + //잘못된 유저 먼저 보여주 + val user = songDB.userDao().getUser(email, password) + + + user?.let { + Log.d("LOGIN_ACT/GET_USER", "userId: ${user.id}, $user") + saveJwt(user.id) + + startMainActivity() + } + + Toast.makeText(this, "회원 정보가 존재하지 않습니다.", Toast.LENGTH_SHORT).show() + } + + private fun startMainActivity() { + val intent = Intent(this, MainActivity::class.java) + startActivity(intent) + } + + private fun saveJwt(jwt: Int) { + val spf = getSharedPreferences("auth" , MODE_PRIVATE) + val editor = spf.edit() + + editor.putInt("jwt", jwt) + editor.apply() + } +} \ No newline at end of file diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/java/com/example/myapplication/MainActivity.kt" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/java/com/example/myapplication/MainActivity.kt" new file mode 100644 index 0000000..7f62b9b --- /dev/null +++ "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/java/com/example/myapplication/MainActivity.kt" @@ -0,0 +1,353 @@ +package com.example.myapplication + +import android.app.Activity +import android.content.ComponentName +import android.content.Context +import android.content.Intent +import android.content.ServiceConnection +import android.media.MediaPlayer +import android.os.Bundle +import android.os.IBinder +import android.util.Log +import android.view.View +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.data.SongDatabase +import com.example.model.Album +import com.example.model.Song +import com.example.myapplication.databinding.ActivityMainBinding +import com.example.myapplication.home.HomeFragment +import com.example.myapplication.locker.LockerFragment +import com.example.myapplication.look.LookFragment +import com.example.util.MusicService +import com.example.util.Const +import com.example.util.MusicItem +import com.example.util.MusicItem.nowPos +import com.example.util.MusicItem.songs +import com.example.util.OnProgressUpdateListener + +class MainActivity : AppCompatActivity() { + lateinit var binding: ActivityMainBinding + private var musicService: MusicService? = null + private var isBound = false + private var song:Song = Song() + + private val connection = object : ServiceConnection { + override fun onServiceConnected(name: ComponentName?, service: IBinder?) { + val binder = service as MusicService.MusicBinder + musicService = binder.getService() + isBound = true + + musicService?.listener = object : OnProgressUpdateListener { + override fun onProgressUpdate(progress: Int) { + runOnUiThread { + Log.d("하이", progress.toString()) + binding.songProgressSb.progress = progress + } + } + } + inputDummySongs() + inputDummyAlbums() + MusicItem.addAll(this@MainActivity) + musicService?.setTimer() + initSong() + } + + override fun onServiceDisconnected(name: ComponentName?) { + musicService = null + isBound = false + } + } + + private val getResultTitle = registerForActivityResult( + ActivityResultContracts.StartActivityForResult() + ) { result -> + if (result.resultCode == Activity.RESULT_OK) { + val returnTitle = result.data?.getStringExtra(Const.TITLE_KEY) ?: "오류" + Toast.makeText(this, returnTitle, Toast.LENGTH_SHORT).show() + } + } + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + installSplashScreen() + + binding = ActivityMainBinding.inflate(layoutInflater) + setContentView(binding.root) + + supportFragmentManager.beginTransaction() + .replace(R.id.main_frm, HomeFragment()) + .commitAllowingStateLoss() + + Intent(this, MusicService::class.java).also { intent -> + startService(intent) // 백그라운드 유지용 + bindService(intent, connection, Context.BIND_AUTO_CREATE) + } + + binding.apply { + mainPlayerCl.setOnClickListener { + val editor = getSharedPreferences("song", MODE_PRIVATE).edit() + editor.putInt("songId",song.id) + editor.apply() + + goToSong() + } + + mainMiniplayerPreviousIv.setOnClickListener { + moveSong(-1) + } + + mainMiniplayerNextIv.setOnClickListener { + moveSong(+1) + } + + mainMiniplayerBtn.setOnClickListener { + setPlayerStatus(true) + mainMiniplayerPauseBtn.visibility = View.VISIBLE + mainMiniplayerBtn.visibility = View.GONE + } + + mainMiniplayerPauseBtn.setOnClickListener { + setPlayerStatus(false) + mainMiniplayerPauseBtn.visibility = View.GONE + mainMiniplayerBtn.visibility = View.VISIBLE + } + + 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 goToSong(){ + val intent = Intent(this, SongActivity::class.java).apply { + putExtra(Const.TITLE_KEY, "라일락") + putExtra(Const.SINGER_KEY, "아이유 (IU)") + putExtra(Const.SONG_ID, musicService?.nowPlayingSongId()) + } + getResultTitle.launch(intent) + } + + private fun initSong(){ + val spf = getSharedPreferences("song", MODE_PRIVATE) + val songId = spf.getInt("songId",0) + + musicService?.setNowPlayingSongPosition(songId) + setPlayer(songs[nowPos]) + } + + private fun moveSong(direct: Int){ + if (nowPos + direct < 0){ + Toast.makeText(this,"first song",Toast.LENGTH_SHORT).show() + return + } + + if (nowPos + direct >= songs.size){ + Toast.makeText(this,"last song",Toast.LENGTH_SHORT).show() + return + } + + nowPos += direct + + setPlayer(songs[nowPos]) + } + + private fun setPlayer(song: Song){ + binding.mainMiniplayerTitleTv.text = song.title + binding.mainMiniplayerSingerTv.text = song.singer + binding.songProgressSb.progress = musicService?.timer?.progress ?: 0 + + setPlayerStatus(song.isPlaying) + + } + + private fun setPlayerStatus (isPlaying : Boolean){ + songs[nowPos].isPlaying = isPlaying + + if(isPlaying){ + binding.mainMiniplayerPauseBtn.visibility = View.VISIBLE + binding.mainMiniplayerBtn.visibility = View.GONE + musicService?.play(resources.getIdentifier(songs[nowPos].music, "raw", this.packageName)) + if (musicService?.timer?.progress != 0) { + musicService?.timer?.resumeTimer() + } else { + musicService?.startTimer() + } + } else { + binding.mainMiniplayerPauseBtn.visibility = View.GONE + binding.mainMiniplayerBtn.visibility = View.VISIBLE + musicService?.pause() + musicService?.timer?.pauseTimer() + } + } + + private fun inputDummySongs(){ + val songDB = SongDatabase.getInstance(this)!! + val songs = songDB.songDao().getSongs() + + if (songs.isNotEmpty()) return + + songDB.songDao().insert( + Song( + id = 0, + "Lilac", + "아이유 (IU)", + 0, + 200, + false, + "music_lilac", + R.drawable.img_album_exp2, + false, + ) + ) + + songDB.songDao().insert( + Song( + id = 1, + "Flu", + "아이유 (IU)", + 0, + 200, + false, + "music_flu", + R.drawable.img_album_exp2, + false, + ) + ) + + songDB.songDao().insert( + Song( + id = 2, + "Butter", + "방탄소년단 (BTS)", + 0, + 190, + false, + "music_butter", + R.drawable.img_album_exp, + false, + ) + ) + + songDB.songDao().insert( + Song( + id = 3, + "Next Level", + "에스파 (AESPA)", + 0, + 210, + false, + "music_next", + R.drawable.img_album_exp3, + false, + ) + ) + + + songDB.songDao().insert( + Song( + id = 4, + "Boy with Luv", + "music_boy", + 0, + 230, + false, + "music_lilac", + R.drawable.img_album_exp4, + false, + ) + ) + + + songDB.songDao().insert( + Song( + id = 5, + "BBoom BBoom", + "모모랜드 (MOMOLAND)", + 0, + 240, + false, + "music_bboom", + R.drawable.img_album_exp5, + false, + ) + ) + + val _songs = songDB.songDao().getSongs() + Log.d("DB data", _songs.toString()) + } + + //ROOM_DB + private fun inputDummyAlbums() { + val songDB = SongDatabase.getInstance(this)!! + val albums = songDB.albumDao().getAlbums() + + if (albums.isNotEmpty()) return + + songDB.albumDao().insert( + Album( + 0, + "IU 5th Album 'LILAC'", "아이유 (IU)", coverImg = R.drawable.img_album_exp2 + ) + ) + + songDB.albumDao().insert( + Album( + 1, + "Butter", "방탄소년단 (BTS)", coverImg = R.drawable.img_album_exp + ) + ) + + songDB.albumDao().insert( + Album( + 2, + "iScreaM Vol.10 : Next Level Remixes", "에스파 (AESPA)", coverImg = R.drawable.img_album_exp3 + ) + ) + + songDB.albumDao().insert( + Album( + 3, + "MAP OF THE SOUL : PERSONA", "방탄소년단 (BTS)", coverImg = R.drawable.img_album_exp4 + ) + ) + + songDB.albumDao().insert( + Album( + 4, + "GREAT!", "모모랜드 (MOMOLAND)", coverImg = R.drawable.img_album_exp5 + ) + ) + + } +} \ No newline at end of file diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/java/com/example/myapplication/SignUpActivity.kt" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/java/com/example/myapplication/SignUpActivity.kt" new file mode 100644 index 0000000..d7f6cf8 --- /dev/null +++ "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/java/com/example/myapplication/SignUpActivity.kt" @@ -0,0 +1,55 @@ +package com.example.myapplication + +import android.os.Bundle +import android.util.Log +import android.widget.Toast +import androidx.appcompat.app.AppCompatActivity +import com.example.data.SongDatabase +import com.example.model.User +import com.example.myapplication.databinding.ActivitySignupBinding + + +class SignUpActivity : AppCompatActivity() { + + lateinit var binding: ActivitySignupBinding + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + binding = ActivitySignupBinding.inflate(layoutInflater) + setContentView(binding.root) + + binding.signUpSignUpBtn.setOnClickListener { + signUp() + } + } + + private fun signUp() { + if (binding.signUpIdEt.text.toString() + .isEmpty() || binding.signUpDirectInputEt.text.toString().isEmpty() + ) { + Toast.makeText(this, "이메일 형식이 잘못되었습니다.", Toast.LENGTH_SHORT).show() + return + } + + if (binding.signUpPasswordEt.text.toString() != binding.signUpPasswordCheckEt.text.toString()) { + Toast.makeText(this, "비밀번호가 일치하지 않습니다.", Toast.LENGTH_SHORT).show() + return + } + + val userDB = SongDatabase.getInstance(this)!! + userDB.userDao().insert(getUser()) + + val users = userDB.userDao().getUsers() + + Log.d("SIGNUPACT", users.toString()) + } + + private fun getUser(): User { + val email: String = + binding.signUpIdEt.text.toString() + "@" + binding.signUpDirectInputEt.text.toString() + val name: String = binding.signUpNameEt.text.toString() + val pwd: String = binding.signUpPasswordEt.text.toString() + + return User(email, pwd, name) + } +} \ No newline at end of file diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/java/com/example/myapplication/SongActivity.kt" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/java/com/example/myapplication/SongActivity.kt" new file mode 100644 index 0000000..e089d07 --- /dev/null +++ "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/java/com/example/myapplication/SongActivity.kt" @@ -0,0 +1,213 @@ +package com.example.myapplication + +import android.content.ComponentName +import android.content.Context +import android.content.Intent +import android.content.ServiceConnection +import android.content.res.ColorStateList +import android.graphics.ColorFilter +import android.media.MediaPlayer +import android.os.Bundle +import android.os.IBinder +import android.util.Log +import android.view.View +import android.widget.Toast +import androidx.appcompat.app.AppCompatActivity +import androidx.core.content.ContextCompat +import androidx.core.widget.ImageViewCompat +import com.example.data.SongDatabase +import com.example.model.Song +import com.example.myapplication.databinding.ActivitySongBinding +import com.example.util.Const +import com.example.util.MusicItem.nowPos +import com.example.util.MusicItem.songs +import com.example.util.MusicService +import com.example.util.OnProgressUpdateListener +import java.util.Timer +import kotlin.String + +class SongActivity : AppCompatActivity() { + + //전역 변수 + lateinit var binding : ActivitySongBinding + private var musicService: MusicService? = null + private var isBound = false + lateinit var songDB: SongDatabase + + private val connection = object : ServiceConnection { + override fun onServiceConnected(name: ComponentName?, binder: IBinder?) { + val musicBinder = binder as MusicService.MusicBinder + musicService = musicBinder.getService() + isBound = true + musicService?.listener = object : OnProgressUpdateListener { + override fun onProgressUpdate(progress: Int) { + runOnUiThread { + Log.d("하이", progress.toString()) + binding.songProgressSb.progress = progress + } + } + } + + initSong() + } + + override fun onServiceDisconnected(name: ComponentName?) { + musicService = null + isBound = false + } + } + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + binding = ActivitySongBinding.inflate(layoutInflater) + setContentView(binding.root) + + songDB = SongDatabase.getInstance(this)!! + val title = intent.getStringExtra(Const.TITLE_KEY) ?: "" + val singer = intent.getStringExtra(Const.SINGER_KEY) + + Intent(this, MusicService::class.java).also { + bindService(it, connection, Context.BIND_AUTO_CREATE) + } + + binding.apply { + + songDownIb.setOnClickListener { + goToMian(title) + } + + songMiniplayerIv.setOnClickListener { + setPlayerStatus(true) + songPauseIv.visibility = View.VISIBLE + songMiniplayerIv.visibility = View.GONE + } + + songPauseIv.setOnClickListener { + setPlayerStatus(false) + songPauseIv.visibility = View.GONE + songMiniplayerIv.visibility = View.VISIBLE + } + + binding.songNextIv.setOnClickListener { + moveSong(+1) + } + + binding.songPreviousIv.setOnClickListener { + moveSong(-1) + } + + binding.songLikeIv.setOnClickListener { + setLike(songs[nowPos].isLike) + } + + //TODO 활성화, 비활성화 그림 필요 +// songRepeatIv.setOnClickListener { +// songRepeatIv.visibility = View.GONE +// songRepeatActiveIv.visibility = View.VISIBLE +// } +// +// songRepeatActiveIv.setOnClickListener { +// songRepeatIv.visibility = View.VISIBLE +// songRepeatActiveIv.visibility = View.GONE +// } +// +// songRandomIv.setOnClickListener { +// songRandomIv.visibility = View.GONE +// songRandomActiveIv.visibility = View.VISIBLE +// } +// +// songRandomActiveIv.setOnClickListener { +// songRandomIv.visibility = View.VISIBLE +// songRandomActiveIv.visibility = View.GONE +// } + } + } + + private fun initSong(){ + Log.d("now Song ID",songs.toString()) + Log.d("now Song ID",songs[nowPos].isPlaying.toString()) + //musicService?.startTimer() + setPlayer(songs[nowPos]) + } + + private fun moveSong(direct: Int){ + if (nowPos + direct < 0){ + Toast.makeText(this,"first song",Toast.LENGTH_SHORT).show() + return + } + + if (nowPos + direct >= songs.size){ + Toast.makeText(this,"last song",Toast.LENGTH_SHORT).show() + return + } + + nowPos += direct + + musicService?.timer?.interrupt() + musicService?.startTimer() + + setPlayer(songs[nowPos]) + } + + private fun getPlayingSongPosition(songId: Int): Int{ + for (i in 0 until songs.size){ + if (songs[i].id == songId){ + return i + } + } + return 0 + } + + private fun setPlayer(song: Song){ + binding.songMusicTitleTv.text = song.title + binding.songSingerNameTv.text = song.singer + binding.songStartTimeTv.text = String.format("%02d:%02d",song.second / 60, song.second % 60) + binding.songEndTimeTv.text = String.format("%02d:%02d",song.playTime / 60, song.playTime % 60) + binding.songAlbumIv.setImageResource(song.coverImg!!) + binding.songProgressSb.progress = musicService?.timer?.progress ?: 0 + + if (song.isLike){ + binding.songLikeIv.setImageResource(R.drawable.ic_my_like_on) + } else { + binding.songLikeIv.setImageResource(R.drawable.ic_my_like_off) + } + + setPlayerStatus(song.isPlaying) + } + + private fun setPlayerStatus (isPlaying : Boolean){ + songs[nowPos].isPlaying = isPlaying + musicService?.timer?.isPlaying = isPlaying + + if(isPlaying){ + binding.songMiniplayerIv.visibility = View.GONE + binding.songPauseIv.visibility = View.VISIBLE + musicService?.play(resources.getIdentifier(songs[nowPos].music, "raw", this.packageName)) + } else { + binding.songMiniplayerIv.visibility = View.VISIBLE + binding.songPauseIv.visibility = View.GONE + musicService?.pause() + musicService?.timer?.pauseTimer() + } + } + + + private fun goToMian(title: String){ + val intent = Intent(this, MainActivity::class.java).apply { + putExtra(Const.TITLE_KEY, title) + } + setResult(RESULT_OK, intent) + finish() + } + + private fun setLike(isLike: Boolean){ + songs[nowPos].isLike = !isLike + songDB.songDao().updateIsLikeById(!isLike,songs[nowPos].id) + if (!isLike){ + binding.songLikeIv.setImageResource(R.drawable.ic_my_like_on) + } else{ + binding.songLikeIv.setImageResource(R.drawable.ic_my_like_off) + } + + } +} \ No newline at end of file diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/java/com/example/myapplication/album/AlbumFragment.kt" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/java/com/example/myapplication/album/AlbumFragment.kt" new file mode 100644 index 0000000..9c564d1 --- /dev/null +++ "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/java/com/example/myapplication/album/AlbumFragment.kt" @@ -0,0 +1,107 @@ +package com.example.myapplication.album + +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.appcompat.app.AppCompatActivity +import androidx.fragment.app.Fragment +import com.example.data.SongDatabase +import com.example.model.Album +import com.example.model.Like +import com.example.myapplication.R +import com.example.myapplication.album.adapter.AlbumVPAdapter +import com.example.myapplication.databinding.FragmentAlbumBinding +import com.example.myapplication.home.adapter.AlbumRVAdapter +import com.example.util.Const +import com.google.android.material.tabs.TabLayoutMediator +import com.google.gson.Gson +import kotlin.math.sin + +class AlbumFragment : Fragment() { + + lateinit var binding: FragmentAlbumBinding + private val information = arrayListOf("수록곡", "상세정보", "영상") + private var isLiked: Boolean = false + + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ): View { + binding = FragmentAlbumBinding.inflate(inflater, container, false) + + val albumData = arguments?.getString("album") + val gson = Gson() + + val album = gson.fromJson(albumData, Album::class.java) + isLiked = isLikedAlbum(album.id) + val albumAdapter = AlbumVPAdapter(this) + albumAdapter.setAlbumInfo(album.title, album.singer) + albumAdapter.setMyItemClickListener(object : AlbumVPAdapter.MyItemClickListener{ + override fun onItemClick() { + binding.albumAlbumIv.setImageResource(R.drawable.img_album_exp3) + } + }) + + binding.apply { + val userId: Int = getJwt() + + albumBackIv.setOnClickListener { + requireActivity().supportFragmentManager.popBackStack() + } + + albumMusicTitleTv.text = album.title + albumSingerNameTv.text = album.singer + album.coverImg?.let { albumAlbumIv.setImageResource(it) } + + albumContentVp.adapter = albumAdapter + TabLayoutMediator(albumContentTb, albumContentVp) { tab, position -> + tab.text = information[position] + }.attach() + + binding.albumLikeIv.setOnClickListener { + if(isLiked) { + binding.albumLikeIv.setImageResource(R.drawable.ic_my_like_off) + disLikeAlbum(userId, album.id) + } else { + binding.albumLikeIv.setImageResource(R.drawable.ic_my_like_on) + likeAlbum(userId, album.id) + } + + isLiked = !isLiked + } + } + + return binding.root + } + + private fun disLikeAlbum(userId: Int, albumId: Int) { + val songDB = SongDatabase.getInstance(requireContext())!! + songDB.albumDao().disLikeAlbum(userId, albumId) + } + + private fun likeAlbum(userId: Int, albumId: Int) { + val songDB = SongDatabase.getInstance(requireContext())!! + val like = Like(userId, albumId) + + songDB.albumDao().likeAlbum(like) + } + + + private fun isLikedAlbum(albumId: Int): Boolean { + val songDB = SongDatabase.getInstance(requireContext())!! + val userId = getJwt() + + val likeId: Int? = songDB.albumDao().isLikedAlbum(userId, albumId) + + return likeId != null + } + + private fun getJwt(): Int { + val spf = activity?.getSharedPreferences("auth", AppCompatActivity.MODE_PRIVATE) + val jwt = spf!!.getInt("jwt", 0) + + return jwt + } +} \ No newline at end of file diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/java/com/example/myapplication/album/adapter/AlbumVPAdapter.kt" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/java/com/example/myapplication/album/adapter/AlbumVPAdapter.kt" new file mode 100644 index 0000000..0927063 --- /dev/null +++ "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/java/com/example/myapplication/album/adapter/AlbumVPAdapter.kt" @@ -0,0 +1,40 @@ +package com.example.myapplication.album.adapter + +import androidx.fragment.app.Fragment +import androidx.viewpager2.adapter.FragmentStateAdapter +import com.example.model.Album +import com.example.myapplication.detail.DetailFragment +import com.example.myapplication.song.SongFragment +import com.example.myapplication.video.VideoFragment +import kotlin.math.sin + +class AlbumVPAdapter(fragment: Fragment) : FragmentStateAdapter(fragment) { + + interface MyItemClickListener{ + fun onItemClick() + } + + private lateinit var mItemClickListener: MyItemClickListener + + fun setMyItemClickListener(itemClickListener: MyItemClickListener){ + mItemClickListener = itemClickListener + } + + private var title: String = "" + private var singer: String = "" + + fun setAlbumInfo(title: String, singer: String) { + this.title = title + this.singer = singer + } + + override fun getItemCount(): Int = 3 + + override fun createFragment(position: Int): Fragment { + return when(position){ + 0 -> SongFragment(mItemClickListener) + 1 -> DetailFragment(title, singer) + else -> VideoFragment() + } + } +} \ No newline at end of file diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/java/com/example/myapplication/detail/DetailFragment.kt" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/java/com/example/myapplication/detail/DetailFragment.kt" new file mode 100644 index 0000000..e1aaaea --- /dev/null +++ "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/java/com/example/myapplication/detail/DetailFragment.kt" @@ -0,0 +1,30 @@ +package com.example.myapplication.detail + +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.fragment.app.Fragment +import com.example.myapplication.databinding.FragmentDetailBinding + +class DetailFragment( + private val title: String, + private val singer: String +) : Fragment() { + + lateinit var binding: FragmentDetailBinding + + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + binding = FragmentDetailBinding.inflate(inflater,container,false) + + binding.apply { + textDetailContent.text = "이 앨범의 이름은 $title 입니다.\n이 앨범의 작곡가는 $singer 입니다." + } + + return binding.root + } +} \ No newline at end of file diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/java/com/example/myapplication/home/HomeFragment.kt" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/java/com/example/myapplication/home/HomeFragment.kt" new file mode 100644 index 0000000..969c0eb --- /dev/null +++ "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/java/com/example/myapplication/home/HomeFragment.kt" @@ -0,0 +1,122 @@ +package com.example.myapplication.home + +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.TextView +import androidx.fragment.app.Fragment +import com.example.model.Album +import com.example.model.TitleItem +import com.example.myapplication.MainActivity +import com.example.myapplication.R +import com.example.myapplication.album.AlbumFragment +import com.example.myapplication.databinding.FragmentHomeBinding +import com.example.myapplication.home.adapter.AlbumRVAdapter +import com.example.myapplication.home.adapter.HomeTitleAdapter +import com.example.util.Const +import com.google.gson.Gson + +class HomeFragment : Fragment() { + + lateinit var binding: FragmentHomeBinding + + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ): View { + binding = FragmentHomeBinding.inflate(inflater, container, false) + + + val dummy = getDummy() + val dummy2 = getDummy2() + val albumRVAdapter = AlbumRVAdapter(dummy) + val titleAdapter = HomeTitleAdapter(dummy2) + binding.apply { + homeTodayMusicAlbumRv.adapter = albumRVAdapter + viewPagerHome.adapter = titleAdapter + indicator.setViewPager(viewPagerHome) + } + + albumRVAdapter.setMyItemClickListener(object : AlbumRVAdapter.MyItemClickListener{ + override fun onItemClick(album: Album) { + changeAlbumFragment(album) + } + + override fun onPlayBtnClick(titleItem: TitleItem) { + requireActivity().findViewById(R.id.mainMiniplayerTitleTv).text = titleItem.firstTitle + requireActivity().findViewById(R.id.mainMiniplayerSingerTv).text = titleItem.firstSinger + } + }) + + return binding.root + } + + private fun getDummy() : ArrayList { + return arrayListOf( + Album( + id = 0, + title = "LILAC", + singer = "아이유 (IU)", + coverImg = R.drawable.img_album_exp2 + ), + Album( + id = 1, + title = "LILAC", + singer = "아이유 (IU)", + coverImg = R.drawable.img_album_exp2 + ), + Album( + id = 2, + title = "LILAC", + singer = "아이유 (IU)", + coverImg = R.drawable.img_album_exp2 + ) + ) + } + + private fun getDummy2() : ArrayList { + return arrayListOf( + TitleItem( + title = "첫 번째 제목", + firstAlbum = R.drawable.img_album_exp2, + firstTitle = "LILAC", + firstSinger = "아이유 (IU)", + secondAlbum = R.drawable.img_album_exp2, + secondTitle = "LILAC", + secondSinger = "아이유 (IU)", + ), + TitleItem( + title = "두 번째 제목", + firstAlbum = R.drawable.img_album_exp2, + firstTitle = "LILAC", + firstSinger = "아이유 (IU)", + secondAlbum = R.drawable.img_album_exp2, + secondTitle = "LILAC", + secondSinger = "아이유", + ), + TitleItem( + title = "세 번째 제목", + firstAlbum = R.drawable.img_album_exp2, + firstTitle = "LILAC", + firstSinger = "아이유", + secondAlbum = R.drawable.img_album_exp2, + secondTitle = "LILAC", + secondSinger = "아이유 (IU)", + ), + ) + } + + 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() + } +} \ No newline at end of file diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/java/com/example/myapplication/home/adapter/AlbumRVAdapter.kt" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/java/com/example/myapplication/home/adapter/AlbumRVAdapter.kt" new file mode 100644 index 0000000..22b20dc --- /dev/null +++ "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/java/com/example/myapplication/home/adapter/AlbumRVAdapter.kt" @@ -0,0 +1,59 @@ +package com.example.myapplication.home.adapter + +import android.view.LayoutInflater +import android.view.ViewGroup +import androidx.recyclerview.widget.RecyclerView +import com.example.model.Album +import com.example.model.TitleItem +import com.example.myapplication.R +import com.example.myapplication.databinding.ItemAlbumBinding +import java.util.* + +class AlbumRVAdapter( + private val albumList: ArrayList +) : RecyclerView.Adapter(){ + + interface MyItemClickListener{ + fun onItemClick(album: Album) + fun onPlayBtnClick(titleItem: TitleItem) + } + + private lateinit var mItemClickListener: MyItemClickListener + + fun setMyItemClickListener(itemClickListener: MyItemClickListener){ + mItemClickListener = itemClickListener + } + + override fun onCreateViewHolder(viewGroup: ViewGroup, viewType: Int): AlbumViewHolder { + val binding: ItemAlbumBinding = ItemAlbumBinding.inflate(LayoutInflater.from(viewGroup.context), viewGroup, false) + + return AlbumViewHolder(binding) + } + + fun addItem(album: Album){ + albumList.add(album) + notifyDataSetChanged() + } + + override fun onBindViewHolder(holder: AlbumViewHolder, position: Int) { + holder.bind(albumList[position]) + holder.itemView.setOnClickListener { + mItemClickListener.onItemClick(albumList[position]) + } + holder.binding.itemAlbumPlayImgIv.setOnClickListener { + mItemClickListener.onPlayBtnClick( + TitleItem( + title = "첫 번째 제목", + firstAlbum = R.drawable.img_album_exp2, + firstTitle = "LILAC(1)", + firstSinger = "아이유 (IU)", + secondAlbum = R.drawable.img_album_exp2, + secondTitle = "LILAC(2)", + secondSinger = "아이유 (IU)", + ) + ) + } + } + + override fun getItemCount(): Int = albumList.size +} \ No newline at end of file diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/java/com/example/myapplication/home/adapter/AlbumViewHolder.kt" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/java/com/example/myapplication/home/adapter/AlbumViewHolder.kt" new file mode 100644 index 0000000..a051217 --- /dev/null +++ "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/java/com/example/myapplication/home/adapter/AlbumViewHolder.kt" @@ -0,0 +1,16 @@ +package com.example.myapplication.home.adapter + +import androidx.recyclerview.widget.RecyclerView +import com.example.model.Album +import com.example.myapplication.databinding.ItemAlbumBinding + +class AlbumViewHolder( + 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/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/java/com/example/myapplication/home/adapter/HomeTitleAdapter.kt" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/java/com/example/myapplication/home/adapter/HomeTitleAdapter.kt" new file mode 100644 index 0000000..042c812 --- /dev/null +++ "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/java/com/example/myapplication/home/adapter/HomeTitleAdapter.kt" @@ -0,0 +1,25 @@ +package com.example.myapplication.home.adapter + +import android.view.LayoutInflater +import android.view.ViewGroup +import androidx.recyclerview.widget.RecyclerView +import com.example.model.TitleItem +import com.example.myapplication.databinding.ItemHomePagerBinding +import java.util.ArrayList + +class HomeTitleAdapter( + private val titleList: ArrayList +) : RecyclerView.Adapter(){ + + override fun onCreateViewHolder(viewGroup: ViewGroup, viewType: Int): HomeTitleViewHolder { + val binding: ItemHomePagerBinding = ItemHomePagerBinding.inflate(LayoutInflater.from(viewGroup.context), viewGroup, false) + + return HomeTitleViewHolder(binding) + } + + override fun onBindViewHolder(holder: HomeTitleViewHolder, position: Int) { + holder.bind(titleList[position]) + } + + override fun getItemCount(): Int = titleList.size +} \ No newline at end of file diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/java/com/example/myapplication/home/adapter/HomeTitleViewHolder.kt" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/java/com/example/myapplication/home/adapter/HomeTitleViewHolder.kt" new file mode 100644 index 0000000..067fa07 --- /dev/null +++ "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/java/com/example/myapplication/home/adapter/HomeTitleViewHolder.kt" @@ -0,0 +1,24 @@ +package com.example.myapplication.home.adapter + +import androidx.recyclerview.widget.RecyclerView +import com.example.model.Album +import com.example.model.TitleItem +import com.example.myapplication.databinding.ItemHomePagerBinding + +class HomeTitleViewHolder( + val binding: ItemHomePagerBinding +): RecyclerView.ViewHolder(binding.root){ + + fun bind(titleItem: TitleItem){ + binding.apply { + homePannelTitleTv.text = titleItem.title + homePannelAlbumImg01Iv.setImageResource(titleItem.firstAlbum) + homePannelAlbumImg02Iv.setImageResource(titleItem.secondAlbum) + homePannelAlbumTitle01Tv.text = titleItem.firstTitle + homePannelAlbumTitle03Tv.text = titleItem.secondTitle + homePannelAlbumSinger02Tv.text = titleItem.firstSinger + homePannelAlbumSinger04Tv.text = titleItem.secondSinger + } + + } +} \ No newline at end of file diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/java/com/example/myapplication/locker/LockerFragment.kt" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/java/com/example/myapplication/locker/LockerFragment.kt" new file mode 100644 index 0000000..08dd318 --- /dev/null +++ "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/java/com/example/myapplication/locker/LockerFragment.kt" @@ -0,0 +1,43 @@ +package com.example.myapplication.locker + +import android.content.Intent +import android.os.Bundle +import android.util.Log +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.fragment.app.Fragment +import com.example.data.SongDatabase +import com.example.myapplication.LoginActivity +import com.example.myapplication.databinding.FragmentLockerBinding +import com.example.myapplication.locker.adapter.LockerVPAdapter +import com.google.android.material.tabs.TabLayoutMediator + +class LockerFragment : Fragment() { + + lateinit var binding: FragmentLockerBinding + private val information = arrayListOf("저장한곡", "음악파일", "저장앨범") + + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ): View { + binding = FragmentLockerBinding.inflate(inflater, container, false) + + val lockerAdapter = LockerVPAdapter(this) + + binding.apply { + lockerContentVp.adapter = lockerAdapter + TabLayoutMediator(binding.lockerContentTb, binding.lockerContentVp) { tab, position -> + tab.text = information[position] + }.attach() + + lockerLoginTv.setOnClickListener { + startActivity(Intent(activity, LoginActivity::class.java)) + } + } + + return binding.root + } +} \ No newline at end of file diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/java/com/example/myapplication/locker/adapter/LockerVPAdapter.kt" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/java/com/example/myapplication/locker/adapter/LockerVPAdapter.kt" new file mode 100644 index 0000000..93375ba --- /dev/null +++ "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/java/com/example/myapplication/locker/adapter/LockerVPAdapter.kt" @@ -0,0 +1,20 @@ + +package com.example.myapplication.locker.adapter + +import androidx.fragment.app.Fragment +import androidx.viewpager2.adapter.FragmentStateAdapter +import com.example.myapplication.savedAlbum.MusicFileFragment +import com.example.myapplication.savedAlbum.SavedAlbumFragment +import com.example.myapplication.savedSong.SavedSongFragment + +class LockerVPAdapter(fragment: Fragment) : FragmentStateAdapter(fragment) { + override fun getItemCount(): Int = 3 + + override fun createFragment(position: Int): Fragment { + return when(position){ + 0 -> SavedSongFragment() + 1 -> MusicFileFragment() + else -> SavedAlbumFragment() + } + } +} \ No newline at end of file diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/java/com/example/myapplication/look/LookFragment.kt" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/java/com/example/myapplication/look/LookFragment.kt" new file mode 100644 index 0000000..e21b8ed --- /dev/null +++ "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/java/com/example/myapplication/look/LookFragment.kt" @@ -0,0 +1,56 @@ +package com.example.myapplication.look + +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.fragment.app.Fragment +import com.example.myapplication.databinding.FragmentLookBinding + +class LookFragment : Fragment() { + private lateinit var binding: FragmentLookBinding + //private lateinit var floCharAdapter: SongRVAdapter + + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ): View { + binding = FragmentLookBinding.inflate(inflater, container, false) + + return binding.root + } + + override fun onStart() { + super.onStart() + //getSongs() + } + +// private fun initRecyclerView(result: FloChartResult) { +// floCharAdapter = SongRVAdapter(requireContext(), result) +// +// binding.lookFloChartRv.adapter = floCharAdapter +// } +// +// private fun getSongs() { +// val songService = SongService() +// songService.setLookView(this) +// +// songService.getSongs() +// +// } +// +// override fun onGetSongLoading() { +// binding.lookLoadingPb.visibility = View.VISIBLE +// } +// +// override fun onGetSongSuccess(code: Int, result: FloChartResult) { +// binding.lookLoadingPb.visibility = View.GONE +// initRecyclerView(result) +// } +// +// override fun onGetSongFailure(code: Int, message: String) { +// binding.lookLoadingPb.visibility = View.GONE +// Log.d("LOOK-FRAG/SONG-RESPONSE", message) +// } +} \ No newline at end of file diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/java/com/example/myapplication/musicFile/MusicFileFragment.kt" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/java/com/example/myapplication/musicFile/MusicFileFragment.kt" new file mode 100644 index 0000000..0d2bdff --- /dev/null +++ "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/java/com/example/myapplication/musicFile/MusicFileFragment.kt" @@ -0,0 +1,24 @@ + +package com.example.myapplication.savedAlbum + +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.fragment.app.Fragment +import com.example.myapplication.databinding.FragmentMusicFileBinding + +class MusicFileFragment : Fragment() { + + lateinit var binding: FragmentMusicFileBinding + + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + binding = FragmentMusicFileBinding.inflate(inflater,container,false) + + return binding.root + } +} \ No newline at end of file diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/java/com/example/myapplication/savedAlbum/SavedAlbumFragment.kt" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/java/com/example/myapplication/savedAlbum/SavedAlbumFragment.kt" new file mode 100644 index 0000000..6227de1 --- /dev/null +++ "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/java/com/example/myapplication/savedAlbum/SavedAlbumFragment.kt" @@ -0,0 +1,62 @@ + +package com.example.myapplication.savedAlbum + +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.appcompat.app.AppCompatActivity +import androidx.fragment.app.Fragment +import androidx.recyclerview.widget.LinearLayoutManager +import com.example.data.SongDatabase +import com.example.model.Album +import com.example.model.TitleItem +import com.example.myapplication.R +import com.example.myapplication.databinding.FragmentSavedAlbumBinding +import com.example.myapplication.savedAlbum.adapter.AlbumLockerRVAdapter + +class SavedAlbumFragment : Fragment() { + + lateinit var binding: FragmentSavedAlbumBinding + lateinit var albumDB: SongDatabase + + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + binding = FragmentSavedAlbumBinding.inflate(inflater, container, false) + + albumDB = SongDatabase.getInstance(requireContext())!! + return binding.root + } + + override fun onStart() { + super.onStart() + initRecyclerview() + } + + private fun initRecyclerview(){ + binding.lockerSavedSongRecyclerView.layoutManager = + LinearLayoutManager(context, LinearLayoutManager.VERTICAL, false) + + val albumRVAdapter = AlbumLockerRVAdapter(albumDB.albumDao().getLikedAlbums(getJwt())) + + albumRVAdapter.setMyItemClickListener(object : AlbumLockerRVAdapter.MyItemClickListener{ + override fun onRemoveAlbum(id: Int) { + albumDB.albumDao().disLikeAlbum(getJwt(), id) + } + }) + + binding.lockerSavedSongRecyclerView.adapter = albumRVAdapter + + } + + private fun getJwt() : Int { + val spf = activity?.getSharedPreferences("auth" , AppCompatActivity.MODE_PRIVATE) + val jwt = spf!!.getInt("jwt", 0) + + return jwt + } + +} \ No newline at end of file diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/java/com/example/myapplication/savedAlbum/adapter/AlbumLockerRVAdapter.kt" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/java/com/example/myapplication/savedAlbum/adapter/AlbumLockerRVAdapter.kt" new file mode 100644 index 0000000..e980970 --- /dev/null +++ "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/java/com/example/myapplication/savedAlbum/adapter/AlbumLockerRVAdapter.kt" @@ -0,0 +1,47 @@ +package com.example.myapplication.savedAlbum.adapter + +import android.util.Log +import android.view.LayoutInflater +import android.view.ViewGroup +import androidx.recyclerview.widget.RecyclerView +import com.example.model.Album +import com.example.myapplication.R +import com.example.myapplication.databinding.ItemLockerAlbumBinding + +class AlbumLockerRVAdapter(private val albumList: List) : RecyclerView.Adapter(){ + + // 클릭 인터페이스 정의 + interface MyItemClickListener{ + fun onRemoveAlbum(id: Int) + } + + private lateinit var mItemClickListener: MyItemClickListener + + fun setMyItemClickListener(itemClickListener: MyItemClickListener){ + mItemClickListener = itemClickListener + } + + override fun onCreateViewHolder(viewGroup: ViewGroup, viewType: Int): AlbumLockerViewHolder { + val binding: ItemLockerAlbumBinding = ItemLockerAlbumBinding.inflate(LayoutInflater.from(viewGroup.context), viewGroup, false) + + return AlbumLockerViewHolder(binding) + } + + fun removeItem(position: Int){ + notifyDataSetChanged() + } + + override fun onBindViewHolder(holder: AlbumLockerViewHolder, position: Int) { + holder.bind(albumList[position]) + holder.binding.itemAlbumMoreIv.setOnClickListener { + mItemClickListener.onRemoveAlbum(albumList[position].id) + } + holder.binding.itemAlbumPlayIv.setOnClickListener { + if(holder.isPlay) it.setBackgroundResource(R.drawable.btn_miniplay_pause) + else it.setBackgroundResource(R.drawable.btn_player_play) + holder.isPlay = !holder.isPlay + } + } + + override fun getItemCount(): Int = albumList.size +} \ No newline at end of file diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/java/com/example/myapplication/savedAlbum/adapter/AlbumLockerViewHolder.kt" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/java/com/example/myapplication/savedAlbum/adapter/AlbumLockerViewHolder.kt" new file mode 100644 index 0000000..66fe026 --- /dev/null +++ "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/java/com/example/myapplication/savedAlbum/adapter/AlbumLockerViewHolder.kt" @@ -0,0 +1,15 @@ +package com.example.myapplication.savedAlbum.adapter + +import androidx.recyclerview.widget.RecyclerView +import com.example.model.Album +import com.example.myapplication.databinding.ItemLockerAlbumBinding + +class AlbumLockerViewHolder(val binding: ItemLockerAlbumBinding): RecyclerView.ViewHolder(binding.root){ + var isPlay : Boolean = true + + fun bind(album: Album){ + binding.itemAlbumImgIv.setImageResource(album.coverImg!!) + binding.itemAlbumTitleTv.text = album.title + binding.itemAlbumSingerTv.text = album.singer + } +} \ No newline at end of file diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/java/com/example/myapplication/savedSong/SavedSongFragment.kt" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/java/com/example/myapplication/savedSong/SavedSongFragment.kt" new file mode 100644 index 0000000..349c386 --- /dev/null +++ "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/java/com/example/myapplication/savedSong/SavedSongFragment.kt" @@ -0,0 +1,66 @@ +package com.example.myapplication.savedSong + +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.fragment.app.Fragment +import com.example.data.SongDatabase +import com.example.model.TitleItem +import com.example.myapplication.R +import com.example.myapplication.databinding.FragmentSavedSongBinding +import com.example.myapplication.savedSong.adapter.SavedSongAdapter + +class SavedSongFragment : Fragment() { + + lateinit var binding: FragmentSavedSongBinding + + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + binding = FragmentSavedSongBinding.inflate(inflater,container,false) + val songDB = SongDatabase.getInstance(requireContext())!! + val likedAlbums = songDB.songDao().getLikedSongs(true) + val savedSongAdapter = SavedSongAdapter(likedAlbums) + + binding.apply { + lockerSavedSongRecyclerView.adapter = savedSongAdapter + } + + return binding.root + } + + private fun getDummy() : ArrayList { + return arrayListOf( + TitleItem( + title = "첫 번째 제목", + firstAlbum = R.drawable.img_album_exp2, + firstTitle = "LILAC", + firstSinger = "아이유 (IU)", + secondAlbum = R.drawable.img_album_exp2, + secondTitle = "LILAC", + secondSinger = "아이유 (IU)", + ), + TitleItem( + title = "두 번째 제목", + firstAlbum = R.drawable.img_album_exp2, + firstTitle = "LILAC", + firstSinger = "아이유 (IU)", + secondAlbum = R.drawable.img_album_exp2, + secondTitle = "LILAC", + secondSinger = "아이유", + ), + TitleItem( + title = "세 번째 제목", + firstAlbum = R.drawable.img_album_exp2, + firstTitle = "LILAC", + firstSinger = "아이유", + secondAlbum = R.drawable.img_album_exp2, + secondTitle = "LILAC", + secondSinger = "아이유 (IU)", + ), + ) + } +} \ No newline at end of file diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/java/com/example/myapplication/savedSong/adapter/SavedSongAdapter.kt" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/java/com/example/myapplication/savedSong/adapter/SavedSongAdapter.kt" new file mode 100644 index 0000000..d7d4f43 --- /dev/null +++ "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/java/com/example/myapplication/savedSong/adapter/SavedSongAdapter.kt" @@ -0,0 +1,31 @@ +package com.example.myapplication.savedSong.adapter + +import android.view.LayoutInflater +import android.view.ViewGroup +import androidx.recyclerview.widget.RecyclerView +import com.example.model.Song +import com.example.model.TitleItem +import com.example.myapplication.databinding.ItemSavedSongBinding +import java.util.ArrayList + +class SavedSongAdapter( + private val titleList: List +) : RecyclerView.Adapter(){ + + override fun onCreateViewHolder(viewGroup: ViewGroup, viewType: Int): SavedSongViewHolder { + val binding: ItemSavedSongBinding = ItemSavedSongBinding.inflate(LayoutInflater.from(viewGroup.context), viewGroup, false) + + return SavedSongViewHolder(binding) + } + + override fun onBindViewHolder(holder: SavedSongViewHolder, position: Int) { + holder.bind(titleList[position]) + holder.binding.itemSongMoreIv.setOnClickListener { + //titleList.removeAt(position) + notifyItemRemoved(position) + notifyItemRangeChanged(position, titleList.size) + } + } + + override fun getItemCount(): Int = titleList.size +} \ No newline at end of file diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/java/com/example/myapplication/savedSong/adapter/SavedSongViewHolder.kt" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/java/com/example/myapplication/savedSong/adapter/SavedSongViewHolder.kt" new file mode 100644 index 0000000..159ff42 --- /dev/null +++ "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/java/com/example/myapplication/savedSong/adapter/SavedSongViewHolder.kt" @@ -0,0 +1,19 @@ +package com.example.myapplication.savedSong.adapter + +import androidx.recyclerview.widget.RecyclerView +import com.example.model.Song +import com.example.model.TitleItem +import com.example.myapplication.databinding.ItemSavedSongBinding + +class SavedSongViewHolder( + val binding: ItemSavedSongBinding +): RecyclerView.ViewHolder(binding.root){ + + fun bind(titleItem: Song){ + binding.apply { + titleItem.coverImg?.let { itemSongImgIv.setImageResource(it) } + itemSongTitleTv.text = titleItem.title + itemSongSingerTv.text = titleItem.singer + } + } +} \ No newline at end of file diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/java/com/example/myapplication/song/SongFragment.kt" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/java/com/example/myapplication/song/SongFragment.kt" new file mode 100644 index 0000000..e5662c3 --- /dev/null +++ "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/java/com/example/myapplication/song/SongFragment.kt" @@ -0,0 +1,72 @@ +package com.example.myapplication.song + +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.fragment.app.Fragment +import com.example.model.TitleItem +import com.example.myapplication.R +import com.example.myapplication.album.adapter.AlbumVPAdapter.MyItemClickListener +import com.example.myapplication.databinding.FragmentDetailBinding +import com.example.myapplication.databinding.FragmentSongBinding +import com.example.myapplication.home.adapter.HomeTitleAdapter +import com.example.myapplication.song.adapter.SongAdapter + +class SongFragment(itemClickListener: MyItemClickListener) : Fragment() { + + var mItemClickListener: MyItemClickListener = itemClickListener + lateinit var binding: FragmentSongBinding + + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + binding = FragmentSongBinding.inflate(inflater,container,false) + binding.btnMix.setOnClickListener { + mItemClickListener.onItemClick() + } + + val songAdapter = SongAdapter(getDummy()) + + binding.apply { + recyclerSong.adapter = songAdapter + } + + return binding.root + } + + private fun getDummy() : ArrayList { + return arrayListOf( + TitleItem( + title = "첫 번째 제목", + firstAlbum = R.drawable.img_album_exp2, + firstTitle = "LILAC", + firstSinger = "아이유 (IU)", + secondAlbum = R.drawable.img_album_exp2, + secondTitle = "LILAC", + secondSinger = "아이유 (IU)", + ), + TitleItem( + title = "두 번째 제목", + firstAlbum = R.drawable.img_album_exp2, + firstTitle = "LILAC", + firstSinger = "아이유 (IU)", + secondAlbum = R.drawable.img_album_exp2, + secondTitle = "LILAC", + secondSinger = "아이유", + ), + TitleItem( + title = "세 번째 제목", + firstAlbum = R.drawable.img_album_exp2, + firstTitle = "LILAC", + firstSinger = "아이유", + secondAlbum = R.drawable.img_album_exp2, + secondTitle = "LILAC", + secondSinger = "아이유 (IU)", + ), + ) + } + +} \ No newline at end of file diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/java/com/example/myapplication/song/adapter/SongAdapter.kt" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/java/com/example/myapplication/song/adapter/SongAdapter.kt" new file mode 100644 index 0000000..3d3cd68 --- /dev/null +++ "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/java/com/example/myapplication/song/adapter/SongAdapter.kt" @@ -0,0 +1,25 @@ +package com.example.myapplication.song.adapter + +import android.view.LayoutInflater +import android.view.ViewGroup +import androidx.recyclerview.widget.RecyclerView +import com.example.model.TitleItem +import com.example.myapplication.databinding.ItemSongTextBinding +import java.util.ArrayList + +class SongAdapter( + private val titleList: ArrayList +) : RecyclerView.Adapter(){ + + override fun onCreateViewHolder(viewGroup: ViewGroup, viewType: Int): SongViewHolder { + val binding: ItemSongTextBinding = ItemSongTextBinding.inflate(LayoutInflater.from(viewGroup.context), viewGroup, false) + + return SongViewHolder(binding) + } + + override fun onBindViewHolder(holder: SongViewHolder, position: Int) { + holder.bind(titleList[position], position + 1) + } + + override fun getItemCount(): Int = titleList.size +} \ No newline at end of file diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/java/com/example/myapplication/song/adapter/SongViewHolder.kt" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/java/com/example/myapplication/song/adapter/SongViewHolder.kt" new file mode 100644 index 0000000..ca9ddb2 --- /dev/null +++ "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/java/com/example/myapplication/song/adapter/SongViewHolder.kt" @@ -0,0 +1,18 @@ +package com.example.myapplication.song.adapter + +import androidx.recyclerview.widget.RecyclerView +import com.example.model.TitleItem +import com.example.myapplication.databinding.ItemSongTextBinding + +class SongViewHolder( + val binding: ItemSongTextBinding +): RecyclerView.ViewHolder(binding.root){ + + fun bind(titleItem: TitleItem, index: Int){ + binding.apply { + textNum.text = index.toString() + textTitle.text = titleItem.title + textSinger.text = titleItem.firstSinger + } + } +} \ No newline at end of file diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/java/com/example/myapplication/video/VideoFragment.kt" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/java/com/example/myapplication/video/VideoFragment.kt" new file mode 100644 index 0000000..dde6a05 --- /dev/null +++ "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/java/com/example/myapplication/video/VideoFragment.kt" @@ -0,0 +1,23 @@ +package com.example.myapplication.video + +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.fragment.app.Fragment +import com.example.myapplication.databinding.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/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/java/com/example/util/Const.kt" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/java/com/example/util/Const.kt" new file mode 100644 index 0000000..9b0dc7d --- /dev/null +++ "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/java/com/example/util/Const.kt" @@ -0,0 +1,8 @@ +package com.example.util + +object Const { + const val TITLE_KEY = "title" + const val SINGER_KEY = "singer" + const val IMAGE_KEY = "image" + const val SONG_ID = "songId" +} \ No newline at end of file diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/java/com/example/util/MusicService.kt" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/java/com/example/util/MusicService.kt" new file mode 100644 index 0000000..123c3b4 --- /dev/null +++ "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/java/com/example/util/MusicService.kt" @@ -0,0 +1,156 @@ +package com.example.util + +import android.app.Service +import android.content.Context +import android.content.Intent +import android.media.MediaPlayer +import android.os.Binder +import android.os.IBinder +import android.util.Log +import com.example.data.SongDatabase +import com.example.model.Song +import com.example.util.MusicItem.nowPos +import com.example.util.MusicItem.songs + +object MusicItem { + val songs = arrayListOf() + var nowPos = 0 + + fun addAll(context: Context) { + val songDB = SongDatabase.getInstance(context)!! + songs.addAll(songDB.songDao().getSongs()) + Log.d("하이", songDB.songDao().getSongs().toString()) + } +} + +interface OnProgressUpdateListener { + fun onProgressUpdate(progress: Int) +} + +class MusicService: Service() { + + var listener: OnProgressUpdateListener? = null + private val binder = MusicBinder() + private var mediaPlayer: MediaPlayer? = null + private var currentSongRes: Int? = null + lateinit var timer: Timer + + inner class MusicBinder : Binder() { + fun getService(): MusicService = this@MusicService + } + + override fun onBind(intent: Intent?): IBinder = binder + + override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int { + return START_STICKY + } + + fun play(songRes: Int) { + songs[nowPos].isPlaying = true + if (mediaPlayer == null) { + mediaPlayer = MediaPlayer.create(this, songRes) + mediaPlayer?.isLooping = true + } + if (currentSongRes != songRes) { + mediaPlayer?.reset() + mediaPlayer = MediaPlayer.create(this, songRes) + mediaPlayer?.isLooping = true + currentSongRes = songRes + } + mediaPlayer?.start() + } + + fun pause() { + songs[nowPos].isPlaying = false + mediaPlayer?.pause() + } + + fun resume() { + if (mediaPlayer != null && !mediaPlayer!!.isPlaying) { + mediaPlayer?.start() + } + } + + fun isPlaying(): Boolean = mediaPlayer?.isPlaying ?: false + + fun nowPlayingSongId(): Int = songs[nowPos].id + + fun setNowPlayingSongPosition(songId: Int) { + for (i in 0 until songs.size){ + if (songs[i].id == songId){ + nowPos = i + return + } + } + if (nowPos != 0) { + return + } else { + nowPos = 0 + } + Log.d("여긴가요?", nowPos.toString()) + } + + fun getSong(): Song { + return songs[nowPos] + } + + override fun onDestroy() { + mediaPlayer?.release() + mediaPlayer = null + super.onDestroy() + } + + fun setTimer() { + timer = Timer(songs[nowPos].playTime,songs[nowPos].isPlaying) + } + + fun startTimer(){ + timer = Timer(songs[nowPos].playTime,songs[nowPos].isPlaying) + timer.start() + } + + inner class Timer(private val playTime: Int, var isPlaying: Boolean = true) : Thread() { + + var second: Int = 0 + private var mills: Float = 0f + var progress: Int = 0 + + override fun run() { + super.run() + try { + while (second < playTime) { + synchronized(this) { + // 일시정지 상태면 wait() + while (!isPlaying) { + (this as java.lang.Object).wait() + } + } + + sleep(50) + mills += 50 + progress = ((mills / playTime) * 100).toInt() + listener?.onProgressUpdate(progress) + + if (mills % 1000 == 0f) { + second++ + } + } + + } catch (e: InterruptedException) { + Log.d("Song", "쓰레드가 죽었습니다. ${e.message}") + } + } + + fun pauseTimer() { + isPlaying = false + } + + fun resumeTimer() { + synchronized(this) { + isPlaying = true + (this as java.lang.Object).notify() + } + } + } + +} \ No newline at end of file diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/apple_44.png" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/apple_44.png" new file mode 100644 index 0000000..f365d20 Binary files /dev/null and "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/apple_44.png" differ diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/blue_radius.xml" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/blue_radius.xml" new file mode 100644 index 0000000..f2a12db --- /dev/null +++ "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/blue_radius.xml" @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/btm_color_selector.xml" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/btm_color_selector.xml" new file mode 100644 index 0000000..3ecf8a7 --- /dev/null +++ "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/btm_color_selector.xml" @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/btn_actionbar_close.png" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/btn_actionbar_close.png" new file mode 100644 index 0000000..b6cc3cc Binary files /dev/null and "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/btn_actionbar_close.png" differ diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/btn_actionbar_instagram.png" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/btn_actionbar_instagram.png" new file mode 100644 index 0000000..90bc027 Binary files /dev/null and "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/btn_actionbar_instagram.png" differ diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/btn_arrow_black.png" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/btn_arrow_black.png" new file mode 100644 index 0000000..cc38ca8 Binary files /dev/null and "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/btn_arrow_black.png" differ diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/btn_arrow_more.png" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/btn_arrow_more.png" new file mode 100644 index 0000000..59e410c Binary files /dev/null and "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/btn_arrow_more.png" differ diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/btn_input_password.png" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/btn_input_password.png" new file mode 100644 index 0000000..8c2eb18 Binary files /dev/null and "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/btn_input_password.png" differ diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/btn_input_password_off.png" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/btn_input_password_off.png" new file mode 100644 index 0000000..8234f53 Binary files /dev/null and "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/btn_input_password_off.png" differ diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/btn_main_arrow_more.png" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/btn_main_arrow_more.png" new file mode 100644 index 0000000..59e410c Binary files /dev/null and "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/btn_main_arrow_more.png" differ diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/btn_main_mike.png" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/btn_main_mike.png" new file mode 100644 index 0000000..9bddec6 Binary files /dev/null and "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/btn_main_mike.png" differ diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/btn_main_setting.png" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/btn_main_setting.png" new file mode 100644 index 0000000..7a8d5d6 Binary files /dev/null and "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/btn_main_setting.png" differ diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/btn_main_ticket.png" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/btn_main_ticket.png" new file mode 100644 index 0000000..52b6d64 Binary files /dev/null and "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/btn_main_ticket.png" differ diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/btn_miniplay_mvpause.png" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/btn_miniplay_mvpause.png" new file mode 100644 index 0000000..470e046 Binary files /dev/null and "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/btn_miniplay_mvpause.png" differ diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/btn_miniplay_mvplay.png" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/btn_miniplay_mvplay.png" new file mode 100644 index 0000000..d118677 Binary files /dev/null and "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/btn_miniplay_mvplay.png" differ diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/btn_miniplay_pause.png" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/btn_miniplay_pause.png" new file mode 100644 index 0000000..470e046 Binary files /dev/null and "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/btn_miniplay_pause.png" differ diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/btn_miniplayer_go_list.png" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/btn_miniplayer_go_list.png" new file mode 100644 index 0000000..1b2d977 Binary files /dev/null and "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/btn_miniplayer_go_list.png" differ diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/btn_miniplayer_next.png" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/btn_miniplayer_next.png" new file mode 100644 index 0000000..3aedba3 Binary files /dev/null and "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/btn_miniplayer_next.png" differ diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/btn_miniplayer_play.png" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/btn_miniplayer_play.png" new file mode 100644 index 0000000..f619072 Binary files /dev/null and "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/btn_miniplayer_play.png" differ diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/btn_miniplayer_previous.png" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/btn_miniplayer_previous.png" new file mode 100644 index 0000000..d0bf1f6 Binary files /dev/null and "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/btn_miniplayer_previous.png" differ diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/btn_nugu.png" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/btn_nugu.png" new file mode 100644 index 0000000..9bddec6 Binary files /dev/null and "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/btn_nugu.png" differ diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/btn_panel_play_large.png" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/btn_panel_play_large.png" new file mode 100644 index 0000000..4ac7103 Binary files /dev/null and "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/btn_panel_play_large.png" differ diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/btn_player_eq_off.png" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/btn_player_eq_off.png" new file mode 100644 index 0000000..f23d9c6 Binary files /dev/null and "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/btn_player_eq_off.png" differ diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/btn_player_go_list.png" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/btn_player_go_list.png" new file mode 100644 index 0000000..1b2d977 Binary files /dev/null and "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/btn_player_go_list.png" differ diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/btn_player_more.png" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/btn_player_more.png" new file mode 100644 index 0000000..a8ad9e6 Binary files /dev/null and "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/btn_player_more.png" differ diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/btn_player_play.png" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/btn_player_play.png" new file mode 100644 index 0000000..f6c3201 Binary files /dev/null and "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/btn_player_play.png" differ diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/btn_player_related.png" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/btn_player_related.png" new file mode 100644 index 0000000..9026fe5 Binary files /dev/null and "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/btn_player_related.png" differ diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/btn_player_setting.png" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/btn_player_setting.png" new file mode 100644 index 0000000..0df8f69 Binary files /dev/null and "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/btn_player_setting.png" differ diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/btn_player_unlike_off.png" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/btn_player_unlike_off.png" new file mode 100644 index 0000000..b539504 Binary files /dev/null and "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/btn_player_unlike_off.png" differ diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/btn_player_unlike_on.png" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/btn_player_unlike_on.png" new file mode 100644 index 0000000..45a43ca Binary files /dev/null and "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/btn_player_unlike_on.png" differ diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/btn_playlist_select_off.png" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/btn_playlist_select_off.png" new file mode 100644 index 0000000..62ef45c Binary files /dev/null and "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/btn_playlist_select_off.png" differ diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/btn_playlist_select_on.png" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/btn_playlist_select_on.png" new file mode 100644 index 0000000..2d3b6af Binary files /dev/null and "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/btn_playlist_select_on.png" differ diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/btn_setting_phone.png" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/btn_setting_phone.png" new file mode 100644 index 0000000..d6de4c6 Binary files /dev/null and "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/btn_setting_phone.png" differ diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/btn_textbox_close.png" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/btn_textbox_close.png" new file mode 100644 index 0000000..10f1f63 Binary files /dev/null and "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/btn_textbox_close.png" differ diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/btn_titlebar_close.png" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/btn_titlebar_close.png" new file mode 100644 index 0000000..6615def Binary files /dev/null and "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/btn_titlebar_close.png" differ diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/btn_toggle_off.png" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/btn_toggle_off.png" new file mode 100644 index 0000000..983360d Binary files /dev/null and "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/btn_toggle_off.png" differ diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/btn_toggle_on.png" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/btn_toggle_on.png" new file mode 100644 index 0000000..fb609f4 Binary files /dev/null and "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/btn_toggle_on.png" differ diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/button_background_black_color.xml" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/button_background_black_color.xml" new file mode 100644 index 0000000..cad3794 --- /dev/null +++ "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/button_background_black_color.xml" @@ -0,0 +1,10 @@ + + + + + + + diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/button_background_flo_color.xml" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/button_background_flo_color.xml" new file mode 100644 index 0000000..d5e92f3 --- /dev/null +++ "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/button_background_flo_color.xml" @@ -0,0 +1,10 @@ + + + + + + + diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/button_background_gray_color.xml" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/button_background_gray_color.xml" new file mode 100644 index 0000000..dbcaae2 --- /dev/null +++ "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/button_background_gray_color.xml" @@ -0,0 +1,10 @@ + + + + + + + diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/button_background_white_color.xml" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/button_background_white_color.xml" new file mode 100644 index 0000000..32e9583 --- /dev/null +++ "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/button_background_white_color.xml" @@ -0,0 +1,10 @@ + + + + + + + diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/discovery_banner_aos.jpg" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/discovery_banner_aos.jpg" new file mode 100644 index 0000000..c905515 Binary files /dev/null and "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/discovery_banner_aos.jpg" differ diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/fragment_look_chart_background.xml" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/fragment_look_chart_background.xml" new file mode 100644 index 0000000..64c040f --- /dev/null +++ "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/fragment_look_chart_background.xml" @@ -0,0 +1,16 @@ + + + + + + + + diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/fragment_look_chip_off_background.xml" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/fragment_look_chip_off_background.xml" new file mode 100644 index 0000000..43005ce --- /dev/null +++ "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/fragment_look_chip_off_background.xml" @@ -0,0 +1,16 @@ + + + + + + + + diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/fragment_look_chip_on_background.xml" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/fragment_look_chip_on_background.xml" new file mode 100644 index 0000000..ce894ed --- /dev/null +++ "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/fragment_look_chip_on_background.xml" @@ -0,0 +1,16 @@ + + + + + + + + diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/gray_radius.xml" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/gray_radius.xml" new file mode 100644 index 0000000..5b9a17d --- /dev/null +++ "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/gray_radius.xml" @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/ic_back.xml" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/ic_back.xml" new file mode 100644 index 0000000..af62026 --- /dev/null +++ "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/ic_back.xml" @@ -0,0 +1,9 @@ + + + diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/ic_bad.xml" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/ic_bad.xml" new file mode 100644 index 0000000..fe91f33 --- /dev/null +++ "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/ic_bad.xml" @@ -0,0 +1,32 @@ + + + + + + + + diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/ic_best.xml" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/ic_best.xml" new file mode 100644 index 0000000..72176da --- /dev/null +++ "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/ic_best.xml" @@ -0,0 +1,32 @@ + + + + + + + + diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/ic_bottom_home_no_select.png" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/ic_bottom_home_no_select.png" new file mode 100644 index 0000000..69a8ab6 Binary files /dev/null and "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/ic_bottom_home_no_select.png" differ diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/ic_bottom_home_select.png" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/ic_bottom_home_select.png" new file mode 100644 index 0000000..c0ff48e Binary files /dev/null and "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/ic_bottom_home_select.png" differ diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/ic_bottom_locker_no_select.png" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/ic_bottom_locker_no_select.png" new file mode 100644 index 0000000..a67dec3 Binary files /dev/null and "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/ic_bottom_locker_no_select.png" differ diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/ic_bottom_locker_select.png" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/ic_bottom_locker_select.png" new file mode 100644 index 0000000..042489f Binary files /dev/null and "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/ic_bottom_locker_select.png" differ diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/ic_bottom_look_no_select.png" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/ic_bottom_look_no_select.png" new file mode 100644 index 0000000..6c2f4f0 Binary files /dev/null and "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/ic_bottom_look_no_select.png" differ diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/ic_bottom_look_select.png" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/ic_bottom_look_select.png" new file mode 100644 index 0000000..3d169e4 Binary files /dev/null and "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/ic_bottom_look_select.png" differ diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/ic_bottom_my_no_select.png" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/ic_bottom_my_no_select.png" new file mode 100644 index 0000000..a67dec3 Binary files /dev/null and "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/ic_bottom_my_no_select.png" differ diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/ic_bottom_my_select.png" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/ic_bottom_my_select.png" new file mode 100644 index 0000000..042489f Binary files /dev/null and "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/ic_bottom_my_select.png" differ diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/ic_bottom_search_no_select.png" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/ic_bottom_search_no_select.png" new file mode 100644 index 0000000..a77b8c5 Binary files /dev/null and "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/ic_bottom_search_no_select.png" differ diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/ic_bottom_search_select.png" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/ic_bottom_search_select.png" new file mode 100644 index 0000000..d5c8a72 Binary files /dev/null and "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/ic_bottom_search_select.png" differ diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/ic_browse_arrow_right.png" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/ic_browse_arrow_right.png" new file mode 100644 index 0000000..71b588b Binary files /dev/null and "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/ic_browse_arrow_right.png" differ diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/ic_flo_logo.png" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/ic_flo_logo.png" new file mode 100644 index 0000000..643224d Binary files /dev/null and "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/ic_flo_logo.png" differ diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/ic_good.xml" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/ic_good.xml" new file mode 100644 index 0000000..5c4b19d --- /dev/null +++ "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/ic_good.xml" @@ -0,0 +1,32 @@ + + + + + + + + diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/ic_launcher_background.xml" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/ic_launcher_background.xml" new file mode 100644 index 0000000..07d5da9 --- /dev/null +++ "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/ic_launcher_background.xml" @@ -0,0 +1,170 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/ic_launcher_foreground.xml" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/ic_launcher_foreground.xml" new file mode 100644 index 0000000..2b068d1 --- /dev/null +++ "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/ic_launcher_foreground.xml" @@ -0,0 +1,30 @@ + + + + + + + + + + + \ No newline at end of file diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/ic_main_facebook.png" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/ic_main_facebook.png" new file mode 100644 index 0000000..83e9732 Binary files /dev/null and "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/ic_main_facebook.png" differ diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/ic_main_facebook_btn.png" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/ic_main_facebook_btn.png" new file mode 100644 index 0000000..83e9732 Binary files /dev/null and "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/ic_main_facebook_btn.png" differ diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/ic_main_instagram.png" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/ic_main_instagram.png" new file mode 100644 index 0000000..398ce61 Binary files /dev/null and "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/ic_main_instagram.png" differ diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/ic_main_instagram_btn.png" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/ic_main_instagram_btn.png" new file mode 100644 index 0000000..398ce61 Binary files /dev/null and "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/ic_main_instagram_btn.png" differ diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/ic_main_twitter.png" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/ic_main_twitter.png" new file mode 100644 index 0000000..6ddc68e Binary files /dev/null and "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/ic_main_twitter.png" differ diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/ic_main_twitter_btn.png" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/ic_main_twitter_btn.png" new file mode 100644 index 0000000..6ddc68e Binary files /dev/null and "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/ic_main_twitter_btn.png" differ diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/ic_main_youtube.png" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/ic_main_youtube.png" new file mode 100644 index 0000000..0c4ec93 Binary files /dev/null and "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/ic_main_youtube.png" differ diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/ic_main_youtube_btn.png" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/ic_main_youtube_btn.png" new file mode 100644 index 0000000..0c4ec93 Binary files /dev/null and "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/ic_main_youtube_btn.png" differ diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/ic_my_like_off.png" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/ic_my_like_off.png" new file mode 100644 index 0000000..c06e139 Binary files /dev/null and "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/ic_my_like_off.png" differ diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/ic_my_like_on.png" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/ic_my_like_on.png" new file mode 100644 index 0000000..22577c0 Binary files /dev/null and "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/ic_my_like_on.png" differ diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/ic_soso.xml" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/ic_soso.xml" new file mode 100644 index 0000000..9b02528 --- /dev/null +++ "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/ic_soso.xml" @@ -0,0 +1,32 @@ + + + + + + + + diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/ic_worst.xml" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/ic_worst.xml" new file mode 100644 index 0000000..c6b43a2 --- /dev/null +++ "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/ic_worst.xml" @@ -0,0 +1,32 @@ + + + + + + + + diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/ico_20_logo_tid_white.png" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/ico_20_logo_tid_white.png" new file mode 100644 index 0000000..c6f4d4f Binary files /dev/null and "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/ico_20_logo_tid_white.png" differ diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/icon_browse_arrow_right.png" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/icon_browse_arrow_right.png" new file mode 100644 index 0000000..71b588b Binary files /dev/null and "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/icon_browse_arrow_right.png" differ diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/img_album_exp.png" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/img_album_exp.png" new file mode 100644 index 0000000..6e3f38a Binary files /dev/null and "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/img_album_exp.png" differ diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/img_album_exp2.png" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/img_album_exp2.png" new file mode 100644 index 0000000..28ea3ee Binary files /dev/null and "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/img_album_exp2.png" differ diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/img_album_exp3.jpg" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/img_album_exp3.jpg" new file mode 100644 index 0000000..6641600 Binary files /dev/null and "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/img_album_exp3.jpg" differ diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/img_album_exp4.jpg" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/img_album_exp4.jpg" new file mode 100644 index 0000000..aecebb6 Binary files /dev/null and "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/img_album_exp4.jpg" differ diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/img_album_exp5.jpg" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/img_album_exp5.jpg" new file mode 100644 index 0000000..6a8d870 Binary files /dev/null and "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/img_album_exp5.jpg" differ diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/img_album_exp6.jpg" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/img_album_exp6.jpg" new file mode 100644 index 0000000..48202f2 Binary files /dev/null and "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/img_album_exp6.jpg" differ diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/img_album_lp.png" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/img_album_lp.png" new file mode 100644 index 0000000..29fb1b4 Binary files /dev/null and "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/img_album_lp.png" differ diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/img_default_4_x_1.png" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/img_default_4_x_1.png" new file mode 100644 index 0000000..926d34f Binary files /dev/null and "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/img_default_4_x_1.png" differ diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/img_first_album_default.png" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/img_first_album_default.png" new file mode 100644 index 0000000..926d34f Binary files /dev/null and "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/img_first_album_default.png" differ diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/img_home_viewpager_exp.png" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/img_home_viewpager_exp.png" new file mode 100644 index 0000000..da78032 Binary files /dev/null and "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/img_home_viewpager_exp.png" differ diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/img_home_viewpager_exp2.png" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/img_home_viewpager_exp2.png" new file mode 100644 index 0000000..50fa4be Binary files /dev/null and "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/img_home_viewpager_exp2.png" differ diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/img_jenre_exp_1.png" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/img_jenre_exp_1.png" new file mode 100644 index 0000000..0d43e8e Binary files /dev/null and "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/img_jenre_exp_1.png" differ diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/img_jenre_exp_2.png" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/img_jenre_exp_2.png" new file mode 100644 index 0000000..f03efb2 Binary files /dev/null and "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/img_jenre_exp_2.png" differ diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/img_jenre_exp_3.png" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/img_jenre_exp_3.png" new file mode 100644 index 0000000..51de684 Binary files /dev/null and "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/img_jenre_exp_3.png" differ diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/img_potcast_exp.png" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/img_potcast_exp.png" new file mode 100644 index 0000000..50a46e0 Binary files /dev/null and "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/img_potcast_exp.png" differ diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/img_video_exp.png" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/img_video_exp.png" new file mode 100644 index 0000000..7f6b05f Binary files /dev/null and "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/img_video_exp.png" differ diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/kakako_44.png" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/kakako_44.png" new file mode 100644 index 0000000..243298e Binary files /dev/null and "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/kakako_44.png" differ diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/main_btm_color_selector.xml" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/main_btm_color_selector.xml" new file mode 100644 index 0000000..3ecf8a7 --- /dev/null +++ "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/main_btm_color_selector.xml" @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/main_btm_home_selector.xml" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/main_btm_home_selector.xml" new file mode 100644 index 0000000..b018478 --- /dev/null +++ "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/main_btm_home_selector.xml" @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/main_btm_look_selector.xml" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/main_btm_look_selector.xml" new file mode 100644 index 0000000..89ced75 --- /dev/null +++ "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/main_btm_look_selector.xml" @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/main_btm_my_selector.xml" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/main_btm_my_selector.xml" new file mode 100644 index 0000000..d6739bf --- /dev/null +++ "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/main_btm_my_selector.xml" @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/main_btm_search_selector.xml" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/main_btm_search_selector.xml" new file mode 100644 index 0000000..e6e823f --- /dev/null +++ "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/main_btm_search_selector.xml" @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/naver_44.png" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/naver_44.png" new file mode 100644 index 0000000..d984487 Binary files /dev/null and "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/naver_44.png" differ diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/nugu_btn_down.png" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/nugu_btn_down.png" new file mode 100644 index 0000000..03a04c5 Binary files /dev/null and "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/nugu_btn_down.png" differ diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/nugu_btn_pause_32.png" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/nugu_btn_pause_32.png" new file mode 100644 index 0000000..9388aa3 Binary files /dev/null and "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/nugu_btn_pause_32.png" differ diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/nugu_btn_play_32.png" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/nugu_btn_play_32.png" new file mode 100644 index 0000000..b781e4c Binary files /dev/null and "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/nugu_btn_play_32.png" differ diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/nugu_btn_random_inactive.png" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/nugu_btn_random_inactive.png" new file mode 100644 index 0000000..fe4f880 Binary files /dev/null and "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/nugu_btn_random_inactive.png" differ diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/nugu_btn_repeat_inactive.png" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/nugu_btn_repeat_inactive.png" new file mode 100644 index 0000000..1e4044d Binary files /dev/null and "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/nugu_btn_repeat_inactive.png" differ diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/nugu_btn_skip_next_32.png" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/nugu_btn_skip_next_32.png" new file mode 100644 index 0000000..fc02f28 Binary files /dev/null and "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/nugu_btn_skip_next_32.png" differ diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/nugu_btn_skip_previous_32.png" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/nugu_btn_skip_previous_32.png" new file mode 100644 index 0000000..03ec854 Binary files /dev/null and "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/nugu_btn_skip_previous_32.png" differ diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/oval_button.xml" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/oval_button.xml" new file mode 100644 index 0000000..66bde78 --- /dev/null +++ "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/oval_button.xml" @@ -0,0 +1,7 @@ + + + + + + diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/splash.xml" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/splash.xml" new file mode 100644 index 0000000..ace8a7d --- /dev/null +++ "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/splash.xml" @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/textview_background_radius.xml" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/textview_background_radius.xml" new file mode 100644 index 0000000..53beead --- /dev/null +++ "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/textview_background_radius.xml" @@ -0,0 +1,15 @@ + + + + + + + + + + + diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/textview_background_select_color_radius.xml" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/textview_background_select_color_radius.xml" new file mode 100644 index 0000000..ea8dc88 --- /dev/null +++ "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/textview_background_select_color_radius.xml" @@ -0,0 +1,13 @@ + + + + + + + + + diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/widget_black_play.png" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/widget_black_play.png" new file mode 100644 index 0000000..0ec2700 Binary files /dev/null and "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/drawable/widget_black_play.png" differ diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/layout/activity_login.xml" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/layout/activity_login.xml" new file mode 100644 index 0000000..81aa296 --- /dev/null +++ "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/layout/activity_login.xml" @@ -0,0 +1,288 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/layout/activity_main.xml" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/layout/activity_main.xml" new file mode 100644 index 0000000..e3c5db4 --- /dev/null +++ "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/layout/activity_main.xml" @@ -0,0 +1,137 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/layout/activity_signup.xml" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/layout/activity_signup.xml" new file mode 100644 index 0000000..492d610 --- /dev/null +++ "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/layout/activity_signup.xml" @@ -0,0 +1,226 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/layout/activity_song.xml" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/layout/activity_song.xml" new file mode 100644 index 0000000..1902dbb --- /dev/null +++ "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/layout/activity_song.xml" @@ -0,0 +1,309 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/layout/fragment_album.xml" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/layout/fragment_album.xml" new file mode 100644 index 0000000..67127c4 --- /dev/null +++ "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/layout/fragment_album.xml" @@ -0,0 +1,134 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/layout/fragment_detail.xml" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/layout/fragment_detail.xml" new file mode 100644 index 0000000..0980e3f --- /dev/null +++ "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/layout/fragment_detail.xml" @@ -0,0 +1,22 @@ + + + + + + + + + + \ No newline at end of file diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/layout/fragment_home.xml" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/layout/fragment_home.xml" new file mode 100644 index 0000000..115921a --- /dev/null +++ "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/layout/fragment_home.xml" @@ -0,0 +1,107 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/layout/fragment_locker.xml" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/layout/fragment_locker.xml" new file mode 100644 index 0000000..9e6fa84 --- /dev/null +++ "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/layout/fragment_locker.xml" @@ -0,0 +1,111 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/layout/fragment_look.xml" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/layout/fragment_look.xml" new file mode 100644 index 0000000..3d24baf --- /dev/null +++ "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/layout/fragment_look.xml" @@ -0,0 +1,520 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/layout/fragment_music_file.xml" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/layout/fragment_music_file.xml" new file mode 100644 index 0000000..3f5eaa1 --- /dev/null +++ "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/layout/fragment_music_file.xml" @@ -0,0 +1,21 @@ + + + + + + + + + + \ No newline at end of file diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/layout/fragment_saved_album.xml" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/layout/fragment_saved_album.xml" new file mode 100644 index 0000000..4583fb5 --- /dev/null +++ "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/layout/fragment_saved_album.xml" @@ -0,0 +1,21 @@ + + + + + + + + + + \ No newline at end of file diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/layout/fragment_saved_song.xml" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/layout/fragment_saved_song.xml" new file mode 100644 index 0000000..26fe008 --- /dev/null +++ "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/layout/fragment_saved_song.xml" @@ -0,0 +1,19 @@ + + + + + + + + + + \ No newline at end of file diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/layout/fragment_song.xml" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/layout/fragment_song.xml" new file mode 100644 index 0000000..1411de0 --- /dev/null +++ "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/layout/fragment_song.xml" @@ -0,0 +1,31 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/layout/fragment_video.xml" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/layout/fragment_video.xml" new file mode 100644 index 0000000..a9aa91a --- /dev/null +++ "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/layout/fragment_video.xml" @@ -0,0 +1,20 @@ + + + + + + + + + \ No newline at end of file diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/layout/item_album.xml" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/layout/item_album.xml" new file mode 100644 index 0000000..28eaa15 --- /dev/null +++ "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/layout/item_album.xml" @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/layout/item_home_pager.xml" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/layout/item_home_pager.xml" new file mode 100644 index 0000000..2469aed --- /dev/null +++ "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/layout/item_home_pager.xml" @@ -0,0 +1,155 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/layout/item_locker_album.xml" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/layout/item_locker_album.xml" new file mode 100644 index 0000000..4e61dc5 --- /dev/null +++ "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/layout/item_locker_album.xml" @@ -0,0 +1,85 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/layout/item_saved_song.xml" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/layout/item_saved_song.xml" new file mode 100644 index 0000000..b18ab9c --- /dev/null +++ "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/layout/item_saved_song.xml" @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/layout/item_song_text.xml" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/layout/item_song_text.xml" new file mode 100644 index 0000000..c177818 --- /dev/null +++ "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/layout/item_song_text.xml" @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/menu/bottom_nav_menu.xml" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/menu/bottom_nav_menu.xml" new file mode 100644 index 0000000..1e1fdf9 --- /dev/null +++ "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/menu/bottom_nav_menu.xml" @@ -0,0 +1,28 @@ + + + + + + + + \ No newline at end of file diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml" new file mode 100644 index 0000000..6f3b755 --- /dev/null +++ "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml" @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml" new file mode 100644 index 0000000..6f3b755 --- /dev/null +++ "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml" @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/mipmap-hdpi/ic_launcher.webp" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/mipmap-hdpi/ic_launcher.webp" new file mode 100644 index 0000000..c209e78 Binary files /dev/null and "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/mipmap-hdpi/ic_launcher.webp" differ diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp" new file mode 100644 index 0000000..b2dfe3d Binary files /dev/null and "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp" differ diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/mipmap-mdpi/ic_launcher.webp" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/mipmap-mdpi/ic_launcher.webp" new file mode 100644 index 0000000..4f0f1d6 Binary files /dev/null and "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/mipmap-mdpi/ic_launcher.webp" differ diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp" new file mode 100644 index 0000000..62b611d Binary files /dev/null and "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp" differ diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/mipmap-xhdpi/ic_launcher.webp" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/mipmap-xhdpi/ic_launcher.webp" new file mode 100644 index 0000000..948a307 Binary files /dev/null and "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/mipmap-xhdpi/ic_launcher.webp" differ diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp" new file mode 100644 index 0000000..1b9a695 Binary files /dev/null and "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp" differ diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp" new file mode 100644 index 0000000..28d4b77 Binary files /dev/null and "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp" differ diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp" new file mode 100644 index 0000000..9287f50 Binary files /dev/null and "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp" differ diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp" new file mode 100644 index 0000000..aa7d642 Binary files /dev/null and "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp" differ diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp" new file mode 100644 index 0000000..9126ae3 Binary files /dev/null and "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp" differ diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/raw/music_bboom.mp3" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/raw/music_bboom.mp3" new file mode 100644 index 0000000..b555591 Binary files /dev/null and "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/raw/music_bboom.mp3" differ diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/raw/music_boy.mp3" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/raw/music_boy.mp3" new file mode 100644 index 0000000..c19f239 Binary files /dev/null and "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/raw/music_boy.mp3" differ diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/raw/music_butter.mp3" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/raw/music_butter.mp3" new file mode 100644 index 0000000..a6b952f Binary files /dev/null and "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/raw/music_butter.mp3" differ diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/raw/music_flu.mp3" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/raw/music_flu.mp3" new file mode 100644 index 0000000..e6a0d7e Binary files /dev/null and "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/raw/music_flu.mp3" differ diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/raw/music_lilac.mp3" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/raw/music_lilac.mp3" new file mode 100644 index 0000000..2e3c0d9 Binary files /dev/null and "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/raw/music_lilac.mp3" differ diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/raw/music_next.mp3" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/raw/music_next.mp3" new file mode 100644 index 0000000..6261b05 Binary files /dev/null and "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/raw/music_next.mp3" differ diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/values-night/themes.xml" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/values-night/themes.xml" new file mode 100644 index 0000000..d25b0f2 --- /dev/null +++ "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/values-night/themes.xml" @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/values-v35/themes.xml" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/values-v35/themes.xml" new file mode 100644 index 0000000..35ed2bb --- /dev/null +++ "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/values-v35/themes.xml" @@ -0,0 +1,26 @@ + + + + + \ No newline at end of file diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/values/colors.xml" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/values/colors.xml" new file mode 100644 index 0000000..d60b4b8 --- /dev/null +++ "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/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/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/values/strings.xml" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/values/strings.xml" new file mode 100644 index 0000000..48293d4 --- /dev/null +++ "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/values/strings.xml" @@ -0,0 +1,15 @@ + + My Application + 오늘 하루는 어땠나요? + 감정우표를 선택해주세요 + 선택한 감정우표를 기반으로 맞춤형 질문이 배달됩니다 + 더없이 행복한 하루였어요 + 들뜨고 흥분돼요 + 평범한 하루였어요 + 생각이 많아지고 불안해요 + 부글부글 화가 나요 + + 둘러보기 + 검색 + 보관함 + \ No newline at end of file diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/values/themes.xml" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/values/themes.xml" new file mode 100644 index 0000000..e61a23d --- /dev/null +++ "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/values/themes.xml" @@ -0,0 +1,34 @@ + + + + + + + \ No newline at end of file diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/xml/backup_rules.xml" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/xml/backup_rules.xml" new file mode 100644 index 0000000..4df9255 --- /dev/null +++ "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/xml/backup_rules.xml" @@ -0,0 +1,13 @@ + + + + \ No newline at end of file diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/xml/data_extraction_rules.xml" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/xml/data_extraction_rules.xml" new file mode 100644 index 0000000..9ee9997 --- /dev/null +++ "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/main/res/xml/data_extraction_rules.xml" @@ -0,0 +1,19 @@ + + + + + + + \ No newline at end of file diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/test/java/com/example/myapplication/ExampleUnitTest.kt" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/test/java/com/example/myapplication/ExampleUnitTest.kt" new file mode 100644 index 0000000..e500fb8 --- /dev/null +++ "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/app/src/test/java/com/example/myapplication/ExampleUnitTest.kt" @@ -0,0 +1,17 @@ +package com.example.myapplication + +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/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/build.gradle.kts" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/build.gradle.kts" new file mode 100644 index 0000000..922f551 --- /dev/null +++ "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/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/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/build/reports/problems/problems-report.html" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/build/reports/problems/problems-report.html" new file mode 100644 index 0000000..5e8ce7c --- /dev/null +++ "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/build/reports/problems/problems-report.html" @@ -0,0 +1,663 @@ + + + + + + + + + + + + + Gradle Configuration Cache + + + +
+ +
+ Loading... +
+ + + + + + diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/gradle.properties" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/gradle.properties" new file mode 100644 index 0000000..20e2a01 --- /dev/null +++ "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/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/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/gradle/libs.versions.toml" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/gradle/libs.versions.toml" new file mode 100644 index 0000000..aacd30c --- /dev/null +++ "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/gradle/libs.versions.toml" @@ -0,0 +1,30 @@ +[versions] +agp = "8.12.2" +kotlin = "2.0.21" +coreKtx = "1.17.0" +junit = "4.13.2" +junitVersion = "1.3.0" +espressoCore = "3.7.0" +appcompat = "1.7.1" +material = "1.12.0" +activity = "1.10.1" +constraintlayout = "2.2.1" +roomCommonJvm = "2.8.0" +roomKtx = "2.8.3" + +[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-room-common-jvm = { group = "androidx.room", name = "room-common-jvm", version.ref = "roomCommonJvm" } +androidx-room-ktx = { group = "androidx.room", name = "room-ktx", version.ref = "roomKtx" } + +[plugins] +android-application = { id = "com.android.application", version.ref = "agp" } +kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" } + diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/gradle/wrapper/gradle-wrapper.jar" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/gradle/wrapper/gradle-wrapper.jar" new file mode 100644 index 0000000..e708b1c Binary files /dev/null and "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/gradle/wrapper/gradle-wrapper.jar" differ diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/gradle/wrapper/gradle-wrapper.properties" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/gradle/wrapper/gradle-wrapper.properties" new file mode 100644 index 0000000..5dba072 --- /dev/null +++ "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/gradle/wrapper/gradle-wrapper.properties" @@ -0,0 +1,6 @@ +#Mon Sep 15 18:45:34 KST 2025 +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-8.13-bin.zip +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/gradlew" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/gradlew" new file mode 100755 index 0000000..4f906e0 --- /dev/null +++ "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/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/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/gradlew.bat" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/gradlew.bat" new file mode 100644 index 0000000..107acd3 --- /dev/null +++ "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/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/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/local.properties" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/local.properties" new file mode 100644 index 0000000..a739a99 --- /dev/null +++ "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/local.properties" @@ -0,0 +1,10 @@ +## This file is automatically generated by Android Studio. +# Do not modify this file -- YOUR CHANGES WILL BE ERASED! +# +# This file should *NOT* be checked into Version Control Systems, +# as it contains information specific to your local configuration. +# +# Location of the SDK. This is only used by Gradle. +# For customization when using a Version Control System, please read the +# header note. +sdk.dir=/Users/seok/Library/Android/sdk \ No newline at end of file diff --git "a/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/settings.gradle.kts" "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/settings.gradle.kts" new file mode 100644 index 0000000..7e67774 --- /dev/null +++ "b/\354\241\260\353\202\230\353\213\250-\354\241\260\352\262\275\354\204\235/Week_8/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 = "My Application" +include(":app") + \ No newline at end of file