화면 유지 : 
PowerManager.WakeLock



WIFI 유지 : WifiLock

WifiManager wManager = (WifiManager)mCtx.getSystemService(Context.WIFI_SERVICE);
WifiLock wLock = wManager.createWifiLock("HandsWIFILock");
wLock.acquire();

//doing something

wLock.release();
< 계속 업데이트 합니다. 질문 환영 >
10-06-18 초기 문서
10-08-28 팁 몇개 추가
10-11-30 팁 하나 추가

- Listview


말그대로 List이다. 한 개 이상의 항목을 담아 뿌려주는 것을 기본으로 한다.
ListView는 다소 복잡한 Control이나 빈번히 사용하게 될 Widget이다.
ListView의 보이는 영역은 Scrollbar, 각 Row Item들, Selector (구분자? seperator? ), Divisor 로 이루어진다.

Scrollbar
위 그림에서는 Gallery와 Grid에 걸쳐있는 회색 계통의 긴 막대를 말한다.
Scrollbar는 ScrollView를 참조하면 될 것 같다.

RowItem
각각의 Row에 저장하는 정보들을 표현한다. 여기에 저장할 수 있는 정보는 매우 다양할 수 있기 때문에 다양한 Adaptor 형태로 ListView에 제공된다.
가장 기본 적인 것은 ArrayAdaptor이고, Database를 위해 CursorAdaptor도 제공한다.
사용자가 직접 재정의해서 다양한 정보들을 넣을 수 있다.

android.R.layout.simple_list_item_1
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2006 The Android Open Source Project

     Licensed under the Apache License, Version 2.0 (the "License");
     you may not use this file except in compliance with the License.
     You may obtain a copy of the License at
 
          http://www.apache.org/licenses/LICENSE-2.0
 
     Unless required by applicable law or agreed to in writing, software
     distributed under the License is distributed on an "AS IS" BASIS,
     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     See the License for the specific language governing permissions and
     limitations under the License.
-->

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/text1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceLarge"
    android:gravity="center_vertical"
    android:paddingLeft="6dip"
    android:minHeight="?android:attr/listPreferredItemHeight"
/>

Selector
Selector는 위 그림에서 Grid와 같이 사용자가 선택된 것을 알려주는 역할을 수행한다. 기본은 노란색 배경이라 너무 눈에 튀기 때문에 적당히 자신만의 Selector를 쓰는게 좋다.

Divisor
Divisor는 각 RowItem을 구분하는 역할을 하는 선을 말한다.

SectionIndexer, AlphabetIndexer
http://www.androidpub.com/97392
 

1) 만드는 법
   -
2) Adaptor 정리

3) style 바꾸는 법
   - selector 바꾸는 법
     selector를 바꾸는 법은 쉽다. 함수를 사용할 경우,
     mListView.setSelector(myDrawable);
   - background, foregound 바꾸는 법


4)

5) TIP
 a] 배경이 있는 Listview를 스크롤시, 회색이 나오는 문제
   android:cacheColorHint="#00000000" 을 추가
 b) 만약, listview의 아이템을 선택할 때 한 줄이 선택되지 않고 일부만 선택된다면 (textview가 있는 영역만 선택된다면)
   ListView의 layout_width="fill_parent" 속성을 확인할 것
 c) Custom ListView에서 Selector가 안보인다면,
   Selector의 기본 옵션은 Row 아래 깔리도록 되어 있는 것 같다. ListView 속성  
   android:drawSelectorOnTop="true"을 준다.
 d) ListView 아래 라인(Divisor) 제거하기
   listview.setDivisor(null);
 e) ListView 위아래 흐림 효과 막기
   android:fadingEdge="none"

6) 문제 해결
 setOnItemClickListener 가 동작하지 않을 때
 => 커스텀 뷰를 만들어서 쓸 경우, setOnItemClickListener가 동작하지 않는 경우가 발생했다. 문제는 커스텀 뷰에서 이벤트를 소비하고 있기 때문인데, 소비하는 부분을 찾아 제거해주는 것이 필요하다. 나의 경우, TextView와 marque 때문에 이런 문제가 발생했다. 3시간 소비 -_-;

* ListView 안의 custom textview에서 Ellipsize 쓰려면
    android:scrollHorizontally="true"
    http://stackoverflow.com/questions/1424276/ellipsize-not-working-for-textview-inside-custom-listview

