안드로이드

안드로이드 -3 카카오구현 0127

인생진리 2023. 3. 7. 11:43

1.KaKaoLoginActivity

package com.example.app_0127;

import androidx.appcompat.app.AppCompatActivity;
// AppCompatActivity 2가지
// 1) appcompat
// 2) supportv7 : androidx버전에서는 지원하지 않음
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

public class KaKaoLoginActivity extends AppCompatActivity
        implements View.OnClickListener{

    // View.OnclickListener 인터페이스 : implements

    EditText edtEmail;
    EditText edtPw;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // 화면 구성하는 XML 파일 설정
        setContentView(R.layout.activity_ka_kao_login);

        // 1) 뷰한테 기능을 달아주려면 ID값(뷰가 가진 고유값)을 찾아와줘야한다
        Button btnLogin = findViewById(R.id.btnLogin);
        edtEmail = findViewById(R.id.edtEmail);
        edtPw = findViewById(R.id.edtPw);

        // 2) 버튼 클릭 이벤트 달아주기(클릭 감지하기)
        // 3) 인터페이스 상속받기
        // 인터페이스를 통해서 OnClick이라는 메서드를 오버라이딩
        btnLogin.setOnClickListener(this);
    }

    // 클릭했을 때에 이벤트 (실행시킬 코드)
    public void click(View View){
        // 클릭 이벤트 발생 시 출력될 로그
        Log.v("status","클릭이 감지되었습니다.");
    }

    // View.OnclickListener 인터페이스에서 상속받은 메소드
    @Override
    public void onClick(View view) {
        // 어떤 뷰를 클릭했는지 구분이 필요!
        // : View의 ID
        // int : ==
        if(view.getId() == R.id.btnLogin){
            // 클릭 이벤트 발생 시 출력될 로그
            Log.v("status","인터페이스로 클릭 구현");

            // 이메일과 비밀번호를 임의의 데이터와 비교하는 로직을 구현하시오.
            String email = edtEmail.getText().toString();
            String pw = edtPw.getText().toString();

            // 일치할 경우) "로그인성공!"
            // 일치하지 않은 경우)" 로그인 실패.."
            // 결과는 Log.v()를 이용해서 출력
            if(email.equals("yhc9308@naver.com") && pw.equals("1234")){
                Log.v("Login Status:","로그인성공");
            }else {
                Log.v("Login Status:","로그인실패..");
            }
        }
    }
}
  1. View.OnClickListener 인터페이스를 구현하고, onClick() 메소드를 오버라이딩하여 클릭 이벤트 처리를 구현하였습니다. 이렇게 하면, btnLogin.setOnClickListener(this); 코드를 통해 해당 버튼에 클릭 이벤트 리스너를 등록하면 된다는 점이 장점입니다.
  2. if (view.getId() == R.id.btnLogin) 코드에서 == 연산자를 이용하여 뷰의 ID를 비교하고 있습니다. 이렇게 비교해도 상관은 없지만, view.getId().equals(R.id.btnLogin)와 같이 equals() 메소드를 이용하는 것이 좀 더 안전한 방법입니다.
  3. 일반적으로 로그인 정보는 서버와 통신하고, 서버에서 결과를 받아 처리합니다. 하지만 이 코드에서는 간단한 예시를 위해 if (email.equals("yhc9308@naver.com") && pw.equals("1234")) 코드를 통해 로그인 처리를 하고 있습니다.

 

