안드로이드 개발 재개 from 2020 #2 구글플레이 등록

Posted by ironmask84
2021. 1. 23. 18:45 나는 프로그래머다!/Java & Android




2번째 안드로이드 개발 일기다..

가정이 생기고, 아이가 생기고,

이것저것 할일이 늘어나다보니,

뭐 하나 집중하기가 쉽지 않다...


그래도 요즘은 또 코로나 시대로 인해..

집 밖에 나갈일이 적다 보니,

집에서 할일들에 집중을 해야하는데...

아직 끝나지 않은 원하는 부서이동 및 나의 이직 도전?에

올해도 큰 산이 많이 남아있다.


안드로이드 개발의 목적은 앞서 얘기했듯,

IT개발의 감각 살리기 및 가능하다면 광고 수익도...

그리고 지금 업무에 계속 있게 된다면,

앱 하나 좋은거 만들어서 평가 좀 잘 받아보기..

그래야 진급에 가까워지기도 한다.


이번에는 25달러 주고 산 구글플레이 개발자 권한으로

앱을 등록해보기.

그냥 앱 만들어서 뚝딱 올리면 될 줄 알았더니,

생각보다 기입해야하는 항목이 많고,

요즘 코로나로 구글플레이 등록에도 기간이 길어지는

차질이 있는것 같다. 

앱을 업로드한지 거의 2주가 지나서야 활성화가 되었다는 것


   
 25달러 결제를 마친 후 환영메세지! 

  
 뭔가 혜택이 많은 듯 아닌듯 기능이 많나... 

  
 하나하나 익혀봐야할듯.. 그전에 제대로된 앱이나.. ㅎㅎ 



 ironmask 누군가 쓰고 있다... 


 여러분에게 행운을 가져다 주겠다는 로또.. 


 스토어 등록정보 설정에도 사진이 앱 사진이 몇장 필요해서 괜시리 번거로웠음.. 



 앱 테스트를 자동으로 해주겠다는 건지.. 아직은 기능이 없기에  



 컨텐츠 등급도 설정하고~~ 






 출시 시작을 해보자고!~ 


 전반적인 앱 출시 내역을 보여주는 화면들.. 


 전반적인 관리화면을 보여주는 대시보드... 드디어 활성화가 되었따!! 




 

안드로이드 개발 재개 from 2020 #1

Posted by ironmask84
2021. 1. 18. 18:16 나는 프로그래머다!/Java & Android




컴퓨터공학을 전공하면서 Java를 배웠고..

직장인이 되어 휴대폰 SW개발을 하면서.. C로 시작해서..

안드로이드 스마트폰이 유행하면서 다시 Java를 하다가..


이제는 프로그래밍과는 관련없는 업계의 IT직군? 으로 이직을 해있어서..

근 2년 동안은 겨우겨우 노력해서 2019년엔 자바로 프로그램 하나 개발해서

직장 내 자체 공모전에 출품하고..

2020년엔 안드로이드 앱 하나 해보자 해보자 하면서...

감각도 잃고, 의지도 좀 없어서 힘든 가운데 있지만...

11월 부터 계획을 세우고, 내가 좋아하는 도서관에서 책 3권 빌렸다.

항상 이렇게 뭔가 도전할 때는 시작할 때가 많이 설레인다.. ㅎㅎ


그리고 앞으로의 내 커리어와 직장 생활에 있어서

IT는 계속 되어야 하기에..

꾸역꾸역 안드로이드 개발 책을 펼쳐보고 있는 중이다..

이번 앱 개발 목표는 광고까지 심어서 구글플레이에 출품하여, 수익 도전해보기...


3년전만 해도 어느정도는 알았는데.. 아니 5년 전인가 ㅜㅜ

안드로이드 개발에 손땐지 5년쯤은 되었구나;;;

안드로이드 스튜디오가 막 나올 때쯤 이클립스를 계속 사용하다가,

개발 경험이 끊긴 것 같다..


