일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- 두 수의 나눗셈
- Flutter
- 인스턴스
- 변수
- button
- Kotlin
- padding
- 지연초기화
- expanded
- Widget
- 프래그먼트
- 안드로이드 스튜디오
- 추상메소드
- 람다식
- 반복문
- StatelessWidget
- 빌드 프로세스
- 프로그래머스
- appbar
- margin
- StatefulWidget
- spacer
- 상속
- If
- 액티비티 생명주기
- 리스트뷰
- setState
- 뷰바인딩
- 패스트캠퍼스
- SizedBox
- Today
- Total
Y_Ding
내배캠 개인과제 TIL (08.08~08.09) 본문
자기소개 앱 만들기
직접 해보기
XML
원하는 로고 이미지 넣기
- 우선 내가 원하는 이미지 파일을 저장하기
- res -> drawable 파일에 넣어주기
아이디, 비밀번호를 입력받는 EditText
- 미리보기 글씨는 hint 키워드를 이용해서 넣어줄 수 있음
- 비밀번호 EditText는 Text -> Password 를 이용하면 입력 내용이 가려짐
글씨체 변경
기본 글씨체보다 다른 글씨체를 적용해서 화면을 만들어보고 싶었다.
- 폰트 폴더 생성 : res -> 마우스 우클릭 -> New -> Folder -> Font Folder
- 폰트 추가: 다운로드한 폰트파일을 폰트 폴더에 넣는다.
- 폰트의 확장명은 .ttf
- 폰트명은 소문자로만 되어있어야 함
- 내가 폰트를 구한 곳: https://noonnu.cc/
- fontFamily속성을 사용해서 폰트 적용 (android:fontFamily="font/폰트명")
Kotlin
로그인(SignInActivity) 화면
- 조건문(if-else)을 사용하여 아이디나 비밀번호 중 하나라도 입력이 되지 않았을 경우 '아이디/비밀번호를 확인해주세요' 라는 토스트 메세지를 띄우고, 둘 다 입력되었을 경우 '로그인 성공' 토스트 메세지와 함께 자기소개(HomeActivity) 화면으로 이동
- else문 안의 코드를 확인해보면 Extra로 로그인 화면에서 입력받은 아이디를 HomeActivity로 넘겨줌
class SignInActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
//로그인 버튼 클릭시 HomeActivity화면으로 이동
val btn1 = findViewById<Button>(R.id.btn_login)
val editId = findViewById<EditText>(R.id.editTextId)
val editPassword = findViewById<EditText>(R.id.editTextPassword)
btn1.setOnClickListener {
val inputId = editId.text.toString()
val inputPassword = editPassword.text.toString()
if(inputId.isEmpty() || inputPassword.isEmpty()){
Toast.makeText(this, "아이디/비밀번호를 확인해주세요", Toast.LENGTH_SHORT).show()
}else {
Toast.makeText(this, "로그인 성공", Toast.LENGTH_SHORT).show()
val edit_text = findViewById<EditText>(R.id.editTextId)
val strData = edit_text.text.toString()
val intent = Intent(this, HomeActivity::class.java)
intent.putExtra("dataFromSignInActivity", strData)
startActivity(intent)
}
}
//회원가입 버튼 클릭 시 SingUpActivity 화면으로 이동
val btn2 = findViewById<Button>(R.id.btn_signup)
btn2.setOnClickListener {
val intent = Intent(this, SignUpActivity::class.java)
startActivity(intent)
}
}
}
자기소개(HomeActivity) 화면
- 로그인 화면에서 입력된 아이디를 "dataFromSignInActivity"로 받아와서 전달함
- finish()를 활용해 종료 버튼을 누르면 SignInActivity로 이동함
class HomeActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_home)
val strData = intent.getStringExtra("dataFromSignInActivity")
val textView = findViewById<TextView>(R.id.editText_blank)
textView.setText("아이디: $strData")
val btn = findViewById<Button>(R.id.btn_end)
btn.setOnClickListener{
finish()
}
}
}
회원가입(SignUpActivity) 화면
class SignUpActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_sign_up)
val btn = findViewById<Button>(R.id.btn_singup)
val editName = findViewById<EditText>(R.id.editName)
val editId = findViewById<EditText>(R.id.editId)
val editPassword = findViewById<EditText>(R.id.editPassword)
btn.setOnClickListener{
val inputName = editName.text.toString()
val inputId = editId.text.toString()
val inputPassword = editPassword.text.toString()
if(inputName.isEmpty() || inputId.isEmpty() || inputPassword.isEmpty()){
Toast.makeText(this, "입력되지 않은 정보가 있습니다.", Toast.LENGTH_SHORT).show()
} else{
finish()
}
}
}
}
나를 힘들게 한 오류(?)
다른 건 무난하게 해냈는데 막힌 부분이 있었다.
로그인 화면에서 토스트 메세지를 띄우는 부분이었는데 내가 생각한 코드로는 아이디나 비밀번호가 입력되지 않았을경우 토스트 메세지를 띄우고 로그인 화면이 떠야하는데 코드상에서는 에러가 없는데 에뮬레이터를 실행하면 아이디와 비밀번호를 입력하지 않아도 자기소개 화면으로 넘어갔다.
내가 코드를 잘못 작성한걸까 한참을 이런저런 방법으로 입력하다가 알아냈다.
내가 홈화면에서 로그인으로 넘어가는 코드를 2개나 짜놓고 상수명만 다르게 선언하고 있던 것..!
결국 코드를 하나로 합친 후 다시 에뮬레이터를 실행하니까 내가 원하는대로 실행되면서 토스트 메세지가 떴다.
이렇게 간단한 문제를 가지고 나는 몇시간을 고생했다니.. 허무하다.
//로그인 버튼 클릭시 HomeActivity화면으로 이동
val btn1 = findViewById<Button>(R.id.btn_login)
val editId = findViewById<EditText>(R.id.editTextId)
val editPassword = findViewById<EditText>(R.id.editTextPassword)
btn1.setOnClickListener {
val inputId = editId.text.toString()
val inputPassword = editPassword.text.toString()
if(inputId.isEmpty() || inputPassword.isEmpty()){
Toast.makeText(this, "아이디/비밀번호를 확인해주세요", Toast.LENGTH_SHORT).show()
}else {
Toast.makeText(this, "로그인 성공", Toast.LENGTH_SHORT).show()
val intent = Intent(this, HomeActivity::class.java)
startActivity(intent)
}
}
//로그인 버튼 클릭시 HomeActivity화면으로 이동하는 코드가 2개였다..!
// 아이디에 입력한 data를 HomeActivity에 넘겨줌
val btn_home = findViewById<Button>(R.id.btn_login)
btn_home.setOnClickListener {
val edit_text = findViewById<EditText>(R.id.editTextId)
val strData = edit_text.text.toString()
val intent = Intent(this, HomeActivity::class.java)
intent.putExtra("dataFromSignInActivity", strData)
startActivity(intent)
}
Today!
개인 과제로 자기소개 어플을 만드는 실습이 있었다.
어제(8월 8일)부터 조금씩 진행해왔는데 오늘에야 필수 과제를 완성해냈다.
xml 파일로 디자인을하고 구성하는 부분까지는 생각보다 크게 어렵지 않다고 느꼈는데 kt파일에서 로그인 페이지에서 입력받은 아이디를 다른 화면으로 넘겨주거나, 상황에 따라 각각 다른 토스트 메세지를 띄워주는게 생각보다 쉽지 않았다.
그래도 어떻게든 검색과 강의 되돌려보기를 무한 반복하면서 과제의 필수 항목들을 해결해낸 것이 너무 뿌듯했고, 로그인 화면에서 토스트 메세지가 뜨지 않아서 몇시간을 헤맸던 게 너무 힘들기도 했지만 그 이유마저도 내가 알아내고 해결해냈을 땐 정말 말로 설명하기 어려울 정도로 기분이 좋았다!
내일은 선택과제도 추가로 도전해봐야겠다.
'TodayILearned > Android&Kotlin' 카테고리의 다른 글
내배캠 정예반(조건문/반복문) 문제풀이 (0) | 2023.08.11 |
---|---|
내배캠 개인과제 TIL (0) | 2023.08.10 |
내배캠 Android TIL - Intent (0) | 2023.08.07 |
내배캠 Android TIL - Activity (1) | 2023.08.04 |
내배캠 Android TIL - Layout (0) | 2023.08.03 |