본문 바로가기
프로그래밍 공부

모바일 앱 프로그래밍 공부 7일째 - 이지뷰어 앱만들기 (2019.03.24)

by 채리 2019. 12. 5.
  • 이지뷰어 앱 만들기

 

다른 모바일앱에서는 조합형을 지원하지 않길래, 내친김에 조합형 문서도 읽을 수 있도록 했습니다.
아랍어랑 일본어도 테스트해봤는데 잘되네요. ^^ 모바일용 이지뷰어 앱을 만들기 시작한지 벌써 1주일이 지났습니다.
파일선택창도 만들어 붙여주었고, 파일을 선택하면 인코딩을 체크해서 문서를 보여줍니다.
다른 모바일앱에서는 조합형을 지원하지 않길래, 내친김에 조합형 문서도 읽을 수 있도록 했습니다.
아랍어랑 일본어도 테스트해봤는데 잘되네요. ^^

 

이제 서로다른 액티비티간에 값을 주고 받을 수 있는 방법을 찾았습니다.

액티비티의 intent를 구해서 putExtra에 값을 넣은 다음, 액티비티를 실행하면 해당 액티비티에서는 getExtra로 값을 읽어오면 되더군요.

덕분에 그동안 구현하고 싶어도 하지 못했던 기능들을 만들 수 있게 되었습니다.

일단 include로 구현해놓은 뷰어기능을 다른 액티비티로 따로 만들어봅니다.

그런다음 뷰어 액티비티를 호출하기전 putExtra에 파일명을 집어넣고 액티비티를 실행!

뷰어 액티비티의 onCreate 이벤트에서 getExtra로 전달받은 파일명을 읽어 화면에 보여주도록 만들었습니다.

정상적으로 잘 동작하는군요.


일단 뷰어의 화면 상하를 나누어 위를 터치하면 이전 페이지로, 아래를 터치하면 다음 페이지로 이동되도록 만들었습니다.

화면상단 타이틀에 파일명과 현재위치등을 보여줘야 하는데, 터치이벤트에서 정보를 보여주고 파일을 읽어올때도 정보를 보여주고...

여기저기 정보를 보여줘야할 곳이 많네요.

정보를 보여주는 함수를 하나 만들어서 각각 필요한 곳에서 호출하도록 만들어보았지만, 뭔가 마음에 들지 않습니다.


페이지등이 이동되려면 결국 뷰어의 화면이 갱신이 된다는 뜻이고, 이는 뷰어의 onDraw가 계속해서 호출이 된다는 뜻입니다.

하지만 뷰어와 상단 타이틀은 전혀 다른 액티비티라서 실시간으로 정보를 표현해주는 것은 어렵습니다.


윈도우 프로그램의 SendMessage처럼 메시지를 주고받는 함수같은 것은 없을까?

C++이든 자바, 파이썬, 파스칼등등... 언어가 다르더라도 프로그램을 만드는 기능은 동일하니깐 결국 비슷한 기능이 분명 존재할 겁니다.

자바도 분명 SendMessage같은 함수를 지원하겠죠.

찾아보니 sendMessage, sendEmptyMessage라는 함수가 존재합니다만, Handler라는 것을 만들어서 사용해야하는 불편함이 있습니다.

어쨌든 되긴하니깐 일단 안심입니다.


이지뷰어에서만 사용할 것이니깐 공용클래스로 만들어서 필요한 메시지들을 처리하도록 했습니다.

일반적으로 sendMessage를 사용하려면 해당 액티비티에 이 Handler를 알려줘야하고 여러가지로 귀찮은 과정이 필요하기때문에 하나의 공용클래스에서 메시지를 처리하는 게 편리할 것 같습니다.

메시지에 따라서 서로 다른 액티비티에서 메시지를 처리할 수 도 있구요.


오늘은 PC용 이지뷰어에서 지원되는 줄바꿈시 여백정렬과 몇가지 설정 기능까지만 만들어봤습니다.

 

아직 환경설정 메뉴를 제대로 만들지 못해서, 볼륨 아랫키를 눌러 여백정렬 기능을 테스트해봤습니다.

 

아직 쓸만한 버튼 이미지를 구하지 못해서 대충 <<, >> 표시로 버튼을 만들었더니 모양이 들쭉날쭉 제멋대로입니다.


원래 우측상단에 ㉤처럼 생긴 버튼이 있어서, 요걸 클릭하면 글자크기/줄간격등을 설정할 수 있는 간단한 설정창이 뜨도록 했는데, 집사람이 버럭~ 짜증을 내더군요.

버튼에 가려서 글내용이 잘 안보인다나요?

좀더 투명처리하면 되지 않을까 싶었는데, 그래도 눈에 거슬린다고 치우라네요. ㅠ.ㅠ

곰곰히 생각하다가 그냥 버튼을 없애고, 버튼 자리 빈공간을 클릭하면 간이 설정창이 뜨도록 했습니다.

버튼이 표시되지 않으니깐 사용자들은 간이 설정창 기능이 있는줄 모를 것 같습니다.

 

즐겨찾기랑 히스토리기능만 추가하면 텍스트 뷰어로서 대충 기능은 완성될 것 같습니다.

이제 압축파일과 이미지 뷰어 기능을 추가해봐야 겠습니다.


모바일 앱 프로그래밍을 공부하다보니, 윈도우 프로그래밍에 비해서 너무 편한 것 같습니다.

웬만한 라이브러리들은 인터넷에 돌아다니니, 굳이 고생해서 만들 필요도 없고 그냥 가져다 쓰면 되니깐요.

PC용 이지뷰어를 어느정도 쓸만하게 만들기까지 몇 년 걸렸는데, 모바일용 이지뷰어는 1주일도 안돼서 만들어지는 군요.

재미도 있고... 당분간 모바일 앱 프로그래밍에 빠져살 것 같습니다.

이참에 아이폰용 프로그래밍도 해볼까 싶기도 합니다.

음... 아이폰이 없는데... 그냥 에뮬레이터로만 테스트해봐도 문제는 없을지 잘 모르겠습니다.

댓글0