그래서 이제 다시 살포시 해보려고..

안드로이드 스튜디오를 설치하고...

그 때 기억에도 안드로이드 스튜디오가 너무 기능이 많고, 무겁기도 했고..

그런데 익혀두면, 확실히 능률적인 부분도 많긴 할듯...


Do it! 안드로이드 앱 프로그래밍 책이 제법 설명이 잘되어 있는듯 하다.

따라 해보기가 수월함.. ㅎㅎㅎ

그리고, 처음으로 구글플레이에 앱을 등록해보기도 함.

우선, 개발자 등록을 play.google.com/console 에서 25달러 주고 해야함.

평생 앱 업로드가 가능하니까 25달러 쯤이야!





위 과정으로 개발 계정이 만들어지고!

다음 포스팅은,

앱 하나 만들어서 구글플레이에

업로드하는 과정을 보여주겠다!



 

Eclipse 에서 Tap을 Space로 변경하기

Posted by ironmask84
2016. 3. 31. 09:13 나는 프로그래머다!/Java & Android


보통 안드로이드 프로젝트를 개발할 때는 git이란 형상관리도구를 사용합니다.


git에 소스를 반영할 때는 여러 사람이 반영하게 되므로, 보통 Code Rule을 몇 가지 정해놓고 반영하도록 하는데요..

그 중에 에러를 최소화하기 위해 tab 대신에 space로 반영하도록 하는 사항이 있습니다.


코드 가독성을 위해 tab으로 들여쓰기를 보통 사용하는데,

Eclipse에서 이 tab을 누르거나, 자동 들여쓰기 기능을 할 때, Space로 바꿔주는 기능이 있습니다.


아래 2가지 방법 중 1번으로 안될 경우, 2번까지 적용하시면 됩니다.

1. Window -> Preferences -> General -> Editors ->Text Editors ->Insert spaces for tabs 체크, 

                                                           -> Displayed tab width를 4로 설정


2. Window-> Preferences -> Java -> Code Style -> Formatter
  [
Edit] 버튼을 누르고 < Indentation > 텝에서 Tab policy을 Space only 로 변경, Profile 이름을 적당히 변경


 

안드로이드 View 클래스 관련 깨알같은 스펙정보

Posted by ironmask84
2016. 1. 21. 16:47 나는 프로그래머다!/Java & Android


setContentView() : 화면에 무엇을 보여줄지를 결정하는 함수(메소드)

R.layout.activity_main : 화면에 보여줄 대상이 되는 화면의 설정파일(xml)을 지정하는 구문

@string/hell_world  : activity_xxx.xml파일을 작성 할때 values/strings.xml 파일에 id가 hello_world로 설정된 문자열을 지정하는 구문 - android:text="@string/hello_world"

@+id/button01 : activity_xxx.xml파일 안에 있는 태그의 id를 지정하는 방식. 구성요소들을 화면상에 배치하기 위해 layout_below등의 값으로 지정할때 사용

findViewById() : xml에서 정의한 태그의 id를 이용해 코드에서 객체를 참조하는 방식

Intent : 어떤 기능을 실행할 지를 지정하기 위해 사용

Toast : 화면에 잠깐 보였다가 사라지는 풍선 메시지 사용을 위한 객체


 크기를 지정 할때 사용되는 단위들

 단 위

 단위 표현

 설 명

 px

 필셀

 화면 필셀

 dp or dip

 밀도 독립적 픽셀(density independent pixel)

 160dip 화면을 기준으로 한 픽셀

예) 1이치당 160개의 점이 있는 디스플레이 화면에서 1dp는 1px와 같음, 1인치당 320개의 점이 있는 디스플레이 화면에서 1dp는 2px와 같음

 sp or sip

 축척 독립적 픽셀(scale independent pixel)

 가변 글꼴을 기준으로 한 픽셀로 dp와 유사하나 글꼴의 설정에 따라 달라짐

 텍스트 표현시 폰트 크기대로 뷰를 표시할때 일반적으로 사용.

 in

 인치

 1인치로 된 물리적 길이

 mm

 밀리미터

 1밀리미터로 된 물리적 길이

 em

 텍스트 크기

 글꼴과 상관없이 동일한 텍스트 크기 표시

