목록Android (37)
라떼는말이야
앱을 사용하다 보면 어떤 작업을 하다가 뒤로 가기 버튼을 잘못 눌러서 작업 중이던 내역이 전부 날아가는 불상사가 발생하는 경우를 한번쯤 겪어 봤을 것이다. 그래서 많은 경우에 뒤로 가기 버튼을 두번 연속 눌러야만 종료되도록 만들어놓은 것을 볼 수 있다. 본 게시글에서는 이처럼 뒤로 가기 버튼을 두번 연속 눌러야지 종료되도록 하는 예제와 상황을 소개한다. 재활용성을 높이기 위해서 MainActivity에서 직접 구현하는 것이 아닌 별도의 클래스로 작성하는 예제를 소개한다. 간단히 MainActivity에서 구현하고 싶다면 필요한 부분만 가져다 써도 무방하다. 1. 자바 클래스 생성 (BackKeyHandler backKeyPressedTime + 2000) { backKeyPressedTime = Syst..
activity_login.xml EditText의 힌트들은 [res] -> [values] -> strings.xml 에 지정되어 있다. 로고의 폰트는 구글의 roboto_mono_thin폰트를 사용했다. strings.xml Login 아이디 비밀번호 회원 가입 로그인 앱을 실행시켰을 때 바로 로그인 창이 뜨도록 AndroidManinfest.xml 파일을 수정했다. AndroidManinfest.xml 기존에 MainActivity 안에 있는 블록을 LoginActivity 안으로 옮겨준다. LoginActivity.java package com.example.login.ui.login; import android.app.Activity; import androidx.annotation.Nullab..
보호되어 있는 글입니다.
좋아요 버튼을 누르거나 싫어요 버튼을 누르면 숫자가 올라가면서 주황색 아이콘으로 변한다. 만약 좋아요나 싫어요 버튼이 눌린 상태에서 한번 더 누르면 숫자가 내려가고 아이콘은 하얗게 돌아오고, 좋아요가 눌린 상태에서 싫어요 버튼을 누르거나 싫어요가 눌린 상태에서 좋아요 버튼을 누르면 원래 눌려있던 버튼이 취소되고 새로 누른 버튼이 활성화된다. 좋아요와 싫어요를 동시에 할 수 없도록 한 것이다. 어려운 로직은 아니다. ScrollView에 ListView를 넣었을 때 아이템이 하나만 보여줘서 한참 헤맸는데 알고보니 ScrollView에 android:fillViewport="true" 옵션만 넣으면 되는 것이었다. 하지만 스크롤을 하려면 스크롤뷰에 이벤트를 달아야 한다. listView.setOnTouchL..
자바 클래스 생성 BitmapButton이라는 자바 클래스를 새로 생성해준다. 자바 클래스를 생성하면 public class BitmapButton { } 으로 생성이 되는데 버튼을 상속해서 커스텀 버튼을 만들 예정이니 버튼을 상속해줘야 한다. AppCompatButton 을 상속하면 된다. 빨간 밑줄이 쳐있는데 생성자가 없기 때문이다. 마우스 우클릭 - [Generate...] - [Constructor] 매개변수가 하나짜리와 두개짜리가 있는 생성자를 선택해서 OK를 눌러준다. 하나짜리는 JAVA를 위한 생성자이고, 두개짜리는 XML을 위한 생성자라고 한다. Ctrl 을 누르고 선택하면 중복 선택이 가능하다. init 메소드 작성 init 메소드를 작성해준다. (이름이 꼭 init일 필요는 없다) in..
res/values 밑에 dimens.xml 파일을 생성한다. 16dp resources 태그 안에 dimen 태그를 넣고 이름과 크기를 지정한다. float textSize = getResources().getDimension(R.dimen.text_size); setTextSize(textSize); 자바 파일 안에서 위와 같이 textSize를 받아올 수 있다. getResources()는 res 폴더를 가리키고 getDimension은 수치를 가져온은 메소드이다. R.dimen.text_size로 위에서 지정한 textSize를 받아올 수 있다. 이렇게 하는 이유는 setTextSize 메소드는 px 단위로 받는데 textSize로 지정하면 dp 단위로 받을 수 있으며 유지보수에 용이하다. (재활..
에뮬레이터를 실행시키면 안드로이드 스튜디오 하단에 Waiting for all target devices to come onine 이라는 메시지가 한참 떠있다가 300초 뒤에 에뮬레이터를 실행시킬 수 없다고 하고 에뮬레이터에는 다음과 같이 아무 화면도 뜨지 않는 오류가 발생했다. 해결방법 AVD Manager을 실행시킨다 Wipe Data 클릭 가상 기기 목록 오른쪽의 ▼ 버튼을 클릭하여 Wipe Data 항목을 클릭한다. -> [YES] 다시 실행해본다 Wipe Data를 통해 데이터를 초기화 한 후 다시 실행시켜보니 구글 로고가 뜨면서 재부팅을 한다. -> 정상 동작한다. 이래도 안된다면 가상 기기를 새로 설치하자
화면에서 하늘색으로 보이는 View에 터치 이벤트를 달아준다. 터치 이벤트가 발생하면 ScrollView 밑에 있는 TextView에 로그가 남도록 프로그래밍 할 것이다. MainActivity.java package com.example.event; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.view.MotionEvent; import android.view.View; import android.widget.TextView; public class MainActivity extends AppCompatActivity { TextView textView; @Override protecte..