'안드로이드/개발 팁'에 해당되는 글 8건

  1. Use the Custom Component
  2. 안드로이드 퍼미션 종류
  3. 이클립스 단축키 모음
  4. 안드로이드에서 크기에 사용가능한 단위
  5. 웹에 존재하는 파일 Stream을 이용해서 다운로드 하기 (1)
  6. MIME Type
  7. 안드로이드 액티비티 생명주기
  8. 외국 안드로이드 참고/커뮤니티 사이트 (1)

Use the Custom Component

Use the Custom Component


We now have our custom component, but how can we use it? In the NotePad example, the custom component is used directly from the declarative layout, so take a look atnote_editor.xml in the res/layout folder.

<view
 
class="com.android.notepad.NoteEditor$MyEditText"
 
id="@+id/note"
 
android:layout_width="fill_parent"
 
android:layout_height="fill_parent"
 
android:background="@android:drawable/empty"
 
android:padding="10dip"
 
android:scrollbars="vertical"
 
android:fadingEdge="vertical" />
  • The custom component is created as a generic view in the XML, and the class is specified using the full package. Note also that the inner class we defined is referenced using the NoteEditor$MyEditText notation which is a standard way to refer to inner classes in the Java programming language.

    If your custom View component is not defined as an inner class, then you can, alternatively, declare the View component with the XML element name, and exclude the classattribute. For example:

    <com.android.notepad.MyEditText
     
    id="@+id/note"
      ...
    />

    Notice that the MyEditText class is now a separate class file. When the class is nested in the NoteEditor class, this technique will not work.

  • The other attributes and parameters in the definition are the ones passed into the custom component constructor, and then passed through to the EditText constructor, so they are the same parameters that you would use for an EditText view. Note that it is possible to add your own parameters as well, and we will touch on this again below.