!!! 실제 앱의 화면을 구성 할 때는 'dp'단위를 주로 사용한다고 한다. 안드로이드 단말은 다양한 화면 크기와 해상도를 가지고 있는데 'dp'단위를 사용하면 단말의 해상도에 따라 비율로 픽셀값이 계산되므로 대부분의 화면에서 비슷한 크기로 보이도록 만들 수 있기 때문이다.


Color Format : ARGB( A: Alpha, R: Red, G : Green, B : Blue) - 

Alpha값 : 투명도 조절에 사용  - FF(불투명) -> 88(반투명) -> 00(투명)

textColor 속성 : 텍스트뷰에서 표시하는 문자열의 색상 속성 - ARGB 값으로 지정 - #88FF00FF

textSize 속성 : 텍스트뷰에서 표시하는 문자열의 크기 속성 - 12dp or 12sp or 12px

textStyle 속성 : 텍스트뷰에서 표시하는 문자열의 스타일 속성 - normal, bold, italic, bolditalic

typeFace 속성 : 텍스트뷰에서 표시하는 문자열의 폰트 설정 속성 - normal, sans, serif, monospace

singleLine 속성 : 텍스트뷰에서 표시하는 문자열이 한줄로 표시되도록 설정하는 속성.


배경 이미지 지정 : android:background="@drawable/pretty"

               res/drawable-hdpi 폴더에 pretty.png 파일을 위치시킨다. 폴더명의 hdpi 부분은 기기별 dpi에 따라 다른 해상도의 이미지를 지정해주기 위함인가?


orientation : 뷰를 추가하는 방향을 설정하는 속성 ( LinearLayout에만 적용되는 속성 )

gravity : 뷰의 정렬 방향을 설정하는 속성

padding : 뷰의 여유공간을 설정하는 속성

weight : 뷰가 차지하는 공간의 가중치 값을 설정하는 속성


레이아웃 종류 

@string/hell_world  : activity_xxx.xml파일을 작성 할때 values/strings.xml 파일에 id가 hello_world로 설정된 문자열을 지정하는 구문 - android:text="@string/hello_world"

 레이아웃 이름

 설 명

 LinearLayout

 - 박스(Box) 모델( 특정 방향으로 뷰들을 나열하듯 배치 )

 - 사각형 영역들을 이용해 화면을 구성하는 방법

 - 표준 자바의 BoxLayout과 유사

 RelativeLayout

 - 규칙(Rule) 기반 모델

 - 부모 컨테이너나 다른 뷰와의 상대적 위치를 이용해 화면을 구성하는 방법

 FrameLayout

 - 기본 단위 모델

 - 하나의 뷰만 보여주는 방법

 - 가장 단순하지만 여러 개의 뷰를 추가하는 경우 중첩시킬 수 있으므로 뷰를 중첩한 후 각 뷰를 전환하여 보여주는 방식으로 사용할 때 유용함.

 TableLayout

 - 격자(Grid) 모델

 - 격자 모양의 배열을 이용하여 화면을 구성하는 방법

 - HTML에서 많이 사용하는 정렬 방식과 유사하여 실용적임

 ScrollView

 - 스크롤이 가능한 컨테이너

 - 뷰 또는 뷰그룹이 들어갈 수 있으며 화면 영역을 넘어갈 때 스크롤 기능 제공

 



앱의 실행시 보여지는 첫번째 화면을 바꾸려면 아래의 AndroidManifest.xml 파일에서 볼드폰트로 표시된 부분을 타겟 액티비티 이름으로 변경해주면 된다.

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".MainActivity"?
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name=".NewActivity"></activity>
        <activity android:name=".LinearLayoutActivity"></activity>
        <activity android:name=".SampleLayoutCodeActivity"></activity>
        <activity android:name=".RelativeLayoutActivity"></activity>
    </application>


