관계, Networking 그리고 Programming 46

하나의 TextView(EditText)에 서로 다른 크기의 글씨 넣기.

하나의 TextView 혹은 EditText를 만들어 놓고 안에 넣을 문자열에 여러개의 스타일을 적용하고 싶은 경우가 있다. 나의 경우 하나의 EditText를 만들고 그 안에 현재의 위치 정보를 적는데, 일단 현재 위치의 나라 이름을 보여주고 그 아래쪽으로 좀 더 작은 글씨로 상세 주소를 알려주고 싶었다. 이러한 경우 기존의 다른 코드에서는 SpannableString을 사용했었다. SpannableString의 경우 스트링 내 문자열 위치를 지정해서 스타일을 적용할 수 있다. 아래의 소스 코드처럼 하나의 문자열에 서로 다른 3개의 스타일을 지정할 수도 있다. google 서치 결과 일부 발췌 :... str.setSpan(new StyleSpan(android.graphics.Typeface.ITAL..

충격과 경악의 삽질!!!

먼저 좀 울자... 이런 $&&!^&*@(!*)#$&*^$$*&@ ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠ 하루 종일 삽질을 했어. DB에 추가/삭제된 내용이 ListView에 업데이트 되질 않는거야!!! 처음에는 곧 문제를 수정할 수 있을 거라고 생각했는데, 오늘 하루 종일을 뒤져서 방금 너무 어이없게 문제를 수정했다...흐어어어엉... 내가 구현한 ListView는 Custom Adapter를 사용하며, 이 Custom Adapter는 CursorAdapter를 상속해서 만든 클래스이다. Listview update를 검색하면 당연스럽고도 간단하게 notifyDataSetChanged 사용하면 된다는 말이 나온다. 그래서 아무런 생각이 없이 myAdapter.notifyDataSetChanged() 를 코딩한 후 당연..

finishActivity()는 셀프 종료가 아니다.

아항항항. 오늘 이런 쓸데없는 걸로 1시간 반이나 삽질을 했다. 아항항항항항항...... ( _ _) 옌장. 흔히 현재의 activity를 스스로 강제 종료하기 위해 finish() 함수를 사용한다. 안드로이드를 개발하면서 나는 현재 관련한 책 한권과, 안드로이드 공식 개발자 사이트, google 검색질 이렇게 3가지에 의존한 학습을 하고 있는데,(아, 가끔은 네*버 검색을 시도하기도 한다. 하지만 매번 그 검색에서는 만족할 만한 결과를 찾지 못하기에...) startActivityForResult를 통해 open 한 activity를 종료시킬 때에는 finishActivity()를 사용하라기에 그렇게 구현을 해 놓았는데.... Activity가 종료가 안되는 거다. 이건 모다? 하고서 검색질을 해 봐도..

datepicker와 calendar의 month 표시 오류

아무 생각 없이 DatePicker와 Calendar를 사용해서 UI를 구현해 놓았다가, 테스트를 하는 중 이상한 점을 발견했다. 난 분명 DatePicker에서 5월 16일을 선택했는데, 돌아오는 값은 month = 4, date = 16 인 것이다. 즉, 내가 "m_datePicker.getMonth() 월, m_datePicker.getDayOfMonth() 일" 하는 식으로 화면에 선택된 값을 표기 했을 때 '월' 단위가 하나씩 작게 나타난다. 뭐지? month만 zero base로 계산하나? 뭐지? 에러인가? 라고 생각하고 확인해 보니 다음과 같이, 본래 값이 zero base로 계산되어 있는듯 하다. public static final int APRILAdded in API level 1Val..

Dialog와 DialogFragment

Android 개발자 사이트에서 Activity의 reference 에는 Activity에서 Dialog를 제어하는 여러 함수들이 있지만,(showDialog, etc...) 현재 해당 함수들에는 모두 다음과 같은 문구가 설명문의 가장 위쪽에 자리잡고 있다. This method was deprecated in API level X. 그 말인 즉슨 이런 함수가 있긴 했지만 API 레벨 X 이후로는 해당 함수를 사용하지 않기로 했다는 것이다. 부가적인 설명으로, 이제 이러한 함수 대신 DialogFragment와 FragmentManger를 사용해 달라는 말이 붙어 있다. 그럼, 기존에 있던 Progressdialog, Alertdialog 등 역시 더 이상 사용하면 안된다는 뜻인가? 하면 그렇지는 않다...

공용 상수의 사용?

C/C++ 프로젝트의 진행 시 프로그램 전반에 걸쳐 사용해야 할 상수들에 대해서는 기본적으로 하나의 파일에 해당 상수들을 모두 정의하고 include 하는 방식을 사용했다. 맨땅에 안드로이드-(심지어 java도 안 해본 내가 지금 안드로이드를!)-를 하다보니 이것 저것 C/C++에서 사용했던 방식들을 여기에서는 어떻게 적용해야 하는가가 고민이 되곤 한다. 이렇게나 아주 기본적인 내용조차. 일단은 google에서 검색을 해보니 역시나 나와 같은 고민을 가지고 있는 사람들이 있다. 답변에서는 이러한 상수들을 위한 class를 생성할 수도 있지만, 파일 간 coupling을 최대한 줄이도록 필요한 곳에 정의해 주는 것이 맞다는 내용이 보인다. 파일 coupling이 프로그램의 성능에 영향을 주는가?... 까지..

case expressions must be constant expressions 에러

코딩을 진행하던 중 멀쩡한 switch-case 문에서 에러가 발생했다. 코드 : switch(requestCode){ case NEW_ACT: break; case LAST_ACT: default: break; } 에러 : case expressions must be constant expressions 수정을 하려 검색을 해 보니, switch-case 문을 if-else 문으로 변경하여 수정했다는 글들이 보인다. 엥? if-else 문보다 switch-case 문을 쓰고 싶어서 사용한 것인데, 이걸 꼭 수정해야 해? 따라서 다른 방법을 찾아보기로 한다. 에러 문장을 다시 들여다 보자. 해석하자면, case 조건(expression)은 반드시(must) 상수(constant) 여야 한단다. 오, 다시..

Android developer 사이트를 볼 때 주의점 : MUST를 잘 검색하자.

퇴사하기 직전까지의 1년간의 안드로이드 프로젝트에서는 거의 관리 일을 하다보니 소스를 자세히 보거나 코딩할 기회가 많지 않았다. 따라서 새로 내 프로젝트를 만드는 이 시점에서는 안드로이드 소스를 하나하나 뜯어보며 코딩을 하다보니 요즘 글 쓰기에도 코딩 관련 글을 자주 올리게 된다. 공개한 것 보다도 혼자 끄적거리는 것들이 더 많은데, 비공개로 닫아 놓은 게시물들은 주로, 관련 내용을 다 쓰기 너무 벅차서 일부만 올려놓고 혼자 보고 있는 것들이다. 프로젝트를 하나 마친 후에는 안드로이드에 관한 내용을 한 번 싹 정리해봐야겠다고도 생각 중이다. 오늘은 ListActivity를 상속받은 activity를 만들다가 에러 하나를 찾았는데, Your content must have a ListView whose i..

TextAppearance.Medium의 실제 text 사이즈

버튼 생성을 하다가 문득 이 TextAppearance.Medium 스타일이 지정하는 정확한 text 사이즈가 궁금해져서 검색해 봤다. dp로 정해지는지, sp로 정해지는지, 정확한 사이즈를 찾아봐야 정확한 UI 컨트롤이 가능해지는 바. TextAppearance.Medium 이란 스타일은 안드로이드에서 기본적으로 제공하는 스타일 중의 하나라서 안드로이드 소스내의 xml 파일을 열어보면 그 크기를 확인할 수 있다. 알면서도 소스 위치 뒤지는게 싫어서 구글검색을 해봤지만... ㅎㅎ 구글 검색도 해보고, 내 소스를 직접 열어서도 확인해 본 바, 일단 text 사이즈가 sp로 설정되므로, 단말 환경이 달라질 경우 그 크기가 달라질 수 있다는 점을 인지하고 있어야겠다. 소스 상 확인한 바로는 TextAppear..

Bitmap을 파일로 저장하기

디버깅 중 들고 있던 bitmap을 확인 할 일이 있어서 파일로 저장해서 확인했다. 물론 코드 검색은 구글 검색으로. 긍디. 다른 방법은 없나? 바로 볼 수 있는 방법 엄쓰? 귀찮고로...... File fileCacheItem = new File("/mnt/sdcard/download/1.jpg"); OutputStream out = null; fileCacheItem.createNewFile(); out = new FileOutputStream(fileCacheItem); bitmap.compress(CompressFormat.JPEG, 100, out); 오느을도오~ 씌인나게에~디버깅질 야근지일~ . . . . 하앍.... 빡빡하게 잡힌 플젝 기한이 하루하루 지나는 기분을 아느뇨.... 말 그대로 ..