참고 자료
http://android-developers.blogspot.com/2009/01/why-is-my-list-black-android.html : 배경이 검게 나오는 것과 관련한 자료
http://blog.naver.com/PostView.nhn?blogId=kippee&logNo=130076565197&viewDate=&currentPage=1&listtype=0&userTopListOpen=false&userTopListCount=5&userTopListManageOpen=false&userTopListCurrentPage=undefined
http://www.androidguys.com
http://comma.byus.net/blog/2younow/trackback/6
http://stackoverflow.com/questions/3535074/getview-vs-bindview-in-a-custom-cursoradapter

적혀있는 말은 간단히 말해
cursoradaptor를 custom으로 사용하면 getview에 해당하는 것이
newView와 bindView로 구현되므로 getView를 통해 구현할 필요 없다는 내용입니다.

'<안드로이드>개발 > 안드로이드/App' 카테고리의 다른 글

안드로이드의 Lock  (0) 2010.09.10
[Widget] List View  (0) 2010.08.28
CursorAdaptor에서 getView?  (0) 2010.08.28
TextSwitcher 기본  (0) 2010.07.19
안드로이드 마켓에 개발자 등록  (0) 2010.07.16
[팁] 안드로이드 SDK로 DB 내용 확인하기  (0) 2010.07.08
TextSwitcher 는 Text를 변경하는데 사용하는 View입니다.
Text를 변경할 때 효과를 줄 수 있다는 장점이 있습니다.

다음 예제는 Apidemos에 나온 것과 동일한 내용을 다룹니다.
다른 점은 ApiDemos는 버튼에 반응하지만, 이 예제는 TextSwitcher를 한번 클릭할 때 반응합니다.

1. 기본 프로젝트를 생성합니다.
2. main.xml의 내용을 아래와 같이 수정합니다.

3. 소스 파일을 열고 아래와 같이 코딩합니다.

timeSwitcher.setFactory(this); 라는 문장은 매우 중요합니다.
이게 없으면  java.lang.NullPointerException 가 발생합니다.
setFactory를 추가하면 ViewFactory를 구현할 것을 요구합니다.

여기에 추가하는 View를 이용해 TextView를 생성하는 것 같습니다.

ps> 이런게 있는 줄 알았다면 좀 더 쉽게 만들었을 것을 이라고 뒤늦게 후회해보고 있습니다.
이클립스에서 빌드 중간에 취소를 하거나 리소스 에러가 생겨 취소되었을 때 발생할 수 있다.

이런 경우, 이클립스의 메뉴 중프로젝트> Clean을 선택하여 CLEAN해주면 된다.

전체 프로젝트를 클린하면 시간이 오래걸릴 수 있다. 이런 경우 에러가 난 프로젝트만 선택한다.



허접한 글이지만, 도움이 되신다면 아래 손가락 꾹 눌러주세요.
  1. 온치 2010.12.03 05:26 신고

    열심히 헛발질 했었는데 뭔가 아무것도 아닌 에러였네요ㅠㅠ 감사합니다!

  2. 이원형 2012.09.28 16:21 신고

    감사합니다.

LogCat에서 로그가 종종 안보일 때가 있다.

이런 경우 두가지 가능성이 있는 것 같다.

1. target이 선택되어 있지 않거나 잘못 선택되어 있을 때
이 경우, 타겟을 선택해주면 된다. Perspective가 Java인 경우 타겟을 선택할 수 없으므로 DDMS로 들어가 타겟을 선택해준다.

2. LogCat 버그로 추정되는 상황으로 지나치게 많은 로그가 올라갔을 경우 몇개의 옛날 로그만 보여주는 경우가 발생
LogCat에 보면 Clear 버튼이 있다. Clear 버튼을 클릭하여 준다.


허접한 글이지만, 도움이 되신다면 아래 손가락 꾹 눌러주세요.
드디어 안드로이드 마켓에 개발자 등록을 했다.

전화번호 입력에 한번 삽질을 하고

Billing Address가 뭔지 몰라 또 삽질을 했다.

전화 번호 입력할때 +82-{제일 앞 0을 뺀 전화번호}를 해야 한다.
예를 들어 +82-2-1234-5678

빌링 어드레스는 뭔지 몰라 그냥 집주소 입력

결제 대기 상태인듯 한데 기다리고 있다.

내일 간단한 테스트 앱을 하나 등록해봐야겠다.

App이 아니라, 안드로이드를 빌드해보자.
기본 내용은 아래 글 참조
http://source.android.com/source/download.html
http://rookiecj.tistory.com/193

이 내용은 JDK 1.5를 다운로드 받는 법을 포함하고 있음

