카테고리 없음

UMC 2주차 코드

쿠뱃봉 2022. 3. 25. 16:13

1.activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <FrameLayout
        android:id="@+id/main_frm"
        android:layout_width="match_parent"
        android:layout_height="0dp"

        app:layout_constraintBottom_toTopOf="@id/main_player_cl"
        app:layout_constraintTop_toTopOf="parent">


    </FrameLayout>


    <androidx.constraintlayout.widget.ConstraintLayout
        android:id="@+id/main_player_cl"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="#F9F9F9"
        android:paddingVertical="5dp"
        app:layout_constraintBottom_toTopOf="@id/main_bnv">

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginStart="20dp"
            android:orientation="vertical"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent">

            <TextView
                android:id="@+id/main_player_cl_title"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="제목"
                android:textColor="@color/black"
                android:textSize="13sp" />

            <TextView
                android:id="@+id/main_player_cl_singer"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="가수"

                android:textSize="12sp" />

        </LinearLayout>

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:gravity="center_vertical"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintTop_toTopOf="parent">

            <ImageView
                android:layout_width="40dp"
                android:layout_height="40dp"
                android:src="@drawable/btn_miniplayer_previous" />

            <ImageView
                android:id="@+id/main_miniplayer_btn"
                android:layout_width="40dp"
                android:layout_height="40dp"
                android:src="@drawable/btn_miniplayer_play" />

            <ImageView
                android:id="@+id/main_pause_btn"
                android:layout_width="40dp"
                android:layout_height="40dp"
                android:src="@drawable/btn_miniplay_pause"
                android:visibility="gone" />


            <ImageView
                android:layout_width="40dp"
                android:layout_height="40dp"
                android:src="@drawable/btn_miniplayer_next" />


            <ImageView
                android:layout_width="25dp"
                android:layout_height="25dp"
                android:layout_marginHorizontal="15dp"
                android:src="@drawable/btn_miniplayer_go_list" />


        </LinearLayout>


    </androidx.constraintlayout.widget.ConstraintLayout>


    <com.google.android.material.bottomnavigation.BottomNavigationView
        android:id="@+id/main_bnv"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:itemIconSize="20dp"
        app:itemIconTint="@drawable/btm_color_selector"
        app:itemTextColor="@drawable/btm_color_selector"
        app:labelVisibilityMode="labeled"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:menu="@menu/bottom_nav_menu" />

</androidx.constraintlayout.widget.ConstraintLayout>

 

