한 5일정도 Editor에 관한 기능들을 구현하는 중이고, 지금까지의 결과와 구현시 애로사항에 대하여 적어보겠다. 지금까지 Underline Span을 제외한 Italic, Bold 스타일을 주는 기능은 90%이상 구현이 완료되었다. 앞으로는 자잘한 버그만 수정하면 된다. 이유는 모르겠지만, 에뮬레이터에서는 잘되던게 실기기에서는 안되고, 실기기에서는 잘 되던게 에뮬레이터에서 잘 안되는 상황이 가끔 발생. 웃기점은 이전에는 되다가 갑자기 안되거나 이 반대의 상황이 벌어지기도 한다는 것. span을 줄때 숫자와 문자가 약간 다른 취급을 받는다는 것도 알 수 있었다. 일단 에디터의 주요 기능및 알고리즘 1. 문자열 선택후 Bold, Italic, Underline 버튼 누르면 각각 맞추어서 Span들어감 2...
Android
Editor를 하나 만드는 중이다. 실제로 이 에디터가 지금 개발중인 앱에 들어갈지는 모르겠지만, 지금까지 git에 공개된 에디터들을 보면 모두 Html을 파싱해서 만드는 것 같지만, 본인은 웹쪽은 거의 지식이 없기 때문에 Span으로 한번 해결해 보고자 했다. 그래서 몇일간 많은 시도를 해보며 알아낸 것들을 기술 해보려고 한다. 에디터를 만드는 것은 상상외로 까다롭게 될 것 같다. 1. SPAN_EXCLUSIVE_INCLUSIVE 가 대체 뭘까? exclusive는 속성 확장 X , inclusive는 속성을 확장한다는 뜻이다. 만약 위의 ex_in 속성을 주고 뒤에 문자를 insert 하면 설정한 속성이 뒤에도 유지된다는 것. 만약 중간에 삽입하게 된다면, 속성 상관없이 주위의 속성을 따라감. 아래 ..
방학을 맞이하여앱 개발을 하고 있는데, 기록으로 남기면 좋을 내용들이 꽤나 있을 것 같아서 이렇게 글을 써보려고 한다. Shared Element Transition을 이용하려고 해보았는데, 구글 로그인 후 startActivity로 화면전환을 시도하였지만, 클래스는 로드가 되고 레이아웃은 그려지지 않는 문제가 발생하였고, 이에 대한 해결책이 이번 일지의 주된 내용이다. 위 영상이 만들고 싶은 결과물(지금은 완성이 되었지만..) 버그는 항상 앱 개발을 하면서 있지만, 이번의 짜증나는 점은 Critical한 에러가 아니기 때문에.. 즉 안드로이드 입장에서는 별 이상이 없다고 판단하는 것이다. 사실 이건 에러가 아니라 내가 잘못한 것 이였는데, 구글에 나와있는 자료를 맹신한 것이 원인이였다. 보통 나는 개발..
에디터를 만들어 보던 중 한가지 에러가 났다. 에뮬레이터는 문제가 없었지만 실기기인 갤럭시 S10에서는 문제가 일어난 것. 바로 EditText 중간에 문자를 삽입하거나, 혹은 끝에 데이터를 추가하는 경우(사실 그냥 쓰는 경우라고 봐도 무방하겠다) 앱이 멈춘다. 정확히는 앱이 멈추는게 아니라 모든 UI스레드가 멈추어서 모든 이벤트에 대한 터치 피드백이 사라진다. 피드백만 안나오는게 아니라 아니라 이벤트도 무시된다. 이 경우 windowSoftInputMode 속성도 약간 관련이 있는 것 같다. 이 속성이 존재하지 않으면 프리징의 빈도, 시간이 확실히 줄어든다. 하지만 근본적인 해결책은 되지 않는다. 문제는 바로 핸들색을 지정해주는 속성이다. android:textSelectHandle 속성을 없애주자. ..
?android:attr/selectableItemBackground를 사용해야 한다. 서포트 라이브러리에 포함된 것과 기본으로 있는게 충돌나는 듯 하다.
앱을 만들던중 The style on this component requires your app theme to be Theme.AppCompat 에러가 떴다. 자세히는 TextInputLayout에 관련된 에러였는데.. 별 뻘짓거리를 다하다가 둥근 모서리 팝업액티비티를 만들때, 다른 블로그에서 관련 소스를 복붙해왔던게 생각났고 아니나 다를까였다. 본인은 이렇게 parent가 android:Theme.Dialog 로 되있었는데 이것을 AppCompat Dialog로 바꿔주었더니 해결이 됬다. 아무쪼록 이제 로그캣을 좀 광범위 하게 봐야겠다. 저 style 관련 문구가 로그캣 2/3정도 지점에 끼어있어서 TextInputLayout 관련 오류만 주구장창 찾아보고, gradle도 수정하고...