반응형

📜 TIL 67

[Android] 로그인 시 아이디 패스워드 유효성 검사하는 로직 만들기

setOnFocusChangeListener와 addTextChangedListener로 해당 기능을 구현하였다 최소요건에 대해 검사하는 로직은 id와 pw가 같기 때문에 id만 아래에 가져왔음! binding.loginIdInput.setOnFocusChangeListener(object : View.OnFocusChangeListener { override fun onFocusChange(v: View?, hasFocus: Boolean) { if (!hasFocus) { if (binding.loginIdInput.length() in 1..2) { binding.idPwWarnning.text= "ID는 최소 3자 이상입니다." } else { binding.idPwWarnning.text= ""..

📜 TIL 2023.02.15

[Android] 패스워드 아이콘이 글자가 존재할 때만 보이도록 만들기

내가 원하는 결과물 패스워드창 제일 오른쪽에 위치한 눈 모양 아이콘을 누르면 패스워드가 보인다. 해당 아이콘을 visible/invisible icon이라 부르겠다. 사용자가 패스워드를 입력했을 때에만 해당 아이콘을 보여주고 싶다. 즉, 아무런 내용을 패스워드창에 입력하지 않았을 땐 해당 아이콘이 안보이게 만들어주고 싶다. 방법 1. 우선 FrameLayout으로 패스워드창 레이아웃인 TextInputLayout을 감싸주자. 2. 그 다음 visible/invisible icon의 바로 위에 겹쳐 올려줄 네모 상자(dummyImage)를 FrameLayout안에 넣어주자. 참고: 네모 상자는 아이콘을 가리기 위한 용도이니, 당연히 패스워드 창의 배경색깔과 동일한 색으로 만들어줘야한다! 네모상자(dummy..

📜 TIL 2023.02.13

[Android] 로그인창 아이디에 적힌 글자 한번에 지우는 기능 구현하기

내가 만들고 싶은 기능 ID란에 적힌 text를 버튼 하나로 한 번에 clear하는 기능 예) 로그인 시 사용자가 id를 잘못 입력하였을 때, 버튼 한 번으로 한꺼번에 지울 수 있도록! 내가 만들고 싶은 기능의 결과물 솔루션 이 기능은 매우 간단히 구현 가능하다. TextInputLayout와 TextInputEditText를 사용하면 바로 구현이 가능하다. 위와 같이 레이아웃의 endIconMode의 속성의 clear_text를 사용하면 딱 내가 원하는 기능! 만약 텍스트를 지워주는 버튼을 자체적으로 custom하고싶다면? 위와 같이 원하는 모양의 xml파일을 drawable폴더에 넣고 endIconDrawable속성을 사용하여 적용해준다. 예) app:endIconDrawable="@drawable/..

📜 TIL 2023.02.11

[Android] Fragment에서 ViewBinding 사용법

ViewBinding해주는 이유? 화면요소(view)에 접근하여 값을 입력하거나 사용자와 상호작용하는 방식을 제어하기 위해 1. View Binding을 사용하기 위해서는 build.gradle 파일에 다음 내용을 추가해야 한다. android { buildFeatures { viewBinding true } } 2. 자동으로 생성된 FragmentLoginBinding 클래스를 사용하여 멤버변수를 선언해주자. (onCreateView 이전에 선언해주자) 이제 binding이란 이름의 멤버변수를 사용하여 위젯에 접근이 가능하다. ```kotlin class LoginFragment : Fragment() { private var _binding: FragmentLoginBinding? = null pri..

📜 TIL 2023.02.09

[iOS] iOS 어플리케이션을 배포하는 4가지 방식 간단-정리

iOS개발을 완료하였다! 이제 여러 기기에서 테스트 해보고 싶다. 이럴 때 Android의 경우 단순하게 apk를 빌드해서 다른사람에게 파일로 전송해주면된다. 하지만 iOS의 경우엔 조금 다르다. ipa 자체로 설치가 불가능하기 때문이다. 방법 1️⃣ 개발용 테스트 가내수공업 빌드 그냥 컴퓨터와 휴대폰 기기를 선으로 직접적으로 연결해주고 빌드하면 된다. 일일이 기기 하나하나 꼽아가며 빌드해주어야하기 때문에 수고로움이 크다. 방법 2️⃣ 애드혹(adhoc) 애드혹 방식(over the air)은 단순하다 테스트기기의 uuid를 등록 및 배포하고 해당기기에서 테스트 하는 방식 개발완료 테스트기기의 uuid 수집 해당 uuid를 개발자 센터에 등록 빌드 후 export하여 드랍박스 등의 서버에 업로드 해당 기..

📜 TIL 2022.10.29

[Android] 루트 액티비티(Root Activity) & 어플리케이션 클래스(Application class) 간단히 알아보자

🎈 Root Activity란? 어플리케이션을 켰을 때 실행되는 최초의 Activity Android 어플리케이션의 AndroidManifest.xml에서 intent-filter요소 안에 MAIN으로 선언되어 있으며 보통 LAUNCHER도 category 요소로 같이 선언되어 있다. 그런데 이러한 root activity보다 더 먼저 실행되는 것이 있다. 바로 Application 클래스! 🎈 Application 클래스란? application 클래스는 어느 Component(Activity, Service, Intent 등)에서나 공유할 수 있는 전역 클래스이며 공동으로 관리해야하는 데이터를 작성하기에 적합하다. Application 클래스는 root activity와 마찬가지로 AndroidMan..

📜 TIL 2022.10.26

[Android] Network

🎈 Network 두대 이상의 컴퓨터를 연결하는 것 네트워크가 필요한 이유 1) 클라이언트(앱) -> 인터넷 -> 서버 : 요청 -> 내가 지금 화면을 그리려고 하는데 데이터좀 줘 2) 서버 -> 인터넷 -> 클라이언트(앱) : 응답 -> 화면을 그릴 수 있는 데이터 여기있어 네트워킹 서버와 클라이언트의 의사소통 네트워크 약속(프로토콜)이 존재 대부분의 앱들이 정보를 서버로 부터 받아서 화면을 구성한다 문제점 매번 똑같은 화면을 그릴 때 매번 똑같은 데이터를 전달받아야 한다 -> 낭비다 해결책 캐싱 한번 받은 데이터를 클라이언트가 로컬 데이터베이스에 저장 다시 필요하면 서버에 요청할 필요없이 로컬 데이터베이스를 이용 단점 캐싱 구현 난이도 높음 프로토콜의 종류 FTP : 파일 전송 규약 SMTP : 메일..

📜 TIL 2022.10.25

동기처리 비동기 처리에 대해 매우 쉽고 간단히 정리!

동기 요청과 결과가 동시에 일어난다 설계가 매우 간단하고 직관적 하지만 결과가 주어질 때 까지 다른작업을 하지 못하고 대기해야 한다 [참고] 블록 상태 결과가 주어질 때 까지 다른작업을 하지 못하고 대기해야하는 상태 예) 카페의 바리스타가 한 손님의 주문을 받고, 커피가 완성될 때 까지 손님은 그 자리에 서서 아무것도 하지 않고 대기해야한다고 한다고 함. 그렇지 않으면 커피를 주지 않겠다고 하는 인성 논란의 바리스타... 😲 비동기 요청과 결과가 동시에 일어나지 않는다 동기보단 설계가 복잡 하지만 결과가 주어질 때 까지 다른작업을 할 수 있어 자원을 효율적으로 사용 가능 [참고] 논블록 상태 결과가 주어질 때 까지 다른작업을 할 수 있는 상태 예) 카페의 바리스타가 손님의 주문을 받은 뒤 커피를 만들고 ..

📜 TIL 2022.10.21

[Android] values의 strings.xml에 없는 값을 사용해도 실행이 잘 되는 경우

🎈 문제 외주를 맡겼던 소스에 위와 같이 string값을 찾을 수 없다는 빨간색 에러가 떴다. 그런데 막상 앱을 실행시키면 별다른 오류없이 잘 실행된다. 🎈 분석 우선 해당 데이터가 어디에 있는지 확인하기 위해 import한 R의 위치가 어디인지 확인해보았다. 그리고 해당 패키지에 있는 res - values - strings.xml을 확인해보았지만 위 데이터는 찾아볼 수 없었다. 🎈 해결 이러한 이유는 외주를 맡겼던 패키지에서 존재했던 default_web_client_id값이기 때문에, 현재 앱 내에서의 어느 패키지의 values - strings.xml 위치에도 해당 데이터가 전혀 존재하지 않지만 바이너리 파일 형식으로 어딘가에 남아있기 때문에 앱은 문제없이 잘 실행되는 것이다. 실제로 해당 앱의 ..

📜 TIL 2022.10.20

[Android] Kotlin 파일은 Java파일의 Lombok 라이브러리와 호환되기 힘들다

📌 문제 재직중인 회사의 Java와 Android Studio 기반 어플리케이션을 Java언어에서 Kotlin으로 컨버팅하라는 업무 지시가 내려졌다. 컨버팅 하던 중 Java파일로 실행하였을 땐 괜찮았던 get메서드가 인식이 되지 않았다. 소스를 분석해보니 Java파일에선 lombok 라이브러리를 사용해 getter/setter를 생성해주었었다. 즉, Kotlin 파일이 lombok라이브러리의 getter/setter을 인식하지 못하고 있는 것이었다. 🎈 결정 이에 대해 많은 고민을 하였지만 결국 기존 Java코드에서 lombok 라이브러리를 제거하면서 까지 Kotlin으로 컨버팅하기로 결정하였다. 비록 Lombok을 사용함에 따라 얻을 수 있었던 코드의 간결함이란 장점을 포기해야하지만, Kotlin으로..

📜 TIL 2022.10.19
반응형