저작자 표시 비영리 동일 조건 변경 허락
신고
ACCESS_CHECKIN_PROPERTIES                 체크인데이터베이스의_속성테이블로_액세스                        
ACCESS_COARSE_LOCATION                     코스_로케이션_액세스_(Cell-ID/WiFi)                             
ACCESS_FINE_LOCATION                           파인로케이션_액세스(GPS)                                        
ACCESS_LOCATION_EXTRA_COMMANDS    로케이션_옵션_커맨드_액세스                                     
ACCESS_MOCK_LOCATION                        목_로케이션_프로바이더_생성_(테스트용)                          
ACCESS_NETWORK_STATE                        네트워크_상태_접근                                              
ACCESS_SURFACE_FLINGER                      서피스_플링거_접근                                              
ACCESS_WIFI_STATE                                 WiFi상태_접근                                                   
ADD_SYSTEM_SERVICE                             시스템서비스_추가                                               
BATTERY_STATS                                      배터리_상태                                                     
BLUETOOTH                                             블루투스                                                        
BLUETOOTH_ADMIN                                  블루투스_어드민                                                 
BRICK                                                       디바이스_실효성_지정                                            
BROADCAST_PACKAGE_REMOVED             제거된_패키지에_대한_notification_브로드캐스트                  
BROADCAST_SMS                                     SMS에_대한_브로드캐스트                                         
BROADCAST_STICKY                                 인텐트_브로드캐스트                                             
CALL_PHONE                                            통화                                                            
CALL_PRIVILEGED                                     통화(긴급전화_포함)                                             
CAMERA                                                   카메라                                                          
CHANGE_COMPONENT_ENABLED_STATE   컴포넌트의_실효성_변경                                          
CHANGE_CONFIGURATION                         컨피그_변경                                                     
CHANGE_NETWORK_STATE                       통신상태_변경                                                   
CHANGE_WIFI_STATE                                WiFi상태_변경                                                   
CLEAR_APP_CACHE                                  어플리케이션_캐시_클리어                                        
CLEAR_APP_USER_DATA                           어플리케이션의_유저데이터_클리어                                
CONTROL_LOCATION_UPDATES                위치정보_갱신                                                   
DELETE_CACHE_FILES                              캐시파일_제거                                                   
DELETE_PACKAGES                                  패키지_제거                                                     
DEVICE_POWER                                        전원상태에_대한_로우레벨_접근                                   
DIAGNOSTIC                                             진단리소스_읽고쓰기                                             
DISABLE_KEYGUARD                                 키_가드_끄기_DUMP_덤?                                          
EXPAND_STATUS_BAR                              상태표시줄_확장                                                 
FACTORY_TEST                                      팩토리_테스트                                                   
FLASHLIGHT                                           플래시라이트                                                    
FORCE_BACK                                         포스백                                                          
GET_ACCOUNTS                                    어카운트_획득                                                   
GET_PACKAGE_SIZE                              패키지_획득                                                     
GET_TASKS                                           태스크_획득                                                     
HARDWARE_TEST                                   하드웨어테스트                                                  
INJECT_EVENTS                                    유저이벤트_키/트랙볼                                            
INSTALL_PACKAGES                              패키지_인스톨                                                   
INTERNAL_SYSTEM_WINDOW                 내부_시스템윈도_활용                                            
INTERNET                                             인터넷                                                          
MANAGE_APP_TOKENS                         어플리케이션_토큰관리                                           
MASTER_CLEAR                                    마스터_클리어                                                   
MODIFY_AUDIO_SETTINGS                     오디오설정_편집                                                 
MODIFY_PHONE_STATE                         전화상태_편집                                                   
MOUNT_UNMOUNT_FILESYSTEMS         파일시스템_편집                                                 
PERSISTENT_ACTIVITY                         액티비티_지속                                                   
PROCESS_OUTGOING_CALLS                전화_발신처리_접근                                              
READ_CALENDAR                                  캘린더_읽어오기                                                 
READ_CONTACTS                                 주소록_읽어오기                                                 
READ_FRAME_BUFFER                          프레임버퍼_읽어오기                                             
READ_INPUT_STATE                             입력상태_읽어오기                                               
READ_LOGS                                         로그_읽어오기                                                   
READ_OWNER_DATA                             owner_data읽어오기                                              
READ_PHONE_STATE                           통화상태_읽어오기_READ_SMS_SMS읽어오기                          
READ_SYNC_SETTINGS                        동기설정_읽어오기                                               
READ_SYNC_STATS                            동기상태_읽어오기                                               
REBOOT                                             reboot                                                          
RECEIVE_BOOT_COMPLETED              boot완료                                                        
RECEIVE_MMS                                   MMS수신                                                         
RECEIVE_SMS                                    SMS수신                                                         
RECEIVE_WAP_PUSH                           WAP수신                                                         
RECORD_AUDIO                                 오디오_수신                                                     
REORDER_TASKS                               태스크_Z오더                                                    
RESTART_PACKAGES                         패키지_리스타트                                                 
SEND_SMS                                        SMS송신                                                         
SET_ACTIVITY_WATCHER                   액티비티_왓쳐지정                                               
SET_ALWAYS_FINISH                          액티비티_전체_종료                                              
SET_ANIMATION_SCALE                    스케일_애니메이션_지정                                          
SET_DEBUG_APP                               디버그어플리케이션_지정                                         
SET_ORIENTATION                            스크린_로테이션지정                                             
SET_PREFERRED_APPLICATIONS       자주_사용하는_어플리케이션_지정                                 
SET_PROCESS_FOREGROUND           포어그라운드_처리지정                                           
SET_PROCESS_LIMIT                        제한처리_지정                                                   
SET_TIME_ZONE                              타임존_지정                                                     
SET_WALLPAPER                             배경화면_지정                                                   
SET_WALLPAPER_HINTS                    배경화면_힌트_지정                                              
SIGNAL_PERSISTENT_PROCESSES    지속처리_시그널_지정                                            
STATUS_BAR                                    상태표시줄_지정                                                 
SUBSCRIBED_FEEDS_READ               서브스트립드_피즈_읽어오기                                      
SUBSCRIBED_FEEDS_WRITE             서브스트립드_피즈_쓰기                                          
SYSTEM_ALERT_WINDOW                알림_윈도우                                                     
VIBRATE                                         진동                                                            
WAKE_LOCK                                    알람                                                            
WRITE_APN_SETTINGS                    APN설정_쓰기                                                    
WRITE_CALENDAR                           캘린더_쓰기                                                     
WRITE_CONTACTS                          주소록_쓰기
WRITE_EXTERNAL_STORAGE           외장SD카드 쓰기
WRITE_GSERVICES                          G서비스_쓰기                                                    
WRITE_OWNER_DATA                       owner_data쓰기                                                  
WRITE_SETTINGS                            설정_쓰기                                                       
WRITE_SMS                                    SMS쓰기                                                         
WRITE_SYNC_SETTINGS                 동기설정_쓰기  
저작자 표시 비영리 동일 조건 변경 허락
신고
Ctrl + Shift + F
자동으로 소스 코드를 정리해 준다.
팀프로젝트시 개인별로 코딩 스타일이 다르다면, 일단 각자 자기 스타일대로 소스를 작성하고
이 단축키를 사용하여 코딩 스타일을 일치시켜주면 좋을 것 같다.