2.activity_song.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <ImageButton
        android:id="@+id/song_setting_ib"
        android:layout_width="25dp"
        android:layout_height="25dp"
        android:layout_marginStart="20dp"
        android:layout_marginTop="40dp"
        android:background="@color/white"
        android:scaleType="fitXY"
        android:src="@drawable/btn_player_setting"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <ImageButton
        android:id="@+id/song_eq_ib"
        android:layout_width="25dp"
        android:layout_height="25dp"
        android:layout_marginStart="10dp"
        android:background="@color/white"
        android:scaleType="fitXY"
        android:src="@drawable/btn_player_eq_off"
        app:layout_constraintBottom_toBottomOf="@+id/song_setting_ib"
        app:layout_constraintStart_toEndOf="@+id/song_setting_ib"
        app:layout_constraintTop_toTopOf="@+id/song_setting_ib" />

    <ImageButton
        android:id="@+id/song_down_ib"
        android:layout_width="25dp"
        android:layout_height="25dp"
        android:layout_marginEnd="15dp"
        android:background="@color/white"
        android:scaleType="fitXY"
        android:src="@drawable/nugu_btn_down"
        app:layout_constraintBottom_toBottomOf="@+id/song_eq_ib"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintTop_toTopOf="@+id/song_eq_ib" />


    <ImageButton
        android:id="@+id/song_more_ib"
        android:layout_width="25dp"
        android:layout_height="25dp"
        android:layout_marginTop="15dp"
        android:background="@color/white"
        android:scaleType="fitXY"
        android:src="@drawable/btn_player_more"
        app:layout_constraintEnd_toEndOf="@+id/song_down_ib"
        app:layout_constraintStart_toStartOf="@+id/song_down_ib"
        app:layout_constraintTop_toBottomOf="@+id/song_down_ib" />


    <TextView
        android:id="@+id/song_music_title_tv"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="20dp"
        android:text="제목"
        android:textColor="@color/black"
        android:textSize="18sp"
        android:textStyle="bold"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/song_more_ib" />

    <TextView
        android:id="@+id/song_singer_name_tv"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp"
        android:text="가수 이름"
        android:textColor="@color/black"
        android:textSize="14sp"
        app:layout_constraintEnd_toEndOf="@+id/song_music_title_tv"
        app:layout_constraintStart_toStartOf="@+id/song_music_title_tv"
        app:layout_constraintTop_toBottomOf="@+id/song_music_title_tv" />

    <ImageView
        android:id="@+id/song_singer_more_iv"
        android:layout_width="20dp"
        android:layout_height="20dp"
        android:src="@drawable/btn_main_arrow_more"
        app:layout_constraintBottom_toBottomOf="@+id/song_singer_name_tv"
        app:layout_constraintStart_toEndOf="@+id/song_singer_name_tv"
        app:layout_constraintTop_toTopOf="@+id/song_singer_name_tv" />


    <ImageView
        android:id="@+id/song_album_iv"
        android:layout_width="280dp"
        android:layout_height="280dp"
        android:layout_marginTop="20dp"
        android:scaleType="fitXY"
        android:src="@drawable/img_album_exp2"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.496"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/song_singer_more_iv" />

    <TextView
        android:id="@+id/song_music_lyrics_01_iv"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="20dp"
        android:text="나라는 꽃가루에"
        android:textSize="14sp"
        app:layout_constraintEnd_toEndOf="@+id/song_album_iv"
        app:layout_constraintStart_toStartOf="@+id/song_album_iv"
        app:layout_constraintTop_toBottomOf="@+id/song_album_iv" />

    <TextView
        android:id="@+id/song_music_lyrics_02_iv"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="5dp"
        android:text="눈이 따끔해 아야"
        android:textSize="14sp"
        app:layout_constraintEnd_toEndOf="@+id/song_music_lyrics_01_iv"
        app:layout_constraintStart_toStartOf="@+id/song_music_lyrics_01_iv"
        app:layout_constraintTop_toBottomOf="@+id/song_music_lyrics_01_iv" />


    <LinearLayout
        android:id="@+id/song_like_iv_layout"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="25dp"
        android:orientation="horizontal"
        app:layout_constraintEnd_toEndOf="@+id/song_album_iv"
        app:layout_constraintStart_toStartOf="@+id/song_album_iv"
        app:layout_constraintTop_toBottomOf="@+id/song_music_lyrics_02_iv">

        <ImageView
            android:id="@+id/song_like_iv"
            android:layout_width="25dp"
            android:layout_height="25dp"
            android:src="@drawable/ic_my_like_off" />

        <ImageView
            android:id="@+id/song_unlike_iv"
            android:layout_width="25dp"
            android:layout_height="25dp"
            android:layout_marginStart="50dp"
            android:src="@drawable/btn_player_unlike_off" />

    </LinearLayout>

    <SeekBar
        android:id="@+id/song_progress_sb"
        android:layout_width="match_parent"
        android:layout_height="10dp"
        android:layout_marginStart="20dp"
        android:layout_marginEnd="20dp"
        android:layout_marginBottom="20dp"
        android:background="@null"
        android:paddingStart="0dp"
        android:paddingEnd="0dp"
        android:progress="0"
        android:progressBackgroundTint="@color/song_player_bg"
        android:progressTint="@color/song_player"
        android:thumb="@color/transparent"
        android:max="100000"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/song_like_iv_layout"  />

    <!--    <View-->
    <!--        android:id="@+id/song_progressbar_backgroud_view"-->
    <!--        android:layout_width="match_parent"-->
    <!--        android:layout_height="2dp"-->
    <!--        android:layout_marginStart="20dp"-->
    <!--        android:layout_marginTop="15dp"-->
    <!--        android:layout_marginEnd="20dp"-->
    <!--        android:background="@color/gray_color"-->
    <!--        app:layout_constraintEnd_toEndOf="parent"-->
    <!--        app:layout_constraintStart_toStartOf="parent"-->
    <!--        app:layout_constraintTop_toBottomOf="@+id/song_like_iv_layout" />-->

    <!--    <View-->
    <!--        android:id="@+id/song_progressbar_view"-->
    <!--        android:layout_width="50dp"-->
    <!--        android:layout_height="2dp"-->
    <!--        android:layout_marginStart="20dp"-->
    <!--        android:background="@color/select_color"-->
    <!--        app:layout_constraintBottom_toBottomOf="@+id/song_progressbar_backgroud_view"-->
    <!--        app:layout_constraintStart_toStartOf="parent"-->
    <!--        app:layout_constraintTop_toTopOf="@+id/song_progressbar_backgroud_view" />-->

    <TextView
        android:id="@+id/song_start_time_tv"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="00:00"
        android:textColor="@color/select_color"
        app:layout_constraintStart_toStartOf="@+id/song_progress_sb"
        app:layout_constraintTop_toBottomOf="@+id/song_progress_sb" />


    <TextView
        android:id="@+id/song_end_time_tv"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="01:00"
        android:textColor="@color/gray_color"
        app:layout_constraintEnd_toEndOf="@+id/song_progress_sb"
        app:layout_constraintTop_toBottomOf="@+id/song_progress_sb" />


    <LinearLayout
        android:id="@+id/song_player_layout"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center_vertical"
        app:layout_constraintBottom_toTopOf="@+id/song_related_iv"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/song_progress_sb">

        <ImageView
            android:id="@+id/song_previous_iv"
            android:layout_width="60dp"
            android:layout_height="60dp"
            android:layout_marginEnd="10dp"
            android:src="@drawable/btn_miniplayer_previous" />

        <ImageView
            android:id="@+id/song_miniplayer_iv"
            android:layout_width="60dp"
            android:layout_height="60dp"
            android:src="@drawable/btn_miniplayer_play" />

        <ImageView
            android:id="@+id/song_pause_iv"
            android:layout_width="60dp"
            android:layout_height="60dp"
            android:src="@drawable/btn_miniplay_mvpause"
            android:visibility="gone" />

        <ImageView
            android:id="@+id/song_next_iv"
            android:layout_width="60dp"
            android:layout_height="60dp"
            android:layout_marginStart="10dp"
            android:src="@drawable/btn_miniplayer_next" />

    </LinearLayout>


    <ImageView
        android:id="@+id/song_repeat_iv"
        android:layout_width="60dp"
        android:layout_height="60dp"
        android:layout_marginEnd="30dp"
        android:src="@drawable/nugu_btn_repeat_inactive"
        app:layout_constraintBottom_toBottomOf="@+id/song_player_layout"
        app:layout_constraintEnd_toStartOf="@+id/song_player_layout"
        app:layout_constraintTop_toTopOf="@+id/song_player_layout" />

    <ImageView
        android:id="@+id/song_random_iv"
        android:layout_width="60dp"
        android:layout_height="60dp"
        android:layout_marginStart="30dp"
        android:src="@drawable/nugu_btn_random_inactive"
        app:layout_constraintBottom_toBottomOf="@+id/song_player_layout"
        app:layout_constraintStart_toEndOf="@+id/song_player_layout"
        app:layout_constraintTop_toTopOf="@+id/song_player_layout" />

    <ImageView
        android:id="@+id/song_instagram_iv"
        android:layout_width="30dp"
        android:layout_height="30dp"
        android:layout_marginStart="20dp"
        android:layout_marginBottom="20dp"
        android:src="@drawable/btn_actionbar_instagram"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintStart_toStartOf="parent" />


    <ImageView
        android:id="@+id/song_list_iv"
        android:layout_width="30dp"
        android:layout_height="30dp"
        android:layout_marginEnd="20dp"
        android:layout_marginBottom="20dp"
        android:src="@drawable/btn_player_go_list"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent" />

    <ImageView
        android:id="@+id/song_related_iv"
        android:layout_width="80dp"
        android:layout_height="30dp"
        android:layout_marginBottom="20dp"
        android:src="@drawable/btn_player_related"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent" />