우분투 32비트 리눅스 기준으로 설명함.
(root로 진행하고 있으나, 설명은 원본대로 sudo를 붙여서 진행)

1. 관련 Utility를 다운로드 받는다.
    원래 메뉴얼에서 sun-java5-jdk를 뺐는데 이유는 sun-java6-jdk로 업버전되면서 sun-java5-jdk가 없어졌다.
$ sudo apt-get install git-core gnupg flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl libncurses5-dev zlib1g-dev
   필요하면 발그린드도 설치
$ sudo apt-get install valgrind

2. jdk 1.5 다운로드
    http://java.sun.com/javase/downloads/index_jdk5.jsp
    중간쯤 내려보면 JDK 5.0 Update 22 라는 글자 옆에 Download를 누른다.
    뭔가 정보를 입력하라는 창이 보일 것이다.
    적당히 입력해주고 submit하면 적었던 e-mail로 jdk1.5를 받을 수 있는 URL이 전송된다.
    이메일을 이용해 해당 URL에 접속하면 jdk 1.5를 받을 수 있다.
    이 때, jdk 1.5 파일이 .bin으로 끝나는 파일이다.
    이 파일에 실행권한을 주고 실행하면 압축이 풀린다.
    $ chmod +x jdk-1_5_0_22-linux-i586.bin
    압축이 풀린 파일을 적당한 위치에 넣는다.
    $ mv jdk1.5.0_22 /usr/
    아래 환경변수를 설정한다. 나는 그냥 ~/.bashrc에 정보를 넣어버렸다.
export JAVA_HOME=/usr/jdk1.5.0_22
export PATH=~/bin:$JAVA_HOME/bin:$PATH
export ANDROID_JAVA_HOME=$JAVA_HOME


3. source를 다운로드 받는다.
    아래 색칠한 명령들을 실행

  1. Make sure you have a~/bindirectory in your home directory, and check to be sure that this bin directory is in your path:
    $ cd ~
    $ mkdir bin
    $ echo $PATH
  2. Download thereposcript and make sure it is executable:
    $ curl http://android.git.kernel.org/repo > ~/bin/repo
    $ chmod a+x ~/bin/repo
  3. 작업 폴더 생성
  4. $ mkdir mydroid
    $ cd mydroid
  5. 작업 폴더 생성(다소 오래 걸린다.)
  6. $ repo init -u git://android.git.kernel.org/platform/manifest.git
    $ repo sync
 
4. 빌드한다.
    make
(또는 make sdk)

JDK 어쩌구 에러나면 위에 지정한 경로가 맞는지 확인해봐야 한다.

허접한 글이지만, 도움이 되셨다면 아래 손가락 꾹 눌러주세요.
마켓 : 티스토어
가격 : 3900원
(현재 할인 판매중이라고 적혀있다. 정가는 4500원)

가장 큰 장점은 라디오처럼 그냥 출근길/등교길에 틀어놓고 들을 수 있다는 점과 들을 때 자기가 원하는 순서로 편집할 수 있다는 것이 장점이다.
예컨데 영어문장, 한글 문장, 영어문장, 지문, 지문, 영어문장, 해석과 같이 듣고 싶은 형태로 문장을 들을 수 있다.
.. 정말 많이 팔리면 좋겠다.








아래는 TSTORE에 적혀있는 설명
■ 특징:
1) EBS의 베테랑 스피킹 강사 이현석 선생님이 추천하는 주옥 같은 영어 회화 표현들
2) 표현 공부 → 예문 공부 → 이현석 선생님 해설로 이어지는 알찬 구성
- 표현 (영어): 영어 회화 표현
- 표현 (한글): 영어 회화 표현의 한글 번역
- 대화: 영어 회화 표현을 사용한 대화 예문
- 해설: 이현석 선생님의 베테랑 해설
3) 반복 순서 및 횟수를 내가 직접 디자인하는 나만의 맞춤 영어 회화 공부법
4) 대기모드에서도 재생이 멈추지 않아 듣고만 있어도 공부할 수 있는 라디오 방송 같은 어플리케이션
5) 전국 지하철 및 버스 안내방송 목소리의 주인공 Jennifer Clyde 선생님이 들려주는 편한 목소리
6) 최고 실력의 컨텐츠 제작자, 기획자, 개발자, 디자이너가 함께하는PalmStudy(http://www.palmstudy.com)의 첫 기대작

허접한 글이지만, 도움이 되셨다면 아래 손가락 꾹 눌러주세요.

+ Recent posts

티스토리 툴바