Ctrl + F6
Microsoft Visual Studio의 Ctrl + Tab과 동일하다.
이클립스에서는 Ctrl + Tab으로 열려진 파일간 이동을 할 수는 없고 대신 이 단축키를 사용하면 된다. Ctrl + F6과 동일하고 방향만 반대인 Ctrl + Shift + F6 단축키도 존재한다.
 
 
Ctrl + F7
각종 '보기' 사이를 이동한다. 예를 들어 편집기에서 콘솔창으로 이동하거나 편집기에서
아웃라인으로 이동할 때 사용할 수 있다. 역시 방향만 반대인 Ctrl + Shift + F7 단축키도 존재한다.
 
 
Ctrl + F8
다음 'Perspective'로 이동한다. 역시 방향만 반대인 Ctrl + Shift + F8 단축키도 존재하다.
 
 
Ctrl + L
특정 줄번호로 이동할 때 사용한다.
 
 
Ctrl + F11
저장, 컴파일 및 실행


===== 실행 =====
1. Ctrl + F11 : 바로 전에 실행했던 클래스 실행

 
===== 소스 네비게이션 =====
1. Ctrl + 마우스커서(혹은 F3) : 클래스나 메소드 혹은 멤버를 상세하게 검색하고자 할때
2. Alt + ->, Alt + <- : 이후, 이전
3. Ctrl + o : 해당 소스의 메소드 리스트를 확인하려 할때
4. F4 : 클래스명을 선택하고 누르면 해당 클래스의 Hierarchy 를 볼 수 있다.
 
 
===== 문자열 찾기 =====
1. Ctrl + k : 찾고자 하는 문자열을 블럭으로 설정한 후 키를 누른다.
2. Ctrl + Shift + k : 역으로 찾고자 하는 문자열을 찾아감.
3. Ctrl + j : 입력하면서 찾을 수 있음.
4. Ctrl + Shift + j : 입력하면서 거꾸로 찾아갈 수 있음.
5. Ctrl + f : 기본적으로 찾기

 
===== 소스 편집 =====
1. Ctrl + Space : 입력 보조장치(Content Assistance) 강제 호출 => 입력하는 도중엔 언제라도 강제 호출 가능하다.
2. F2 : 컴파일 에러의 빨간줄에 커서를 갖져다가 이 키를 누르면 에러의 원인에 대한 힌트를 제공한다.
3. Ctrl + l : 원하는 소스 라인으로 이동
   로컬 히스토리 기능을 이용하면 이전에 편집했던 내용으로 변환이 가능하다.
4. Ctrl + Shift + Space : 메소드의 가로안에 커서를 놓고 이 키를 누르면 파라미터 타입 힌트를 볼 수 있다.
5. 한줄 삭제 CTRL + D
6. 파일 닫기 : CTRL+W 
7. 들여쓰기 자동 수정. (3.0 NEW) : CTRL+I 
8. 블록 주석(/*..*/) 추가.(3.0 NEW): CTRL+SHIFT+/ 
  8.1 Ctrl + / 해주면 여러줄이 한꺼번에 주석처리됨. 주석 해제하려면 반대로 하면 됨.