2. activity_ka_kao_login.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"
    android:background="#FFEB34"
    tools:context=".KaKaoLoginActivity">

    <androidx.constraintlayout.widget.Guideline
        android:id="@+id/guideline2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        app:layout_constraintGuide_percent="0.1" />

    <androidx.constraintlayout.widget.Guideline
        android:id="@+id/guideline3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        app:layout_constraintGuide_percent="0.9" />

    <androidx.constraintlayout.widget.Guideline
        android:id="@+id/guideline4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        app:layout_constraintGuide_percent="0.05" />

    <androidx.constraintlayout.widget.Guideline
        android:id="@+id/guideline5"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        app:layout_constraintGuide_percent="0.4" />

    <androidx.constraintlayout.widget.Guideline
        android:id="@+id/guideline6"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        app:layout_constraintGuide_percent="0.75" />

    <androidx.constraintlayout.widget.Guideline
        android:id="@+id/guideline7"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        app:layout_constraintGuide_percent="0.85" />

    <ImageView
        android:id="@+id/imageView"
        android:layout_width="153dp"
        android:layout_height="185dp"
        app:layout_constraintBottom_toTopOf="@+id/guideline5"
        app:layout_constraintEnd_toStartOf="@+id/guideline3"
        app:layout_constraintStart_toStartOf="@+id/guideline2"
        app:layout_constraintTop_toTopOf="@+id/guideline4"
        app:srcCompat="@drawable/logo" />

    <TextView
        android:id="@+id/textView17"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginTop="16dp"
        android:text="모바일에서 카카오 계정을 확인할 수 있습니다."
        app:layout_constraintEnd_toStartOf="@+id/guideline3"
        app:layout_constraintStart_toStartOf="@+id/guideline2"
        app:layout_constraintTop_toTopOf="@+id/guideline6" />

    <TextView
        android:id="@+id/textView18"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:text="카카오 계정안내"
        android:textStyle="bold"
        app:layout_constraintEnd_toEndOf="@+id/textView17"
        app:layout_constraintStart_toStartOf="@+id/textView17"
        app:layout_constraintTop_toBottomOf="@+id/textView17" />

    <TextView
        android:id="@+id/textView19"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="비밀번호를 잊어버리셨나요?"
        app:layout_constraintEnd_toStartOf="@+id/guideline3"
        app:layout_constraintStart_toStartOf="@+id/guideline2"
        app:layout_constraintTop_toTopOf="@+id/guideline7" />

    <EditText
        android:id="@+id/edtEmail"
        android:layout_width="0dp"
        android:layout_height="40dp"
        android:background="#FFFFFF"
        android:ems="10"
        android:hint="이메일"
        android:inputType="textPersonName"
        app:layout_constraintBottom_toTopOf="@+id/edtPw"
        app:layout_constraintEnd_toStartOf="@+id/guideline3"
        app:layout_constraintHorizontal_bias="0.504"
        app:layout_constraintStart_toStartOf="@+id/guideline2"
        app:layout_constraintTop_toTopOf="@+id/guideline5" />

    <Button
        android:id="@+id/btnLogin"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:backgroundTint="#715C5E"
        android:text="로그인"
        android:textColor="#7D6867"
        app:cornerRadius="0dp"
        app:layout_constraintBottom_toTopOf="@+id/checkBox"
        app:layout_constraintEnd_toEndOf="@+id/edtPw"
        app:layout_constraintStart_toStartOf="@+id/edtPw"
        app:layout_constraintTop_toBottomOf="@+id/edtPw" />

    <CheckBox
        android:id="@+id/checkBox"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="잠금모드로 자동로그인"
        android:textColor="#7C6135"
        app:layout_constraintBottom_toTopOf="@+id/guideline6"
        app:layout_constraintEnd_toEndOf="@+id/btnLogin"
        app:layout_constraintStart_toStartOf="@+id/btnLogin"
        app:layout_constraintTop_toBottomOf="@+id/btnLogin" />

    <EditText
        android:id="@+id/edtPw"
        android:layout_width="0dp"
        android:layout_height="40dp"
        android:background="#FFFFFF"
        android:ems="10"
        android:hint="비밀번호"
        android:inputType="textPassword"
        app:layout_constraintBottom_toTopOf="@+id/btnLogin"
        app:layout_constraintEnd_toEndOf="@+id/edtEmail"
        app:layout_constraintStart_toStartOf="@+id/guideline2"
        app:layout_constraintTop_toBottomOf="@+id/edtEmail" />

</androidx.constraintlayout.widget.ConstraintLayout>

Design

package com.example.app_0127;

import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;

