요약
1. 앱 아이콘 변경함
2. 별명 입력 액티비티 만듬
3. 음악 재생 기능 만듬
본문
1. 앱 아이콘 변경함
우선 아이콘부터 만들었다.
프로젝트에서 New -> Image Asset을 누르면
이렇게 나온다. 그럼 Source Asset - Path에서 아이콘에 쓸 그림을 가져온다.
그리고 AndroidManifest.xml의 코드를 수정한다.
android:icon="@mipmap/아이콘에 쓸 이미지의 파일명"
android:roundIcon="@mipmap/아이콘에 쓸 이미지의 파일명_round"
이렇게.
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.bodan.maplebgm">
<application
android:allowBackup="true"
android:hardwareAccelerated="false"
android:icon="@mipmap/ic_main"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_main_round"
android:supportsRtl="true"
android:theme="@style/Theme.Maplebgm">
<activity
android:name=".LoginActivity"
android:exported="false" />
<activity
android:name=".PlayActivity"
android:exported="false" />
<activity
android:name=".MainActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
2. 별명 입력 액티비티 만듬
EditText를 생성하여 이곳에 별명을 입력할 수 있게 하였다.
근데 사실 별명은 지금은 의미없긴 한데 앱을 다 만든다면 기능을 확장시켜 개인 프로젝트를 이어가고 싶어서.. 나중에 필요할까봐..
그리고 뷰 바인딩을 사용하여 findViewById를 일일히 입력하지 않아도 버튼이나 텍스트 등을 참조할 수 있도록 하였다.
별명을 입력하고 생성 버튼을 누르면, Play 액티비티로 넘어갈 때 putExtra()를 이용하여 입력한 별명을 가지고 갈 수 있도록 하였다.
LoginActivity.kt
package com.bodan.maplebgm
import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Toast
import com.bodan.maplebgm.databinding.ActivityLoginBinding
class LoginActivity : AppCompatActivity() {
// 뷰 바인딩
private var mBinding : ActivityLoginBinding? = null
private val binding get() = mBinding!!
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// 뷰 바인딩
mBinding = ActivityLoginBinding.inflate(layoutInflater)
setContentView(binding.root)
Toast.makeText(applicationContext, "별명을 입력해주세요!", Toast.LENGTH_LONG).show()
binding.generateButton.setOnClickListener {
var idText = binding.idText.text.toString()
val intent = Intent(this@LoginActivity, PlayActivity::class.java)
intent.putExtra("idText", idText)
startActivity(intent) // intent를 사용하여 PlayActivity 시작
}
}
}
activity._login.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
android:background="@drawable/mainbackground"
android:orientation="vertical"
tools:context=".LoginActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="300dp"
android:orientation="horizontal">
<LinearLayout
android:layout_width="100dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:orientation="vertical"></LinearLayout>
<ImageView
android:id="@+id/imageView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_weight="1"
app:srcCompat="@drawable/nicknametext" />
<LinearLayout
android:layout_width="100dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:orientation="vertical"></LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="50dp"
android:orientation="horizontal">
<LinearLayout
android:layout_width="100dp"
android:layout_height="match_parent"
android:orientation="horizontal"></LinearLayout>
<EditText
android:id="@+id/idText"
android:layout_width="212dp"
android:layout_height="match_parent"
android:maxLength="6"
android:inputType="text"
android:privateImeOptions="defaultInputmode=korean"
android:text="원기형" />
<LinearLayout
android:layout_width="100dp"
android:layout_height="match_parent"
android:orientation="horizontal">
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="20dp"
android:orientation="horizontal"></LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="48dp"
android:orientation="horizontal">
<LinearLayout
android:layout_width="150dp"
android:layout_height="match_parent"
android:orientation="horizontal"></LinearLayout>
<ImageButton
android:id="@+id/generateButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:adjustViewBounds="true"
android:contentDescription="Generate ID"
android:padding="0dp"
android:scaleType="fitCenter"
android:src="@drawable/generatebutton" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"></LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"></LinearLayout>
</LinearLayout>
3. 음악 재생 기능 만듬
res에 raw 파일을 만들어서(있으면 상관없음) 그 폴더에 음악을 넣는다.
이 코드를 넣으면 액티비티에 들어가자마자 음악이 재생된다.
여기서 abovethetreetops 자리에 재생할 음악 파일명을 입력하면 된다.
그리고 앞서 로그인 페이지에서 입력했던 별명을 hasExtra()로 가져올 수 있다.
Toast 메시지로 idText님 환영합니다! 라고 출력이 되고, 만약에 별명을 원기형이라고 입력했다면 원기형님 환영합니다! 라고 출력이 된다.
PlayActivity.kt
package com.bodan.maplebgm
import android.media.MediaPlayer
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Toast
import com.bodan.maplebgm.databinding.ActivityPlayBinding
class PlayActivity : AppCompatActivity() {
private var mBinding : ActivityPlayBinding? = null
private val binding get() = mBinding!!
lateinit var mp3List : ArrayList<String>
lateinit var selectedMp3 : String
lateinit var mPlayer : MediaPlayer
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
mBinding = ActivityPlayBinding.inflate(layoutInflater)
setContentView(binding.root)
if (intent.hasExtra("idText")) {
val id = intent.getStringExtra("idText")
Toast.makeText(applicationContext, id + "님 환영합니다!", Toast.LENGTH_LONG).show()
}
mPlayer = MediaPlayer.create(this, R.raw.abovethetreetops)
mPlayer.start()
}
}
실행 영상
다음 할 일
일단은 여러 개의 음악을 임의적으로 재생하는 방법을 찾아보려고 한다. 방법을 찾으면.. 다음에 뭐하지?
GitHub
'개인 프로젝트 > 안드로이드' 카테고리의 다른 글
[개인 프로젝트] 메이플 브금 맞추기 앱 #5 (0) | 2022.03.03 |
---|---|
[개인 프로젝트] 메이플 브금 맞추기 앱 #4 (0) | 2022.02.21 |
[개인 프로젝트] 메이플 브금 맞추기 앱 #3 (0) | 2022.02.17 |
[개인 프로젝트] 메이플 브금 맞추기 앱 #1 (0) | 2022.02.15 |
앱 개인 프로젝트 시작하기로 함. (0) | 2022.02.14 |