</androidx.constraintlayout.widget.ConstraintLayout>

 

3.SongActivity.kt

package com.example.flo

import android.os.Bundle
import android.os.PersistableBundle
import android.view.LayoutInflater
import android.view.View
import androidx.appcompat.app.AppCompatActivity
import com.example.flo.databinding.ActivitySongBinding


class SongActivity : AppCompatActivity(){

    lateinit var binding : ActivitySongBinding
    //R.id.song_music_title_tv.text=intent.getStringExtra

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding= ActivitySongBinding.inflate(layoutInflater)
        setContentView(binding.root)
        binding.songDownIb.setOnClickListener {
            finish()
        }

        binding.songMiniplayerIv.setOnClickListener {
            setPlayerStatus(false)
        }

        binding.songPauseIv.setOnClickListener {
            setPlayerStatus(true)
        }

    }


    private fun setPlayerStatus (isPlaying : Boolean){

        if(isPlaying){
            binding.songMiniplayerIv.visibility = View.GONE
            binding.songPauseIv.visibility = View.VISIBLE

        } else {
            binding.songMiniplayerIv.visibility = View.VISIBLE
            binding.songPauseIv.visibility = View.GONE

        }

    }

}

 

4.AlbumFragment.kt

package com.example.flo

import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentActivity
import com.example.flo.databinding.FragmentAlbumBinding

