no image
9장 - 일정 시간 후에 실행하기
⭐주요 메서드⭐postAtTimepostDelayed : 약간의 시간이 지난 후 코드가 실행됨. (ex. handler.postDelayed(new Runnable(){...}, 1000);sendMessageAtTime : 메시지를 보낼 때의 시간 지정 가능sendMessageDelayed : 메시지를 일정 시간이 지난 후 보내짐 0️⃣예제 실행화면 1️⃣activity_main.xml 2️⃣MainActivity.java메서드를 2개 만든다. (request, makeRequestDialog)package com.example.chapter9_2;public class MainActivity extends AppCompatActivity { TextView textView; Handler ..
2025.01.24
no image
9장 - 스레드와 핸들러
스레드(Thread) : 동시 수행이 가능한 작업 단위 (보통 한개의 프로세스는 하나의 일만 하지만 스레드를 이용하면 2가지 이상이 가능해짐) 대기시간이 길어지는 기능(ex.네트워크 요청)을 수행할 때 UI가 멈춤상태로 있게 되는 문제 발생.👉멀티스레드 방식을 사용해서 해결. (같은 프로세스 안에 들어있으면서 메모리 리소스를 공유하므로 효율적임) 그런데 스레드는 화면 레이아웃에 들어있는 뷰들에 접근하지 못함.(메인 스레드와 또 다른 스레드가 공통 메모리 리소스에 동시에 접근할 시 문제가 발생하기 때문)동시에 리소스에 접근할 때 데드락(DeadLock)이 발생하여 시스템이 비정상적으로 동작할 수 있다. *메인 스레드 : UI를 관리하는 기본 스레드*데드락(DeadLock) : 어떤 것을 먼저 처리할 지 ..
2025.01.22
no image
도전!16 - 웹브라우저 화면 구성
웹뷰랑 애니메이션 복습하는 예제.실행화면은 다음과 같다. 1️⃣activity_main.xml🔸전체 코드🔸더보기  최상위 레이아웃은 FrameLayout으로 설정했다. (다른 레이아웃으로 설정한다면, 탭을 열고 닫을 때 그 부분은 웹뷰가 없어서 하얀 빈칸이 보이게 될 것이다.)'닫기' 버튼을 누르면 오른쪽 부분만 열고 닫을 수 있도록 분리했다. (tab) 참고로 visibility를 가지고 tab이 열렸는지, 열리지 않았는지를 구분할 수 있도록 설정해놨기 때문에tab의 visibility 속성을 설정해줘야한다. (처음엔 보이니까 visible. 난 당연히 visible로 기본 설정되어있는 줄 알았..
2025.01.21
no image
도전!15 - 입력 화면의 애니메이션
새 액티비티를 만든 뒤, 메인 액티비티와 새 액티비티에서 서로 이동할 때마다 애니메이션이 적용된 방식이다.대충 요런 느낌이다. (화질을 좀 더 좋게 하고 싶었지만 GIF는 화질 설정이 따로 없길래..)  1️⃣새 액티비티를 만든다. (CustomerActivity)  2️⃣MainActivity.javapackage com.example.doitmission_15;public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.lay..
2025.01.21
no image
8장 - 웹뷰, 시크바, 키패드 제어
🚩앱 화면에 웹 브라우저 넣기웹뷰(WebView) : 웹브라우저를 앱 안에 넣을 때 사용한다.                            인터넷에 접속하므로 매니페스트에 인터넷 접속 권한과 속성이 등록되어있어야한다. 1️⃣activity_main.xmlWidgets에 WebView가 들어있다.🔸코드🔸더보기 2️⃣MainActivity.javapackage com.example.chapter8_3;public class MainActivity extends AppCompatActivity { EditText editText; WebView webView; @Override protected void onCreate(Bundle..
2025.01.20
no image
17478 : strcat 문자열 뒤에 추가하기
재귀함수 문제. (참고로 재귀함수는 영어로 recursive function이라고 한다.) strcpy는 복사, strstr은 문자열에서 문자열 찾기, strcat은 문자열의 뒤에 문자열을 추가하는 함수이다.반대로 잘라내서 뒤를 잘라내는 함수도 있겠거니, 찾아봤지만 없었다. 어째서 #include #include #define _CRT_SECURE_NO_WARNINGSvoid recursive(int x);int N;char low[100000] = {};int main() { int n; scanf("%d", &n); printf("어느 한 컴퓨터공학과 학생이 유명한 교수님을 찾아가 물었다.\n"); N = n; recursive(n); return 0;}void recursive(int x) { if..
2025.01.19
no image
8장 - 페이징 슬라이딩
페이징 슬라이딩 : 버튼을 눌렀을 때 보이지 않던 뷰가 슬라이딩 방식으로 나타나는 기능 (ex. 바로가기 메뉴) 1️⃣activity_main.xml최상위 레이아웃을 FrameLayout으로 바꾼뒤 3개의 LinearLayout을 내부에 배치한다. (중첩)첫번째 레이아웃☝ : 가로 세로 match_parent로 지정, 배경색 바꾸기(갈색으로 함)두번째 레이아웃✌ : 슬라이딩으로 보여줄 뷰이다. id는 "page"로 지정하고 layout_width의 속성값을 숫자로 지정한다. (화면의 일부를 채우도록) layout_gravity의 속성값을 right으로 지정해서 오른쪽에 위치시키자. 또한, 사용자가 원하는 시점에 보여야하므로 visibility 속성을 gone으로 설정한다.세번째 레이아웃👌 : 버튼을 추..
2025.01.18
no image
8장 - 애니메이션
트윈 애니메이션(Twin Animation) : 이동(Translate)➡ / 확대&축소(Scale)🔎 / 회전(Rotate)↺ / 투명도(Alpha)👻                                                        위와  같이 일정한 패턴으로 움직이는 애니메이션을 구현할 때 사용됨.                                                        대상은 뷰(위젯이나 레이아웃), 그리기 객체(Drawable)이다. [ 애니메이션의 동작 ]XML로 애니메이션의 동작을 정의한다.JAVA 소스에서 애니메이션 객체로 로딩한다.뷰 객체의 startAnimation 메서드로 애니메이션이 동작한다. [ 애니메이션 파일 디렉토리 ]애니메이션을 위..
2025.01.18
no image
도전!14 - 쇼핑 상품 화면 구성하기
격자 형태로 쇼핑 상품을 보여주는 화면을 구성할 것이다. 상품을 클릭하면 해당 상품의 정보가 토스트 메시지로 나타난다. 1️⃣ xml 파일 만들기🔸activity_main.xml 코드🔸더보기 🔸shopping_item.xml 코드🔸더보기 2️⃣ 아이템의 정보가 담길 클래스 만들기쇼핑 상품의 정보는 4가지이다. 상품명(name), 상품가격(price), 상품설명(description), 상품이미지(image)여기서 상품이미지는 resId를 가져오는 것이므로, int형으로 선언한다. (나머지는 String 형)🔸ShoppingItem.java🔸더보기생성자를 만든 뒤 getter and setter로 각 상품정보의 get, set 메서드를..
2025.01.17