9. 위(아래)줄과 바꾸기 : ALT+UP(DOWN) 
10. 블록 선택하기.  : ALT+SHIFT+방향키 
11. 메소드의 파라메터 목록 보기. : CTRL+SHIFT+SPACE
12. 자동으로 import 하기 : CTRL+SHIFT+O 
13. 열린 파일 모두 닫기 : CTRL + SHIFT + F4
14. 블록 주석 제거 : CTRL+SHIFT+\
15. 전체화면 토글 : CTRL+M 
16. 한줄(블럭) 복사 : Ctrl + Alt + 위(아래) 
17. 다음 annotation(에러, 워닝, 북마크 가능)으로 점프 : Ctrl + , or . 
18. 퀵 픽스 : Ctrl + 1  
19. 메소드 정의부로 이동 : F3
20. 하이어라키 팦업 창 띄우기(인터페이스 구현 클래스간 이동시 편리) : Ctrl + T  
21. 메소드나 필드 이동하기 CTRL + O
저작자 표시 비영리 동일 조건 변경 허락
신고
크기에 사용할 수 있는 단위는 다음과 같다.


표기  단위 의미
px 픽셀 수 사용 중 화면에서의 픽셀 수해상도가 높아지면 픽셀의 물리적인 크기가 줄어든다.
in 인치 사용 중 화면에서의 인치단위의 길이
mm 미리 미터 사용 중 화면에서의 미리 미터 단위의 길이
pt 포인트 수 사용 중 화면에서의 1/72 인치를 1포인트로 하는 길이
dp 해상도 의존하지 않는 픽셀 수 1는 해상도가 160dpi일 때 1픽셀10dp가 160dpi일 때에는 10픽셀, 320dpi일 때에는 20픽셀
sp 폰트 사이즈를 고려한 픽셀 수 사용자가 설정하고 있는 폰트사이즈를 고려한 스케일된 픽셀 수.실제 픽셀 수는 사용 중 화면의 해상도와 폰트 사이즈에 의해 변함



dpi란?

dpi는 Dot Per Inch의 약자로 1인치(2.54cm)당 들어가는 점의 수를 말한다이 값이 클수록 같은 공간 안에 더 많은 점이 있어서 더 선명하다, 150dpi보다 300dpi가 더 선명하다.



크기를 정의하는 파일명은 일반적으로 dimens.xml으로 한다.


<!--?xml version="1.0" encoding="UTF-8"?-->
<resources>
<dimen name="small_size">8sp
<dimen name="large_size">32sp
</resources>

 


정의한 사이즈를 프로그램에서 참조하려면 클래스의 메소드를 사용한다



float dimen = getResources().getDimension(R.dimen.large_size);




정의한 사이즈를 다른 리소스파일에서 참조하려면 “@dimen/”에 정의한 이름을 붙여 지정한다



<TextView ... android:textSize="@dimen/large_size" />


저작자 표시 비영리 동일 조건 변경 허락
신고

String src="http://192.168.1.106/football.3gp"; 
String des="sdcard/temp1357.3gp";
	InputStream in = null; 
	OutputStream out = null; 
	try{
	in = new BufferedInputStream(new URL(src).openStream());   
        out = new BufferedOutputStream(new FileOutputStream(des));  
        int read;
        while(true){
			read = in.read();  
            if(read == -1) break;  
				out.write(read);
            }
            in.close();
            out.close();
            finish();
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			System.out.println("aa");
		} catch (IOException e) {
			// TODO Auto-generated catch block
			System.out.println("bb");
		} finally {
			if (in != null)
            try {
               System.out.println("cc");
               in.close();
            } catch (IOException e) {
				System.out.println("dd");
                // TODO Auto-generated catch block
            }
            if (out != null)
            try {
                out.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
            }
	}

저작자 표시 비영리 동일 조건 변경 허락
신고

MIME Type

