Android Studio/base_Project

[기본] 개인 정보 등록 앱 구현하기 (1/2)

내손은개발 🐾 2024. 1. 29. 18:43
메인화면 정보 작성 화면
밑에 FloatingActionButton을 누르면 정보 작성 화면으로 넘어간 뒤 정보를 작성하고
+버튼을 누르면 입력된 정보를 저장 / 화면에 표시

 

 

 

1. layout 

너무 길어져서 코드 생략

TextView, EditText, ImageView, GuideLine, RadioGruop, RadioButton, Spinner 사용

(github 링크 걸어둘 예정)

 

2. viewbinding 기본 설정

// MainActivity.kt

...
class MainActivity : AppCompatActivity() {
    private lateinit var binding: ActivityMainBinding
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = ActivityMainBinding.inflate(layoutInflater)
        setContentView(binding.root)
    }
}

쓰기전에 당연히 app수준의 build.gradle에서 sync 먼저

 

 

3. 화면 전환()

 - floatingActionButton으로 간단하게 화면 전환

//위에 코드에 넣어주면 된다.
        binding.goInputActivityButton.setOnClickListener {
            val intent = Intent(this,EditActivity::class.java)
            startActivity(intent)

        }

 

 

4. Spinner의 item 추가

4-1) res -> arrays라는 values 파일 생성

 

4-2) 코드 작성

//arrays.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="mbti_types">
        <item>INFP</item>
        <item>ENFP</item>
        <item>ESFJ</item>
        <item>ISFJ</item>
        <item>ISFP</item>
          // ...
          // 생략
          // ...
	<item>ESTP</item>
        <item>ENTJ</item>
    </string-array>
</resources>

 

4-3) 코드 작성2

//EditActivity.kt

binding.MBTITypeSpinner.adapter = ArrayAdapter.createFromResource(
	this,
	R.array.mbti_types,
	android.R.layout.simple_list_item_1
)

 

5. 나머지 코드

5-1) 생년월일 구현

//EditText.kt
		binding.birthdateLayer.setOnClickListener {
            val listener = OnDateSetListener { _, year, month, dayOfMonth ->
                binding.birthdateTextView.text = "$year-${month.inc()}-$dayOfMonth"
            }
            DatePickerDialog(
                this,
                listener,
                2000,
                1,
                1,
            ).show()
        }

 

 

5-2) 취미 CheckBox 구현

//EditActivity.kt
        binding.hobbyCheckBox.setOnCheckedChangeListener { _, isChecked ->
            binding.hobbyEditText.isVisible = isChecked
        }

        binding.hobbyEditText.isVisible = binding.hobbyCheckBox.isChecked

 

 

// 나머지 기능구현은 다음 글에 작성