오늘 한 일
Rust 공부
안드로이드 플젝 UI 구현중
Rust
Input 받아오기
use std::io;
fn main() {
//무한히 operate_state() 받아오며 실행
loop {
let change_state = operate_state();
match change_state{
Ok(_) => {}
Err(_) => println!("read is failed"),
}
}
}
//ENUM 정의
enum State {
Off,
Sleep,
Reboot,
Shutdown,
Hibernate
}
impl State {
fn state_operating(word: &str) -> Option<State>{
use State::*;
match word{
"off" => Some(Off),
"sleep" => Some(Sleep),
"reboot" => Some(Reboot),
"shutdown" => Some(Shutdown),
"hibernate" => Some(Hibernate),
_ => None,
}
}
}
//STDIN
fn get_input() -> Result<String, io::Error> {
let mut buffer = String::new();
io::stdin().read_line(&mut buffer)?;
Ok(buffer.trim().to_lowercase().to_owned())
}
//OPERATE(print out) 분리
fn operate_state() -> Result<(), io::Error>{
use State::*;
let input = get_input()?;
let state: Option<State> = State::state_operating(&input);
match state{
Some(state) => {
match state{
Off => println!("off the screen"),
Sleep => println!("Sleep Mode"),
Reboot => println!("rebooting..."),
Shutdown => println!("shutdown after 10secs"),
Hibernate => println!("hibernating"),
}
}
None => println!("{:?} is not keyword", input),
}
Ok(())
}
use std::io
io 라이브러리 사용
io::stdin().read_line(&mut buffer)?;
: stdin() 함수의 결과값에 read_line() 함수 적용
: &
대여, mut
mut 변수 ⇒ &mut
mut 변수의 대여를 가리킴
: io 작업은 Result이므로, ? 적용 → io::Error
가 에러타입임
안드로이드 UI 구현 - 시작페이지
Time Picker 만들기
레이아웃 단 : 버튼생성, picker 창 생성
Activity.kt 단: 버튼 터치시 이벤트 핸들링, 메뉴 터치시 이벤트 핸들링, Fragment 띄우고 닫기 핸들링
버튼 클릭 → Activity단 핸들링 → picker창 띄움 → Activity단 클릭 핸들링 → picker 창 닫고 해당 정보 저장
Checkbox 택1 만들기
레이아웃 단: checkbox 위젯 생성
Activity.kt 단: 버튼 터치시 1개만 눌리도록 로직 설정
버튼 클릭 → Activity단 핸들링 → 1개 버튼만 불러오게
⇒ 하지만 checkbox의 사이즈와 색상을 커스텀하게 만들기 위해서,
체크박스 부분 drawable 리소스로 관리,
Activity 단에서 그려내고, click 핸들러로 처리하기