Tip/Android2019. 9. 2. 00:44

Android 제비뽑기 앱 만들기 (I)


결과물
 
 

앱의 목적
 
2명이상의 사용자들 중 한 명을 뽑아 준다 (사다리 타기)
 
  • 사용 예:  커피 쏘기

앱의 기본 동작 설계
 
 
앱의 요구 사항 분석
 
  • 앱을 실행 후 2명 이상이 화면에 손가락을 올리면, 3초 뒤에 한 명을 선택해 준다
  • 손가락을 올려 둔 상태에서 3초 안에 손가락을 떼거나, 추가하면 다시 3초를 센다
  • 손가락을 올려 둔 상태에서 3초 안에 손가락을 모두 떼면, 동작을 멈춘다
  • 60초 동안 아무도 손가락을 올리지 않으면 자동으로 앱이 종료 된다
 
 
기초 설계
 
  • 앱의 동작을 위하여 내부적으로 IDLE, SELECTING, SELECTED 3개의 State를 가지는 State machie 을 구상하였다.
  • State의 변화는 아래와 같다. (편의 상 시간의 변화를 tick이란 단어로 표시했다.)
 
 
 
State pattern
 
 
 
Code 생성
 
IState.java
package com.chobocho.chooseone.state;
 
import com.chobocho.chooseone.manager.ChooseManager;
 
public abstract class IState {
    public static final int IDLE = 0;
    public static final int SELECTING = 1;
    public static final int SELECTED = 2;
 
    ChooseManager manager;
    int mTick;
    int mPointNum;
 
    public IState() {
 
    }
 
    public void Init() {
        mTick = 0;
    }
 
    public void tick() {
        // TODO implement here
    }
 
    public void updatePointList(int point) {
        // TODO implement here
    }
}
 
IdleState.java
package com.chobocho.chooseone.state;
 
import androidx.annotation.NonNull;
import com.chobocho.chooseone.manager.ChooseManager;
 
public class IdleState extends IState {
    public IdleState(ChooseManager manager) {
        this.manager = manager;
        super.Init();
        mPointNum = 0;
    }
 
    @Override
    public void updatePointList(int point) {
        mPointNum = point;
        if (mPointNum >= 2) {
            manager.transit(IState.SELECTING);
        }
    }
 
    @Override
    @NonNull
    public String toString(){
        return "IdleState";
    }
}
 

'Tip > Android' 카테고리의 다른 글

[Termux] Web server 돌리기  (0) 2020.10.27
[Termux] ssh 사용하기  (0) 2020.10.26
[Gradle] Version 명 자동 업데이트  (0) 2020.04.11
Posted by chobocho