Coding/Java 삽질기2024. 6. 25. 01:02
 // 한번에 원하는 위치로 이동하기
 ebookListView.setSelection(loadCurrentPosition())
// 현재 보이는 첫 번째 줄 위치 가져오기
ebookListView.firstVisiblePosition

 

Posted by chobocho
Coding/Java 삽질기2024. 3. 8. 00:36

IntelliJ에 있는 유용한 기능 중 하나가 JShell 콘솔이다.

아래와 같이 입력 후, 실행을 하면

결과를 실행 창에서 볼 수 있다.

 

Posted by chobocho
Coding/Java 삽질기2023. 8. 29. 22:53

Freecell solitare 카드 게임은 어떠한 개인 정보도 수집하지 않습니다.

Freecell solitare Card Game does not collect any personal information.

 

Posted by chobocho
Coding/Java 삽질기2023. 5. 10. 19:22

Classic Block Game V2 는 어떠한 개인 정보도 수집하지 않습니다.

Classic Block Game V2 does not collect any personal information.

Posted by chobocho
Coding/Java 삽질기2022. 11. 23. 01:38

Classic Minesweeper for Android 는 어떠한 개인 정보도 수집하지 않습니다.

Classic Minesweeper for Android does not collect any personal information.

Posted by chobocho
Coding/Java 삽질기2022. 11. 16. 02:00

ImageMatch 는 어떠한 개인 정보도 수집하지 않습니다.

ImageMatch does not collect any personal information.

 

Posted by chobocho
Coding/Java 삽질기2021. 10. 24. 18:08

TextView에서 한 줄에 표시되는 글자수를 계산 하는 코드

var textView: TextView = findViewById(R.id.textView)
val COL : Int = Math.round(textView.width / textView.paint.measureText("가나다라마.") * 6)

그런데 OnCreate에서 위 함수를 사용하면 0이 나온다.

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.textviewer)
      
        val vto: ViewTreeObserver = textView.getViewTreeObserver()
        vto.addOnGlobalLayoutListener {

            if (getWidthCount < 1) {
                getWidthCount++

                val COL : Int = Math.round(textView.width / textView.paint.measureText("가나다라마.") * 6)
                Log.i(TAG, "getWidth:" + COL)
            }
        }
    }

이 경우 위와 같이, 코드를 추가해 주면 된다.

Posted by chobocho
Coding/Java 삽질기2021. 10. 17. 13:38

Unit test에서 Test sample 파일을 읽어서 테스트 하는 방법

1. test 폴더에 resources 폴더를 만들고 테스트 파일을 넣는다

2. 아래와 같이 코드를 작성한다.

    @Test
    public void encrypt() throws URISyntaxException {
        File file = new File(getClass().getResource("/1.txt").toURI());
        assert(file != null);
        URL unavailableURL = getClass().getResource("/unavilable.txt");
        assert(unavailableURL == null);
    }

Posted by chobocho
Coding/Java 삽질기2020. 5. 14. 08:54

자연스러운 카드 이동 화면 구현

카드를 마우스로 드래그 하여 이동할 경우, 드래그를 시작한 마우스의 좌표(smx, smy) 와

카드의 좌측 상단 포인트 (scx, scy)에서 가로, 세로 차이 W (scx - smx), H (scy - smy)를 구합니다.

그리고 마우스를 드래그 하는 동안 마우스 커서 위치에 카드를 그려야하는데,

현재의 마우스 좌표 (mx, my) 에서 위 에서 구한 W, H 의 거리만큰 이동한

(cx = mx - W, cy = my - H)를 시작 점으로 하여 카드 이미지를 그려주면,

자연스러운 카드 이동 화면을 구현 할 수 있습니다.  

 

참고소스:

https://github.com/chobocho/solitaire/commit/cf83dcc10c0c890aaf0cda1f73323a33f7092d87

Posted by chobocho
Coding/Java 삽질기2020. 4. 12. 01:18

몇 년 전에 만들었던, 마작 게임을 껍데기만 빼고 다 바꿔 보았다.

PlayStore:  https://play.google.com/store/apps/details?id=com.chobocho.ColorMatch

Source code: https://github.com/chobocho/ImageMatch

마작 게임 스크린 샷

 

1. 전체 패키지 구조는 아래와 같다

간단한 패키지 구조도

 

2. 이중 마작게임의 State diagram은 아래와 같이 구상 했다.

스테이트 다이어그램

 

3. 그리고 아래와 같이 Class diagram 을 작성했다.

 

Posted by chobocho