layout_width, layout_height 속성값

match_parent : 부모컨테이너와 같은 크기로 보이기(여유공간 모두 사용),  프로요(2.2) 버전 이전에는 fill_parent로 사용되었음.

wrap_content : 뷰에 표시할 내용물의 크기에 따라 뷰의 크기가 결정됨.

수치값 : dp등의 수치값으로 지정할 수 있음.


layout_gravity : 부모 컨테이너의 공간에서 뷰가 표시될 위치를 지정할 때 사용되는 속성.

gravity : 뷰가 표현해야 할 내용을 뷰의 공간 내에서의 정렬을 설정하는 속성.

gravity 속성값들

 정렬 속성값

 설 명

 top

 위쪽 끝에 배치

 bottom

 아래쪽 끝에 배치

 left

 왼쪽 끝에 배치

 right

 오른쪽 끝에 배치

 center_vertical

 수직방향의 중앙에 배치

 center_horizontal

 수평방향의 중앙에 배치

 fill_vertical

 수직 방향으로 여유공간만큼 확대하여 채우기

 fill_horizontal

 수평 방향으로 여유공간만큼 확대하여 채우기

 center

 수직/수평 방향의 중앙에 배치

 fill

 수직,수평 방향의 여유공간만큼 확대

 clip_vertical

 - 대상 객체의 상하 길이가 여유공간보다 클 경우에 남는 부분을 잘라내기

 - top|clip_vertical로 설정한 경우 아래쪽에 남는 부분 잘라내기

 - bottom|clip_vertical 로 설정한 경우 위쪽에 남는 부분을 잘라내기

 - center_vertical|clip_vertical 로 설정한 경우 위쪽과 아래쪽에 남는 부분 잘라내기

 clip_horizontal

 - 대상 객체의 좌우 길이가 여유 공간보다 클 경우에 남는 부분을 잘라내기

 - right|clip_horizontal 로 설정한 경우 왼쪽에 남는 부분 잘라내기

 - left|clip_horizontal 로 설정한 경우 오른쪽에 남는 부분 잘라내기

 - center_horizontal|clip_horizontal 로 설정한 경우 왼쪽과 오른쪽에 남는 부분 잘라내기

 



baselineAligned : layout_gravity나 gravity 속성만으로 정렬에 어려움이 있을 경우를 위해 지원되는 속성이며 레이아웃에 추가되는 뷰들의 텍스트들의 아랫줄 맞추기 한다.

                         android:baselineAligned="true"


상대 레이아웃에서 부모 컨테이너와의 상대적 위치를 이용해 뷰를 배치할 수 있는 속성들 

 속성

 설명

 layout_alignParentTop

 부모 컨테이너의 위쪽과 뷰의 위쪽을 맞춤

 layout_alignParentBottom

 부모 컨테이너의 아래쪽과 뷰의 아래쪽을 맞춤

 layout_alignParentLeft

 부모 컨테이너의 왼쪽 끝과 뷰의 왼쪽 끝을 맞춤

 layout_alignParentRight

 부모 컨테이너의 오른쪽 끝과 뷰의 오른쪽 끝을 맞춤

 layout_centerHorizontal

 부모 컨테이너의 수평 방향 중앙에 배치함

 layout_centerVertical

 부모 컨테이너의 수직 방향 중앙에 배치함

 layout_centerInParent

 부모 컨테이너의 수평과 수직 방향 중앙에 배치함

 