class AlbumFragment : Fragment() {

    lateinit var binding : FragmentAlbumBinding

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

        binding.albumBackIv.setOnClickListener {
            (context as MainActivity).supportFragmentManager.beginTransaction().replace(R.id.main_frm,HomeFragment()).commitAllowingStateLoss()
        }

        return binding.root
    }

}

 

5.MainActivity.kt

package com.example.flo

import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.TextView
import com.example.flo.databinding.ActivityMainBinding

class MainActivity : AppCompatActivity() {

    lateinit var binding: ActivityMainBinding

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


        binding.mainPlayerCl.setOnClickListener{
            //startActivity(Intent(this,SongActivity::class.java))
            //intent로 값 넘기기
//            val title= R.id.main_player_cl_title.text.toString()
//            val singer=R.id.main_player_cl_singer.text.toString()

            val intent = Intent(this,SongActivity::class.java)
//            intent.putExtra("Title",title)
//            intent.putExtra("Singer",singer)
            startActivity(intent)
        }


        initBottomNavigation()

    }

    private fun initBottomNavigation(){

        supportFragmentManager.beginTransaction()
            .replace(R.id.main_frm, HomeFragment())
            .commitAllowingStateLoss()

        binding.mainBnv.setOnItemSelectedListener{ item ->
            when (item.itemId) {

                R.id.homeFragment -> {
                    supportFragmentManager.beginTransaction()
                        .replace(R.id.main_frm, HomeFragment())
                        .commitAllowingStateLoss()
                    return@setOnItemSelectedListener true
                }

                R.id.lookFragment -> {
                    supportFragmentManager.beginTransaction()
                        .replace(R.id.main_frm, LookFragment())
                        .commitAllowingStateLoss()
                    return@setOnItemSelectedListener true
                }
                R.id.searchFragment -> {
                    supportFragmentManager.beginTransaction()
                        .replace(R.id.main_frm, SearchFragment())
                        .commitAllowingStateLoss()
                    return@setOnItemSelectedListener true
                }
                R.id.lockerFragment -> {
                    supportFragmentManager.beginTransaction()
                        .replace(R.id.main_frm, LockerFragment())
                        .commitAllowingStateLoss()
                    return@setOnItemSelectedListener true
                }
            }
            false
        }
    }
}

6.HomeFragment.kt

package com.example.flo

import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.Fragment
import com.example.flo.databinding.FragmentHomeBinding

class HomeFragment : Fragment() {

    lateinit var binding: FragmentHomeBinding

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

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