본문 바로가기

전체 글1301

[JAVA][Android] TextInputLayout 사용해서 EditText에 오류메시지 등 표시하기 안녕하세요 오늘은 TextInputLayout 을 사용해서, EditText에 힌트나 오류메시지 등을 표시하는 기능을 알아보겠습니다.TextInputLayout 을 사용하면, 입력필드에 추가적인 UI를 효과적으로 나타낼 수 있습니다. 우선 Material Design을 의존성에 추가해야합니다. build.gradle(Module:app) 파일에 의존성을 추가하도록 하겠습니다.dependencies { implementation("com.google.android.material:material:1.9.0")}  전체 코드입니다. MainActivity.javapublic class MainActivity extends AppCompatActivity { private TextInputLayout .. 2024. 10. 15.
[Python] 카카오 API 사용해서 도로명 주소를 위도, 경도 좌표로 반환하기 (Geocoding) 안녕하세요 오늘은 도로명 주소를 위도, 경도 좌표로 변환해보도록 하겠습니다 고유 명칭(주소나 산, 호수의 이름 등) 을 가지고 위도와 경도의 좌표값을 얻는 것을 지오코딩(Geocoding) 이라고 합니다.  카카오, 구글 에서는 지오코딩 가능한 api 를 제공합니다. 하나의 주소에 대해서만 위도, 경도가 필요한 것이라면, 구글 검색으로도 충분합니다. 본 게시글에서는 카카오 지오코딩을 사용하여서 csv 파일에 저장된 대량의 도로명 주소들에 대한위도, 경도 좌표를 한번에 가져오도록 하겠습니다.   1. 카카오 키 발급하기먼저 카카오 개발자 홈페이지 (Kakao Developers) 에 들어갑니다. '내 애플리케이션 -> 애플리케이션 추가'  버튼을 눌러줍니다.  지오코딩이라는 이름으로 새로운 프로젝트를 생성.. 2024. 10. 14.
[JAVA][Android] 안드로이드 ImageSwitcher을 사용하여 부드럽게 이미지 전환하기 버튼을 눌러서 이미지 전환을 하는데 보통은 바로바로 바뀌는데 이번에는 부드럽게 전환해 보겠습니다.부드러운 이미지 전환:이미지가 갑자기 바뀌는 것이 아니라, 전환 애니메이션이 추가되어 사용자에게 더 자연스럽고 시각적으로 만족스러운 경험을 제공.애니메이션을 통해 UI가 더욱 세련되고 직관적으로 보일 수 있습니다.애니메이션의 손쉬운 구현:이미 제공되는 setInAnimation과 setOutAnimation 메소드를 통해 별도의 복잡한 애니메이션 코드를 작성하지 않고도 쉽게 이미지 전환 효과를 적용할 수 있습니다.이미지 뷰 재사용:ImageSwitcher는 ImageView를 재사용하므로, 메모리 효율이 높습니다. 매번 새로운 ImageView를 생성하는 대신 하나의 ImageView에 이미지를 바꾸는 방식으.. 2024. 10. 13.
[Kotlin][Android]항목 선택 다이얼로그 만들기 오늘은 배열과 AlertDialog.Builder를 활용해 코틀린 언어로 항목 선택 다이얼로그를 만들어 보겠습니다.  레이아웃 xml 파일 코드(activity_main.xml)       액티비티 코틀린 코드class MainActivity : AppCompatActivity() { private lateinit var itemTextView: TextView // 선택한 항목을 표시할 텍스트뷰 private lateinit var showDialogButton: Button // 다이얼로그 띄우기 버튼 private lateinit var listDialog: AlertDialog // 목록을 보여줄 다이얼로그 private val strArray = arrayOf(.. 2024. 10. 12.
[JAVA][Android] Chip (칩) 기능 사용하기 안녕하세요 오늘은 Chip (칩) 이라는 기능에 대해서 살펴보겠습니다. Chip은 짧은 텍스트, 아이콘, 또는 삭제버튼을 함께 표시할 수 있는 UI 요소입니다. 태그나 이메일 목록과 같은 정보를 표시할 때 유용하게 사용할 수 있습니다. Chip은 작고 가벼운 디자인으로, 여러 정보를 효율적으로 전달할 수 있습니다.  우선 전체 코드입니다. MainActivity.javapublic class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.act.. 2024. 10. 11.
[JavaScript] 비행기 슈팅 게임 만들기 - (5) 점수, 목숨, 다시 시작 구현 안녕하세요!지난 글에서는 비행기와 적의 충돌을 처리하고 게임 오버 상태를 구현하는 방법을 설명드렸는데요.오늘은 지난 시간에 이어서, 점수 시스템, 목숨 시스템, 게임 오버 후 다시 시작 기능을 구현해서 게임을 더 재미있게 만들어보겠습니다.   이전 코드는 아래 링크를 참고해주세요.2024.09.15 - [JavaScript] - [JavaScript] 비행기 슈팅 게임 만들기 - (4) 충돌 감지와 게임 오버 [JavaScript] 비행기 슈팅 게임 만들기 - (4) 충돌 감지와 게임 오버안녕하세요.오늘은 지난 시간에 이어서, 적과 총알이 충돌하면 적을 제거하고, 적과 비행기가 충돌하면 게임 오버가 되는 기능을 구현하겠습니다.    이전 코드는 다음 링크를 통해 확인할 수stickode.tistory.c.. 2024. 10. 10.
[Kotlin][Android] Jetpack Compose 목록에 텍스트 아이템 추가, 삭제하기 안녕하세요 이번 시간에는 안드로이드 컴포즈를 사용하여텍스트로 구성된 아이템 목록에 새로운 텍스트 아이템을 추가하고, 삭제하는 기능을 간단하게 만들어보도록 하겠습니다   이전 게시글인 체크 박스 만들기는 아래 링크를 참고해주세요   [Kotlin][Android] Jetpack Compose 클릭한 아이템 개수 실시간 업데이트하기안녕하세요 오늘은 지난번 컴포즈를 사용해 체크박스를 만들어보았는데요 오늘은 체크된 아이템 개수를 동적으로 변경하는 텍스트뷰를 추가해보도록 하겠습니다  안드로이드 컴포즈로 체크stickode.tistory.com   먼저 새로운 아이템을 추가할 텍스트 입력칸을 만들어줍니다 // 새로운 아이템 추가 입력 필드Row(modifier = Modifier.padding(16.dp)) { .. 2024. 10. 9.
[flutter] 버튼 클릭하여 리스트뷰 아이템 추가하기 안녕하세요,오늘은 버튼을 클릭하여 리스트뷰에 아이템을 추가해보겠습니다.   import 'package:flutter/material.dart';void main() { runApp(MyApp());}class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( home: MyHomePage(), ); }}class MyHomePage extends StatefulWidget { @override _MyHomePageState createState() => _MyHomePageState();}class _MyHomePageState extends St.. 2024. 10. 8.
[JAVA][Android] PopupWindow 표시하기 PopupWindow는 사용자 인터페이스(UI)에서 추가적인 정보를 제공하거나 사용자의 상호작용을 유도할 때 사용합니다.PopupWindow를 사용하는 이유간편한 정보 제공:PopupWindow를 사용하면 사용자가 현재 보고 있는 화면의 흐름을 방해하지 않고, 추가적인 정보를 제공할 수 있습니다. 예를 들어, 더 많은 세부정보를 보여주거나 추가 설명을 제공할 때 유용합니다.화면 공간 활용:주요 화면에 많은 정보를 동시에 표시할 수 없을 때, PopupWindow를 사용하여 필요한 정보를 별도로 띄워 공간을 절약할 수 있습니다.사용자 상호작용 유도:사용자에게 특정 동작을 유도하기 위해 팝업을 띄울 수 있습니다. 예를 들어, 사용자가 특정 작업을 완료하기 전 확인 메시지를 표시하거나, 추가 옵션을 제공할 때.. 2024. 10. 7.