상대 레이아웃에서 다른 뷰와의 상대적 위치를 이용하는 속성들

 속성

 설명

 layout_above

 지정한 뷰의 위쪽에 배치함

 layout_below

 지정한 뷰의 아래쪽에 배치함

 layout_toLeftOf

 지정한 뷰의 왼쪽에 배치함

 layout_toRightOf

 지정한 뷰의 오른쪽에 배치함

 layout_alignTop

 지정한 뷰의 위쪽과 맞춤

 layout_alignBottom

 지정한 뷰의 아래쪽과 맞춤

 layout_alignLeft

 지정한 뷰의 왼쪽과 맞춤

 layout_alignRight

 지정한 뷰의 오른쪽과 맞춤

 layout_alignBaseline

 지정한 뷰와 내용물의 아래쪽 기준선(baseline)을 맞춤 

 

EditText InputType 속성값들 

 속성 값 EditText에 입력 가능한 값  설명 
 none  모든 문자, 모든 기호 ,숫자  다른 톡징이 없는 기본 EditText. 입력 폼안에 줄 바꿈이 가능하다.
 text  none과 같으나 줄바꿈이 불가능.
 textCapCharacters  모든 입력된 영문이 대문자로 입력이 된다.
 textCapWords  단어의 첫번째 영문이 대문자로 입력된다.
 textCapSentences  문장의 첫번째 영문이 대문자로 입력.
 textAutoCorrect  입력된 단어를 올바른 단어로 수정할 수 있다.
 textAutoComplete  단어를 입력중에 완성된 단어를 표시 할 수 있다. 
 textMultiLine  입력 폼에 줄 바꿈이 가능하나 따로 설정하지 않으면 단일 줄의 텍스트로 제한됨.
 textImeMultiLine  여러줄의 텍스트 입력가능. 키보드에 줄바꿈 키가 표시됨.
 textNoSuggestions  입력할때 사전에 등록되어있는 어떤 단어도 표시하지 않는다.
 textUri  URI를 입력.
 textEmailAddress  이메일 주소를 입력.
 textEmailSubject  이메일의 제목을 입력.
 textShortMessage  짧은 메시지를 입력.
 textLongMessage  긴 메시지를 입력.
 textPersonName  사람 이름을 입력.
 textPostalAddress  주소의 우편번호를 입력.
 textPassword  비밀번호를 입력. 입력된 문자는 (*)로 표시.
 textVisiblePassword  비밀번호를 입력. 입력된 문자가 보인다.
 textWebEditText  텍스트를 입력. 웹 양식으로 제공된다.
 textFilter  다른 텍스트를 필터링 하기 위한 문자를 입력.
 textPhonetic  발음되는 발음문자를 입력.
 textWebEmailAddress  이메일 주소를 입력. 웹 양식으로 제공.
 textWebPassword  비밀번호를 입력. 웹 양식으로 제공.
 number  숫자  숫자를 입력 받는다.
 numberSigned  숫자  부호가 있는 숫자를 입력.
 numberDecimal  .(점) 기호, 숫자  소숫점이 있는 소수를 입력 받는다.
 numberPassword  숫자  숫자로 된 패스워드를 입력.
 phone  - 기호, 숫자  전화번호를 입력 받는다.
 datetime  -, : 기호, 숫자  날짜와 시간을 입력. 날짜는 -, 시간은 :로 구분.
 date  - 기호, 숫자  날짜를 입력.
 time  : 기호, 숫자   시간을 입력.



ImageVew의 Scaltype 속성

1. matrix(원본 그대로)
2. center(가운데 정렬)
3. centerCrop(비율을 유지하며 가운데를 중심으로 자른다.)
4. centerInside(비율을 유지하며 줄어듬)
5. fitStart(왼쪽 위 정렬/ 비율유지)
6. fitCenter(centerInside와 동일)
7. fitEnd(왼쪽 아래 정렬 / 비율유지)
8. fitXY(늘이기 ImageView를 비율에 상관없이 다 채웁니다.)