MIME-Type Description File Extension
application/acad AutoCAD drawing files dwg
application/clariscad ClarisCAD files ccad
application/dxf DXF (AutoCAD) dxf
application/msaccess Microsoft Access file mdb
application/msword Microsoft Word file doc
application/octet-stream Uninterpreted binary bin
application/pdf PDF (Adobe Acrobat) pdf
application/postscript Postscript, encapsulated Postscript, ai, ps, eps
Adobe Illustrator
application/rtf Rich Text Format file rtf rtf
application/vnd.ms-excel Microsoft Excel file xls
application/vnd.ms-powerpoint Microsoft PowerPoint file ppt
application/x-cdf Channel Definition Format file cdf
application/x-csh C-shell script csh csh
application/x-dvi TeX dvi dvi dvi
application/x-javascript Javascript source file js
application/x-latex LaTeX source file latex
application/x-mif FrameMaker MIF format mif
application/x-msexcel Microsoft Excel file xls
application/x-mspowerpoint Microsoft PowerPoint file ppt
application/x-tcl TCL script tcl
application/x-tex TeX source file tex
application/x-texinfo Texinfo (emacs) texinfo, texi
application/x-troff troff file t, tr, roff t, tr, roff
application/x-troff-man troff with MAN macros man
application/x-troff-me troff with ME macros me
application/x-troff-ms troff with MS macros ms
application/x-wais-source WAIS source file src
application/zip ZIP archive zip
audio/basic Basic audio (usually m-law) au, snd
audio/x-aiff AIFF audio aif, aiff, aifc
audio/x-wav Windows WAVE audio wav
image/gif GIF image gif
image/ief Image Exchange Format file ief
image/jpeg JPEG image jpeg, jpg jpe
image/tiff TIFF image tiff, tif
image/x-cmu-raster CMU Raster image ras
image/x-portable-anymap PBM Anymap image format pnm
image/x-portable-bitmap PBM Bitmap image format pbm
image/x-portable-graymap PBM Graymap image format pgm
image/x-portable-pixmap PBM Pixmap image format ppm
image/x-rgb RGB image format rgb
image/x-xbitmap X Bitmap image xbm
image/x-xpixmap X Pixmap image xpm
image/x-xwindowdump X Windows Dump (xwd) xwd
multipart/x-gzip GNU ZIP archive gzip
multipart/x-zip PKZIP archive zip
text/css Cascading style sheet css
text/html HTML file html, htm
text/plain Plain text txt
text/richtext MIME Rich Text rtx
text/tab-separated- values Text with tab-separated values tsv
text/xml XML document xml
text/x-setext Struct-Enhanced text etx
text/xsl XSL style sheet xsl
video/mpeg MPEG video mpeg, mpg, mpe
video/quicktime QuickTime video qt, mov
video/x-msvideo Microsoft Windows video avi
video/x-sgi-movie SGI movie player format movie


MIME 확장명

파일 확장명 

 application/x-silverlight-app  .xap
 application/manifest  .manifest 
 application/x-ms-application  .application 
 application/x-ms-xbap  .xbap
 application/octet-stream  .deploy
 application/vnd.ms-xpsdocument  .xps 
 application/xaml+xml  .xaml
 application/vnd.ms-cab-compressed  .cab
 application/vnd.openxmlformats-officedocument.wordprocessingml.document  .docx
 application/vnd.openxmlformats-officedocument.wordprocessingml.document  .docm
 application/vnd.openxmlformats-officedocument.presentationml.presentation  .pptx
 application/vnd.openxmlformats-officedocument.presentationml.presentation  .pptm
 application/vnd.openxmlformats-officedocument.spreadsheetml.sheet  .xlsx
 application/vnd.openxmlformats-officedocument.spreadsheetml.sheet  .xlsm
 application/msaccess  .accdb
 application/x-mspublisher  .pub
 image/svg+xml  .svg
 application/xhtml+xml  .xht
 application/xhtml+xml  .xhtml
저작자 표시 비영리 동일 조건 변경 허락
신고
안드로이드는 코드를 주~욱 작성해서 순차적으로 해석해서 띄우는 시스템이 아니라 화면에 나타내는 여러가지 요소들을 계층적요소로 나누어
이 요소들이 특정 상황에 동작 할 수 있도록 역할이 분배되어 있는 시스템입니다.

이 요소 중의 하나가 액티비티 인데 화면에 보이지는 않지만 앱이 구동되고 실행되며 정지되고 소멸될 때까지의 프레임을 담당하는 요소라고
할 수 있습니다. 이클립스에서는 xxxxx.java 파일에서 생성자 클래스가 액티비티를 상속받았다면 이것이 액티비티가 되는 것이죠.

액티비티의 생명주기를 알아야 하는 이유는 앱을 가동시켜면 앱의 특성에 따라서 구동, 실행, 종료 등의 특정한 상황에서 필요한 작업이 있기마련
인데 이런 구체적인 액티비티의 상황에 따라 특정 콜백 함수가 동작됨으로서 앱이 필요로 하는 작업을 수행할 수 있기 때문입니다.
어떻게 보면 이런 구조를 이해하는  것이 안드로이드 동작원리를 이해하는 것과 마찬가지 입니다.
보통은 자기 자신만이 동작코드를 가지고 자신의 테두리 안에서만 끝나는 작업이 거의 없기 때문이죠.