// drawable 폴더에 이미지를 넣을 때 주의할 점
// 1. 숫자가 먼저 나오면 안된다.
// 2. 대문자를 사용하면 안된다.
// 3. 한글명으로 사용하면 안된다.
// ex) 1cat.jpg(x) -> cat1.jpg
//     cAt.jpg(x) -> cat.jpg
//     고양이.jpg(x) -> cat.jpg

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.kakao_login);
    }
}

위 코드는 안드로이드 앱 개발을 위한 코드로, MainActivity 클래스를 정의하고 있는 코드입니다. onCreate 메서드는 앱이 실행될 때 가장 먼저 호출되며, 액티비티가 생성될 때 필요한 작업을 수행합니다. setContentView 메서드는 액티비티에 화면 레이아웃을 설정합니다.

주석에서는 drawable 폴더에 이미지를 넣을 때 주의해야 할 점에 대해 설명하고 있습니다. 첫 번째로, 파일명이 숫자로 시작해서는 안 된다는 점입니다. 두 번째로, 파일명에 대문자를 사용해서는 안 된다는 점입니다. 마지막으로, 파일명에 한글을 사용해서는 안 된다는 점입니다. 이러한 규칙을 지켜야만 안드로이드 시스템이 이미지를 올바르게 인식할 수 있습니다.

 

 

3. 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">

    <ImageView
        android:id="@+id/imageView2"
        android:layout_width="0dp"
        android:layout_height="0dp"
        app:layout_constraintDimensionRatio="1:0.565"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.0"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:srcCompat="@drawable/ryan" />

    <ImageView
        android:id="@+id/imageView4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="176dp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.929"
        app:layout_constraintStart_toStartOf="@+id/imageView2"
        app:layout_constraintTop_toTopOf="@+id/imageView2"
        app:srcCompat="@drawable/logo" />

    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="16dp"
        android:layout_marginTop="32dp"
        android:text="@string/txt_title"
        android:textSize="34sp"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/imageView2" />

    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="24dp"
        android:text="@string/txt_msg"
        android:textSize="20sp"
        app:layout_constraintStart_toStartOf="@+id/textView"
        app:layout_constraintTop_toBottomOf="@+id/textView" />

    <TextView
        android:id="@+id/textView3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="24dp"
        android:text="@string/txt_title2"
        android:textSize="20sp"
        android:textStyle="bold"
        app:layout_constraintStart_toStartOf="@+id/textView2"
        app:layout_constraintTop_toBottomOf="@+id/textView2" />

    <TextView
        android:id="@+id/textView4"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginTop="24dp"
        android:text="@string/txt_msg2"
        android:textSize="20sp"
        app:layout_constraintEnd_toEndOf="@+id/imageView4"
        app:layout_constraintHorizontal_bias="0.0"
        app:layout_constraintStart_toStartOf="@+id/textView3"
        app:layout_constraintTop_toBottomOf="@+id/textView3" />

</androidx.constraintlayout.widget.ConstraintLayout>

Design

4. kakao_login