속성값 java 설명
matrix setScaleType(ImageView.ScaleType.MATRIX) 원본 크기 그대로 보여줌 (왼쪽 상단 정렬)
Center setScaleType(ImageView.ScaleType.CENTER) 원본 크기 그대로 보여줌 (가운데정렬)
centerCrop setScaleType(ImageView.ScaleType.CENTER_CROP) View 영역에 공백이 있으면 채워서 보여줌(비율유지)
centerInside setScaleType(ImageView.ScaleType.CENTER_INSIDE) View 영역을 벗어나면 맞춰서 보여줌(비율유지)
fitStart setScaleType(ImageView.ScaleType.FIT_START) View 영역에 맞게 보여줌 (왼쪽상단 정렬비율유지)
fitCenter setScaleType(ImageView.ScaleType.FIT_CENTER) View 영역에 맞게 보여줌 (가운데정렬비율유지)
fitEnd setScaleType(ImageView.ScaleType.FIT_END) View 영역에 맞게 보여줌 (왼쪽하단 정렬비율유지)
fitXY setScaleType(ImageView.ScaleType.FIT_XY) View 영역을 가득 채워서 보여줌(비율유지 안함)


TextView & EditText 기능들

EditText 의 selectAllOnFocus 속성 : 아래와 같이 이 값을 true로 설정하면 포커스를 받을때 문자열 전체가 선택된다.

                                 android:selectAllOnFocus="true"

EditText 의 cursorVisible 속성 : 이 속성 값을 false로 설정하면 커서가 보이지 않게 된다.

getSelectionStart() : 선택된 문자열의 시작 위치 얻기

getSelectionEnd() : 선택된 문자열의 끝 위치 얻기

setSelection() : 문자열중에서 선택영역을 지정하기

extendSelection() : 선택영역 확장하기

selectAll() : 전체 문자열 선택하기


자동링크 : autoLink - 이 속성은 문자열에 들어 있는 링크 정보를 자동으로 찾아 링크 색상으로 표시하고 클릭하면 필요한 기능을 수행하도록 한다.

                              이메일, 전화번호, 웹링크등..


줄 간격 조정

lineSpacingMultiplier 속성 : 줄 간격을 배수로 설정 - 1.0보다 작으면 기본 설정값보다 더 좁게 보인다.

lineSpacingExtra 속성 : 여유값으로 설정 - 줄 간격 설정에 주로 사용되며 빼곡한 문자열의 가독성을 높이기 위한 것이다.


대소문자 표시

capitalize 속성 : 대문자나 소문자로 바꾸어 표시하는 기능이며, characters, words, sentences 값을 사용 할 수 있고 이는 1문자, 단어, 문장 단위로

                       맨 앞 글자를 대문자로 표시해 준다.


줄임 표

- TextView의 텍스트가 한줄로 되어 있는데 범위를 넘어가는 경우에 뒷부분은 '...'로 표시된다.

ellipsize 속성 : 범위를 넘어가는 텍스트에 대해 어디를 잘라서 표시할 것인지 설정하는 속성이다.

                 default 값 : none - 뒷부분을 자른다.

                 start, middle, end : 각각 앞부분, 중간부분, 뒷부분을 잘라서 보여준다.

singleLine 속성 : 텍스트 뷰를 한줄로 표시한다.


힌트 표시

hint 속성 : EditText에 어떤 내용을 입력하라고 안내문구를 표시하고자 할때 사용한다. 입력값이 없을때만 표시된다.

textColorHint 속성 : hint 문구의 색상을 지정한다.


편집 제한

editable 속성 : EditText에 입력되어 있는 문자열을 편집하지 못하게 하고 싶다면 이 속성값을 false로 한다. 기본값은 true.


EditText의 입력 문자열 변경 처리

getText() : 입렫된 문자열을 얻기 위해 Editable 객체를 얻는다. toString()메소드로 일반 String타입의 문자열을 얻을수 있다.

TextChangedListener() : 입력 될때마다 문자열을 확인하고 싶을때 사용한다.

addTextChangedListener() : 텍스트가 변경될 때마다 발생하는 이벤트를 처리할 수 있는 TextWatcher객체를 설정 할 수 있다.