우선 안드로이드 생명주기 다이어그램을 살펴봅시다.


다이어그램을 보니 한 눈에 생명주기가 눈에 들어 오는 군요.

음.. 너무 자세한 설명은 다음을 기약하기로 하고

지금은 간단히 코드상에서 어떤 식으로 작성하는지 간단히 살펴 봅시다


public class Activity extends ApplicationContext {
     protected void onCreate(Bundle savedInstanceState);
		super.onCreate(savedInstanceState);

     protected void onStart();
		super.onStart();
		
     protected void onRestart();
		super.onRestart();
		
     protected void onResume();
		super.onResume();
		
     protected void onPause();
		super.onPause();
		
     protected void onStop();
		super.onStop();
		
     protected void onDestroy();
		super.onDestroy();
 }

2월 18일에 재수정 들어갑니다.

각 시점에서 호출되는 콜백함수에 대해서 알아봅시다.

  • onCreate : 액티비티가 초기화되면서 생성될때 콜백되는 함수입니다. 중지했다가 재시작 할 때는 이 함수의 매개변수인 Bundle 을 통해서 중지하기 전의 상태가 전달됩니다. 이를 이용해서 화면의 마지막 상태를 저장했다가 앱재시작시에도 이전의 작업이 날아가지 않게 됩니다.

  • onRestart : 어플이 재시작 될 때 호출되는 콜백함수입니다. 액티비티가 foreground(화면전면)에 다시나오는 때에 호출되는 함수입니다. 아직 이 콜백함수를 특별히 활용해 본 적은 없네요.

  • onStart : 액티비티가 유저에게 나타나기 바로 직전에 호출되는 함수 입니다. 블루투스를 이용한 앱개발시에 검색된 기기를 추가하는데에 사용했었던 콜백함수입니다. 보통 onCreate에서 마찰이 일어나거나 미처 하지 못한 작업을 이 콜백함수를 통해서 마무리 할 수 있습니다.

  • onPause : 화면상의 액티비티외에 다른 액티비티가 실행되는 때에 호출되는 함수입니다. 액티비티의 사실상의 생명주기 마지막에 해당되며 액티비티가 사용자와 대면하게 되는 마지막에 호출되는 함수입니다.

  • onStop : 액티비티가 사용자에게 보이지 않게 될 때 호출되는 함수입니다.

  • onDestroy : 액티비티가 파괴(Destory) 될 때 호출되는 함수입니다. 이 함수를 이용해서 블루투스의 기능을 완전히 차단 시키고 종료합니다.


이와같이 특정한 시점에서 특정한 기능들을 내포 할 수 있는데 화면상에 일어나는 액티비티의 여러활동을 제어 할 수 있도록 만든 함수들입니다.
이런 함수를 통해서 안드로이드 앱을 자유자재로 구사/제어 할 수 있어야 하겠습니다.
저작자 표시 비영리 동일 조건 변경 허락
신고



스택오버플로우 라는 안드로이드 레퍼런스에서 공식적으로 참고사이트 지정해 놓은 곳입니다.
한국에 여러 좋은 카페나 사이트 들도 있지만 아무래도 본고장에서 쌓아 놓은 자료들을 넘기엔 무리가 있죠.

영어라는 장벽이 있지만 이미 안드로이드 프로그래밍을 하고 계신 분이시라면 거의 아는 말 밖에 
나오질 않습니다. 설령 심도 있는 내용을 모르더라도 코드들만 참고한다고 하더라도 많은 도움이 되죠.
이 사이트는 안드로이드 말고도 다른 언어들에 대한 커뮤니티 활동도 상당한 수준입니다.
그래서 안드로이드 관련 질문들을 검색하려면 검색어에 '[android]' 필터를 써넣고 찾아야 할 정도죠.

저도 아직 많은 것을 배우는 중이라 이 사이트를 자주 참고 합니다.

저작자 표시 비영리 동일 조건 변경 허락
신고