<?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">

    <androidx.constraintlayout.widget.Guideline
        android:id="@+id/guideline"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        app:layout_constraintGuide_percent="0.50" />

    <ImageView
        android:id="@+id/imageView3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="52dp"
        app:layout_constraintBottom_toTopOf="@+id/guideline"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="100"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.0" />

    <TextView
        android:id="@+id/textView11"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="-"
        android:textSize="50sp"
        app:layout_constraintBottom_toBottomOf="@+id/textView10"
        app:layout_constraintEnd_toStartOf="@+id/textView12"
        app:layout_constraintHorizontal_bias="0.5"
        app:layout_constraintStart_toEndOf="@+id/textView10"
        app:layout_constraintTop_toTopOf="@+id/textView10" />

    <TextView
        android:id="@+id/textView10"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="-"
        android:textSize="50sp"
        app:layout_constraintBottom_toBottomOf="@+id/textView9"
        app:layout_constraintEnd_toStartOf="@+id/textView11"
        app:layout_constraintHorizontal_bias="0.5"
        app:layout_constraintStart_toEndOf="@+id/textView9"
        app:layout_constraintTop_toTopOf="@+id/textView9" />

    <TextView
        android:id="@+id/textView9"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="-"
        android:textSize="50sp"
        app:layout_constraintBottom_toTopOf="@+id/guideline"
        app:layout_constraintEnd_toStartOf="@+id/textView10"
        app:layout_constraintHorizontal_bias="0.5"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/textView13" />

    <TextView
        android:id="@+id/textView12"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="-"
        android:textSize="50sp"
        app:layout_constraintBottom_toBottomOf="@+id/textView11"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.5"
        app:layout_constraintStart_toEndOf="@+id/textView11"
        app:layout_constraintTop_toTopOf="@+id/textView11" />

    <TextView
        android:id="@+id/textView13"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="20dp"
        android:text="카카오톡 암호를 입력해 주세요"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/imageView5" />

    <Button
        android:id="@+id/button12"
        style="@style/Widget.AppCompat.Button.Borderless"
        android:layout_width="136dp"
        android:layout_height="101dp"
        android:backgroundTint="#FFFFFF"
        android:insetTop="0dp"
        android:insetBottom="0dp"
        android:text="3"
        android:textColor="#050505"
        app:layout_constraintBottom_toBottomOf="@+id/button11"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.5"
        app:layout_constraintStart_toEndOf="@+id/button11"
        app:layout_constraintTop_toTopOf="@+id/button11"
        app:layout_constraintVertical_bias="0.0" />

    <Button
        android:id="@+id/button10"
        style="@style/Widget.AppCompat.Button.Borderless"
        android:layout_width="135dp"
        android:layout_height="101dp"
        android:backgroundTint="#FFFFFF"
        android:insetTop="0dp"
        android:insetBottom="0dp"
        android:text="1"
        android:textColor="#050505"
        app:layout_constraintBottom_toTopOf="@+id/button13"
        app:layout_constraintEnd_toStartOf="@+id/button11"
        app:layout_constraintHorizontal_bias="0.5"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="@+id/guideline" />

    <Button
        android:id="@+id/button13"
        style="@style/Widget.AppCompat.Button.Borderless"
        android:layout_width="135dp"
        android:layout_height="101dp"
        android:backgroundTint="#FFFFFF"
        android:insetTop="0dp"
        android:insetBottom="0dp"
        android:text="4"
        android:textColor="#050505"
        app:layout_constraintBottom_toTopOf="@+id/button19"
        app:layout_constraintEnd_toStartOf="@+id/button17"
        app:layout_constraintHorizontal_bias="0.5"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/button10" />

    <Button
        android:id="@+id/button19"
        style="@style/Widget.AppCompat.Button.Borderless"
        android:layout_width="135dp"
        android:layout_height="101dp"
        android:backgroundTint="#FFFFFF"
        android:insetTop="0dp"
        android:insetBottom="0dp"
        android:text="7"
        android:textColor="#050505"
        app:layout_constraintBottom_toTopOf="@+id/button24"
        app:layout_constraintEnd_toStartOf="@+id/button21"
        app:layout_constraintHorizontal_bias="0.5"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/button13" />

    <Button
        android:id="@+id/button24"
        style="@style/Widget.AppCompat.Button.Borderless"
        android:layout_width="135dp"
        android:layout_height="102dp"
        android:backgroundTint="#FFFFFF"
        android:insetTop="0dp"
        android:insetBottom="0dp"
        android:textColor="#050505"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toStartOf="@+id/button22"
        app:layout_constraintHorizontal_bias="0.5"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/button19" />

    <Button
        android:id="@+id/button17"
        style="@style/Widget.AppCompat.Button.Borderless"
        android:layout_width="136dp"
        android:layout_height="101dp"
        android:backgroundTint="#FFFFFF"
        android:insetTop="0dp"
        android:insetBottom="0dp"
        android:text="5"
        android:textColor="#050505"
        app:layout_constraintBottom_toBottomOf="@+id/button13"
        app:layout_constraintEnd_toStartOf="@+id/button18"
        app:layout_constraintHorizontal_bias="0.5"
        app:layout_constraintStart_toEndOf="@+id/button13"
        app:layout_constraintTop_toTopOf="@+id/button13"
        app:layout_constraintVertical_bias="0.0" />

    <Button
        android:id="@+id/button20"
        style="@style/Widget.AppCompat.Button.Borderless"
        android:layout_width="136dp"
        android:layout_height="101dp"
        android:backgroundTint="#FFFFFF"
        android:insetTop="0dp"
        android:insetBottom="0dp"
        android:text="9"
        android:textColor="#050505"
        app:layout_constraintBottom_toBottomOf="@+id/button21"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.5"
        app:layout_constraintStart_toEndOf="@+id/button21"
        app:layout_constraintTop_toTopOf="@+id/button21"
        app:layout_constraintVertical_bias="0.0" />

    <Button
        android:id="@+id/button18"
        style="@style/Widget.AppCompat.Button.Borderless"
        android:layout_width="136dp"
        android:layout_height="101dp"
        android:backgroundTint="#FFFFFF"
        android:insetTop="0dp"
        android:insetBottom="0dp"
        android:text="6"
        android:textColor="#050505"
        app:layout_constraintBottom_toBottomOf="@+id/button17"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.5"
        app:layout_constraintStart_toEndOf="@+id/button17"
        app:layout_constraintTop_toTopOf="@+id/button17"
        app:layout_constraintVertical_bias="0.0" />

    <Button
        android:id="@+id/button21"
        style="@style/Widget.AppCompat.Button.Borderless"
        android:layout_width="136dp"
        android:layout_height="101dp"
        android:backgroundTint="#FFFFFF"
        android:insetTop="0dp"
        android:insetBottom="0dp"
        android:text="8"
        android:textColor="#050505"
        app:layout_constraintEnd_toStartOf="@+id/button20"
        app:layout_constraintHorizontal_bias="0.5"
        app:layout_constraintStart_toEndOf="@+id/button19"
        app:layout_constraintTop_toTopOf="@+id/button19" />

    <Button
        android:id="@+id/button22"
        style="@style/Widget.AppCompat.Button.Borderless"
        android:layout_width="136dp"
        android:layout_height="102dp"
        android:backgroundTint="#FFFFFF"
        android:insetTop="0dp"
        android:insetBottom="0dp"
        android:text="0"
        android:textColor="#050505"
        app:layout_constraintBottom_toBottomOf="@+id/button24"
        app:layout_constraintEnd_toStartOf="@+id/button23"
        app:layout_constraintHorizontal_bias="0.5"
        app:layout_constraintStart_toEndOf="@+id/button24"
        app:layout_constraintTop_toTopOf="@+id/button24"
        app:layout_constraintVertical_bias="0.0" />

    <Button
        android:id="@+id/button23"
        style="@style/Widget.AppCompat.Button.Borderless"
        android:layout_width="136dp"
        android:layout_height="102dp"
        android:backgroundTint="#FFFFFF"
        android:insetTop="0dp"
        android:insetBottom="0dp"
        android:text="x"
        android:textColor="#050505"
        app:layout_constraintBottom_toBottomOf="@+id/button22"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.5"
        app:layout_constraintStart_toEndOf="@+id/button22"
        app:layout_constraintTop_toTopOf="@+id/button22"
        app:layout_constraintVertical_bias="0.0" />

    <Button
        android:id="@+id/button11"
        style="@style/Widget.AppCompat.Button.Borderless"
        android:layout_width="136dp"
        android:layout_height="101dp"
        android:backgroundTint="#FFFFFF"
        android:insetTop="0dp"
        android:insetBottom="0dp"
        android:text="2"
        android:textColor="#050505"
        app:layout_constraintBottom_toBottomOf="@+id/button10"
        app:layout_constraintEnd_toStartOf="@+id/button12"
        app:layout_constraintHorizontal_bias="0.5"
        app:layout_constraintStart_toEndOf="@+id/button10"
        app:layout_constraintTop_toTopOf="@+id/button10"
        app:layout_constraintVertical_bias="0.0" />

    <ImageView
        android:id="@+id/imageView5"
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:layout_marginTop="68dp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.498"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:srcCompat="@drawable/fingerprint" />
</androidx.constraintlayout.widget.ConstraintLayout>

파일링크