안드로이드 자바548 [Java][Android] ViewFlipper 사용해서 뷰 전환 애니메이션 구현하기 안녕하세요이번시간에는 ViewFlipper 사용해서 뷰 전환하는 애니메이션을 구현해보도록 하겠습니다. 안드로이드 앱을 개발하다 보면 여러 개의 뷰를 번갈아 가며 보여줘야 할 때가 있습니다. 예를 들어, 이미지 슬라이드 쇼나 여러 단계로 이루어진 회원가입 폼 등이 있겠죠. 이때 단순히 뷰를 GONE으로 숨기고 VISIBLE로 표시하는 것보다, 자연스러운 애니메이션 효과를 주면서 전환하고 싶을 때 ViewFlipper를 사용하면 더욱 효과적으로 구현할 수 있습니다. 전체 코드입니다. acitivity_main.xml MainAcitivity.javapublic class MainActivity extends AppCompatActivity { private .. 2025. 6. 17. [Java][Android] Material CalendarView 사용하여 달력 표시하기 안녕하세요이번에는 Material CalendarView 사용해서 달력 표시하는 방법에 대해 알아보도록 하겠습니다.안드로이드스튜디오 내부에는 기본적으로 사용 가능한 CalendarView 를 제공합니다.하지만 커스텀하기에 매우 제한적이기 때문에, 라이브러리를 많이들 사용합니다. 그중에서, 가장 대표적으로 사용되는 Material CalendarView를 사용해 특정 날짜를 강조표시하는것을 해보겠습니다. 우선 라이브러리 사용을 위해 build.gradle.kts (Module :app) 수준에 의존성을 추가해줍니다.dependencies { implementation ("com.prolificinteractive:material-calendarview:1.4.3")} 전체 코드입니다. MainAct.. 2025. 6. 10. [Java][Android] Timber 활용 예시 만들기 오늘은 Timber를 활용해 간단한 예시를 만들어 보겠습니다. Timber는 안드로이드 기본 Log 위에 유틸리티를 제공하는 라이브러리 입니다. 그래들 설정=> 모듈 레벨 build.gradle 파일의 android{} 내부에 위와 같이 설정해 Buildconfig 클래스를 자동생성하게 해줍니다. => 모듈 레벨 build.gradle 파일의 dependencies{} 내부에 Timber 라이브러리를 추가해줍니다. 레이아웃 xml 파일 코드(activity_main.xml) Application 상속 클래스 코드public class MyApplication extends Application { @Override public void onCreate() { .. 2025. 6. 6. [Java][Android] Sharesheet 방식으로 데이터 공유하기 안녕하세요오늘은 Sharesheet 방식을 사용해 데이터를 공유하는 방법에 대해 알아보겠습니다. 우선 안드로이드 공식문서에, Sharesheet에 대한 설명으로Android Sharesheet는 주로 앱 외부나 다른 사용자에게 직접 콘텐츠를 보내도록 설계되었습니다. 예를 들어, 친구와 URL을 공유합니다.이렇게 나와있는것을 확인할 수 있습니다. 전체 코드입니다. activity_main.xml MainActivity.javapublic class MainActivity extends AppCompatActivity { Button btnShare; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(s.. 2025. 6. 3. [Java][Android] 버튼 연속 클릭 방지하기 왜 버튼 연속 클릭 방지가 필요한가요? 서버 부하 증가: 사용자가 버튼을 빠르게 여러 번 누르면, 각 클릭마다 서버로 API 요청이 중복해서 전송될 수 있습니다. 이는 서버 리소스를 불필요하게 소모시키고, 심한 경우 서비스 장애로 이어질 수 있습니다.의도치 않은 데이터 중복 생성/수정: 예를 들어 '게시글 작성' 버튼을 연타하면 동일한 내용의 게시글이 여러 개 생성될 수 있습니다. 사용자 경험(UX) 저하: 앱이 반복적인 요청으로 인해 느려지거나, 예기치 않은 동작을 보이면 사용자는 불편함을 느낍니다.클라이언트 리소스 낭비: 불필요한 네트워크 요청은 사용자의 데이터 소모를 늘리고, 배터리 사용량에도 영향을 줄 수 있습니다. 1.마지막 클릭 시간으로 연속 클릭 방지 (Throttling)마지막으로 유효한 .. 2025. 6. 2. [Java][Android] commons-io 활용 예시 만들기 오늘은 apache commons-io 라이브러리를 활용해 파일 데이터 읽기, 쓰기 예시를 만들어 보겠습니다. apache commons-io 라이브러리는 입출력 관련 유틸리티 기능을 제공하는 라이브러리 입니다.InputStream/OutputStream, 파일 복사,수정, 파일 검색 필터링 등 입출력 관련 기능들을 쉽게 사용할 수 있도록 지원해줍니다. 그래들 설정=> 모듈 수준의 build.gradle 파일 에서 commons-io 라이브러리를 추가해주세요. 버전은 아래의 공식홈페이지 정보를 참고하세요.https://commons.apache.org/proper/commons-io/changes.html Apache Commons IO Release Notes – Apache Commons IOA.. 2025. 5. 30. [Java][Android] 암시적 인텐트로 지도 활용하기 안녕하세요오늘은 암시적 인텐트로 지도를 활용해보도록 하겠습니다 전체 코드입니다 activity_main.xml MainActivity.javapublic class MainActivity extends AppCompatActivity { Button btnOpenMapLocation, btnSearchInMap; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btnOpenMapLocation = findViewById(R.id.btnOpenMapLocation); btn.. 2025. 5. 27. [Java][Android] SharedPreferences 데이터 암호화 SharedPreferences의 보안 취약점 기본 SharedPreferences는 데이터를 일반 텍스트(Plain Text) 형태로 XML 파일에 저장합니다. 이 파일은 앱의 내부 저장소 (/data/data//shared_prefs/)에 위치하며, 루팅되지 않은 일반 기기에서는 다른 앱이나 사용자가 직접 접근하기 어렵습니다. 주요 특징: 자동 암호화/복호화: 데이터를 저장할 때 자동으로 암호화하고, 읽을 때 자동으로 복호화합니다. 개발자는 암호화 과정을 신경 쓸 필요 없이 기존 SharedPreferences처럼 사용하면 됩니다.암호화 알고리즘: AES-256 GCM과 같은 강력한 암호화 표준을 사용합니다.마스터 키 관리: 암호화에 사용되는 마스터 키를 Android Keystore 시스템을 통해 .. 2025. 5. 26. [Java][Android] LifecycleOwner 활용 예시 만들기 오늘은 LifecycleOwner를 활용해 여러 옵저버 클래스 구현체들에 의해 LifecycleOwner의 구현체의 상태 정보 변경을 관찰 당하는 예시를 만들어 보겠습니다. 레이아웃 xml 파일 코드(activity_main.xml) 액티비티 자바 코드(MainActivity.java)public class MainActivity extends AppCompatActivity { private MyLifecycleOwner myLifecycleOwner; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); .. 2025. 5. 23.