2023-08-08

Owler·2023년 8월 8일
0

자기소개 앱 만들기

어제에 이어서 오늘은 Level 2 를 목표로 시작해 보겠다!!

코드 작성 과정

새로운 Activity 파일을 생성하는 방법

java -> new -> Activity -> Empty Views Activiyy

이렇게 생성하면 자동으로 그에 따른 layout.xml파일도 자동으로 생성이 된다.

첫번째 페이지에서 크게 변화된 부분은 없고 같은 기능으로 이루어져있기 때문에 코드만 작성하겠다.

<ImageView
        android:layout_width="fill_parent"
        android:layout_height="300dp"
        android:layout_marginTop="48dp"
        android:image="@+id/SignupImage"
        android:src="@drawable/signup"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <TextView
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginStart="50dp"
        android:layout_marginBottom="12dp"

        android:text="@string/name"

        app:layout_constraintBottom_toTopOf="@+id/editText3"
        app:layout_constraintStart_toStartOf="parent" />

    <EditText
        android:id="@+id/editText3"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginStart="50dp"
        android:layout_marginBottom="20dp"

        android:text="@string/editname"

        app:layout_constraintBottom_toTopOf="@+id/textView2"
        app:layout_constraintStart_toStartOf="parent" />

    <TextView
        android:id="@+id/textView2"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginStart="50dp"
        android:layout_marginEnd="50dp"
        android:layout_marginBottom="12dp"

        android:text="@string/id"

        app:layout_constraintBottom_toTopOf="@+id/editText"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="1.0"
        app:layout_constraintStart_toStartOf="parent" />

    <EditText
        android:id="@+id/editText"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginStart="50dp"
        android:layout_marginEnd="50dp"
        android:layout_marginBottom="20dp"

        android:text="@string/editid"

        app:layout_constraintBottom_toTopOf="@+id/textView3"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="1.0"
        app:layout_constraintStart_toStartOf="parent" />

    <TextView
        android:id="@+id/textView3"
        android:layout_width="0dp"
        android:layout_height="wrap_content"

        android:layout_marginStart="50dp"
        android:layout_marginEnd="50dp"
        android:layout_marginBottom="12dp"

        android:text="@string/password"

        app:layout_constraintBottom_toTopOf="@+id/editText2"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.0"
        app:layout_constraintStart_toStartOf="parent" />

    <EditText
        android:id="@+id/editText2"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginStart="50dp"
        android:layout_marginEnd="50dp"
        android:layout_marginBottom="48dp"

        android:text="@string/editpassword"

        app:layout_constraintBottom_toTopOf="@+id/button"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.0"
        app:layout_constraintStart_toStartOf="parent" />

    <Button
        android:id="@+id/button"

        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="152dp"
        android:layout_marginBottom="140dp"

        android:text="@string/signup"

        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintStart_toStartOf="parent" />

여기까지는 어려움이 없었다(왜냐면 그냥 코드 복붙)
중요한건 이제 첫번째 페이지와의 연동과정이다.

LoginActivity에서 SignupActivity로 넘어가는 방법

먼저 SigninActivity 클래스에서 명시적인 텐트로 SignupActivity 컴포넌트를 시작시키는 코드를 버튼 클릭 이벤트 처리기에 추가해야한다.

class SignInActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_signin)

        val btn = findViewById<Button>(R.id.btn_roll2)
        btn.setOnClickListener{
            val intent = Intent(this, SignupActivity::class.java)
            startActivity(intent)
        }
    }
}

밑줄친 부분을 차례대로 해석한다.
1. Button -> 오류가 발생하는데 import 로 가져오기 (참조문제)
2. btn_roll2 -> 현재 Activity (내 코드에선 SigninActivity) layout 에 있는 버튼의 id 이름
3. Intent -> Android 애플리케이션 내에서 다른 컴포넌트 간에 통신하기 위해 사용
4. this -> 현재 컨텍스트 (내 코드에선 SigninActivity)
5. SignupActivity ::class.java -> SignupActivity 클래스의 자바 클래스 객체를 가져온다. 이것은 Intent가 두 번째 액티비티(SignupActivity)로 이동하도록 지정한다.
6. startActivity(intent) -> 생성한 Intent를 사용하여 다른 액티비티로 전환 내 경우에는 두 번째 액티비티(SignupActivity)로 전환

위 작업을 마치면 첫번째 Activity에서 두번째 Activity 로 전환이 가능하다.

SignupActivity에서 LoginActivity로 돌아오는 방법

SignupActivity 클래스에서 버튼이 눌렸을 때 finish()메소드를 호출해서 현재 Activity(내 경우 SignupActivity) 를 종료하는 버튼 클릭 이벤트 처리기를 추가

class SignupActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_signup)

        val btn = findViewById<Button>(R.id.button)
        btn.setOnClickListener{
            finish()
        }
    }
}

finish()메소드는 현재 Activity를 종료시켜준다.

비밀번호 입력 시 가려주는 방법

EditText 안에 간단한 코드를 넣어주면된다.

android:inputType="textPassword"
android:hint="비밀번호를 입력하세요"

inputType="textPassword" ->입력받는 문자들을 가려주는 메소드
hint -> 입력 받기 전까지 나오는 글을 써주는 메소드

  • 참고 : textPassword 대신 text를 쓰면 입력받아도 문자들이 가려지지 않는다.

문제점

오늘의 문제점이라고 할 만한것은 딱히 없었다. 어제의 연장선에서 모르는 함수나 메소드는 구글링을 통해 공부하면서 코드에 적용시켰더니 딱히 오류도 일어나지 않은걸 보면 이해한 부분이 명확한것같다.

느낀점

코드를 이해하는 과정에서 새로운 메소드들을 어떻게 하면 효율적으로 정리해야할지 고민이되었다. 매번 찾을 수 있으나 시간을 효율적으로 사용하지 못하게 되니 블로그 정리를 하면서 필요할때마다 찾아 쓸 수 있게 정리하면 좋을것 같다는 생각이 들었다.

profile
junior_developer

0개의 댓글