TextWatcher 인터페이스의 메소스들

      public void beforeTextChanged(CharSequence s, int start, int count, int after)

      public void afterTextChanged(Editable s)

      public void onTextChanged(CharSequence s, int start, int before, int count)


출처 : http://blog.naver.com/dalmagru?Redirect=Log&logNo=220257843965

 

App 위젯 만들기 (in Eclipse)

Posted by ironmask84
2016. 1. 14. 16:15 나는 프로그래머다!/Java & Android


< 개발 환경 >  
   작성일 : 2016.01.14
   OS 설치 버전 : Windows7 32bit 
   SDK 설치 버전 : 안드로이드 SDK 4.4.2 (KitKat) / API LELVEL : 19 
   Java 설치 버전 : JDK 1.8.0_45 / JRE7 
   이클립스 설치 버전 : Mars
   테스트단말 : LG G2 4.4.2 (KitKat)   

 < 프로젝트 적용 > 
   API LEVEL : 19  
   minSdkVersion : 19 
   targetSdkVersion : 지정 안함 (지정 안하면 min = target)    
   Java Compiler Level : 1.8  
   Text file encoding : 
UTF-8


오랜만에 다시 안드로이드 개발이 시작되었습니다..

Home App을 건드리다가 이제는 위젯을 만들어야 하는데,

간단한 위젯이어서 큰 부담은 없었지만, 처음 만들어 보는 것이여서..

역시 첨 접근이 힘든법이죠. ㅎㅎㅎ


2014년에 사용했던, Eclipse + ADT 버젼을 그대로 사용하려 했는데,

Ant를 이용한 빌드환경 세팅이 잘 안되서...
(정확한 원인은 모르겠으나, 결과적으론 Eclipse 버젼 교체(Juno -> Mars) 후 정상동작)
Eclipse만 Mars 버젼으로 사용하고, and-sdk 세트를 적용(Preferences -> Android ->  SDK Location)

정말 Eclipse가 갈수록 발전하는 것 같네요.

project 생성 시, 기본 세팅을 해주는 것들이 많은데 위젯도 예전부터 있었겠지만,
Activity와 마찬가지로  기본적인 override 함수들 정의 및 기본 layout, strings 까지 생성시켜줍니다.

new-> Others -> Android -> Android Object 로 들어가서 App Widget 선택!


위 메뉴 대로 직접 생성시켜보면,

위젯만드는법을 검색해서 찾아보는 것보다 훨씬 직관적으로 이해하게 되더군요...

역시 여러번 보는 것보다 1번 직접 해보는 것이 효과적입니다. ㅋㅋ

간략히 정리하면, 아래 상자에 있는 것들이 생성됩니다.

1. AndroidManifest.xml -> receiver로 추가


2. res/layout/widget.xml 추가 (위젯 구성 UI Object)


3. res/xml/widget_info.xml 추가 (위젯 사이즈 및 update 주기 설정)


4. Widget Class 생성 

--> extends AppWidgetProvider, onUpdate(), onEnabled(), onDisabled(),

updateAppWidget(Context context, AppWidgetManager appWidgetManager, 

int appWidgetId) 을 기본으로 구성 

    
여기서, onUpdate() 가 인자로 AppWidgetManager appWidgetManager, int[] appWidgetIds 를 

받아오는 이유는, 기본적으로 App위젯은 appWidgetManager 에서 관리되며 이 위젯을 복수로 사용할 경우, 

appWidgetIds[] 를 통해 인덱스가 관리되므로, 각각의 위젯 UI를 Update해주기 위함이다..
onUpdate()는 명시적으로 호출해도 되고, 위에서 설명한 3번 
widget_info.xml에서 

주기 설정이 가능하다.


5. res/value/strings.xml 에 기본 추가되는 TextView에 넣을 string 하나 추가



* Ant : http://blog.naver.com/tommybee/220312166870  참고

* 더욱 자세한 위젯 설명 : http://arabiannight.tistory.com/239 참고