본문 바로가기

프로그래밍/안드로이드

안드로이드 버튼 상태에 따라 배경이미지 바꾸기 버튼에 이미지 꾸미기는 해놓으면 편하다. 근데 이미지가 다른경우는 해보신분은 알겠지만서도 개노다가성이 짙은 놈이더군요. 보통 저는 drawable폴더안에 머시기.xml 형태로 두어 selector를 사용하는 방법을 쓰게 됩니다. 그상태값은 android:state_focused android:state_pressed android:state_enabled 등이 있답니다. res/drawable 폴더안에다가 만들죠. push_menu_ok.xml 사용하실때는 버튼의 배경으로 위의 파일을 설정해주시면 됩니다. ImageButton btn = (ImageButton)this.findViewById(R.id.btn01); btn.setBackgroundResource(R.drawable.push_menu_ok); 더보기
안드로이드 GPS상태 체크후 설정화면 바로가기 @Override public void onCreate(Bundle savedInstanceState) { ... String context = Context.LOCATION_SERVICE; locationManager = (LocationManager)getSystemService(context); if(!locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) { alertCheckGPS(); } ... } private void alertCheckGPS() { AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setMessage("Your GPS is disabled!.. 더보기
[안드로이드] 프로세스와 생명주기 안드로이드 시스템은 메모리가 부족하여 실행되어야 할 프로세스가 실행되지 않는 것을 방지하기 위해 오래된 프로세스를 제거하는 방식을 사용합니다. 여기에서 어떤 프로세스를 유지하고 어떤 프로세스를 죽일것인지는 무엇을 보고 판단하는 걸까요? 바로 각각의 프로세스내에서 실행되는 컴포넌트 상태의 '중요성 계층구조(importance hierarchy)' 를 이용합니다. 가장 낮은 중요성을 가진 프로세스가 가장 먼저 제거되고, 그 다음순으로 진행되지요. 그 계층구조에는 다섯 단계가 존재합니다. 1. 포그라운드 ( foreground ) 프로세스 포그라운드 프로세스는 현재 사용자와 커뮤니케이션하는 프로세스 입니다. 아래와 같은 조건을 가지고 있다면 포그라운드 프로세스로 간주합니다. ● 프로세스가 사용자와 상호작용하는.. 더보기
[안드로이드] 컴포넌트 생명주기 - #3 브로드캐스트 리시버 생명주기 안드로이드의 컴포넌트 생명주기의 액티비티, 서비스에 이어 브로드캐스트 리시버 생명주기입니다. 브로드캐스트 리시버 생명주기 브로드캐스트 리시버는 하나의 메소드만을 가집니다. void onReceive(Context context, Intent broadcastMsg) 리시버에게 브로드캐스트 메시지가 오면 onReceive()가 호출되고, 이 메시지를 인텐트 객체를 인수로 가집니다. 브로드캐스트 리시버는 이 메소드를 실행하는 동안만 활성화 된것으로 간주됩니다. onReceive() 메소드가 리턴되면 비활성화 됩니다. 활성화된 브로드캐스트 리시버를 가지는 프로세스는 강제종료로부터 보호되지만, 비활성화 상태라면 강제종료가 가능해 집니다. 이것은 브로드캐스트 메시지의 응답시간에 관련하여 발생할 수 있기 때문에, .. 더보기
[안드로이드] 컴포넌트 생명주기 - #2 서비스 생명주기 액티비티 생명주기에 이어 안드로이드의 두번째 컴포넌트인 서비스의 생명주기 입니다. 서비스 생명주기 서비스는 두 가지 방식으로 사용됩니다. ▣ 서비스 시작과 중지 서비스는 시작되어 중지되거나 스스로 중지할 수 있습니다. 서비스는 Context.startService()에서 시작되고 Context.stopService() 에서 중지됩니다. 또한, Service.stopSelf() 나 Service.stopselfResult()를 호출하여 스스로 중지할 수 있습니다. startService() 의 호출횟수에 관계없이 stopService()는 한번만 호출하면 서비스는 중지됩니다. ▣ 서비스 인터페이스 사용 서비스는 인터페이스를 사용해서 사용될 수 있는데, 서비스 객체에 커넥션을 만들고 서비스 내부를 호출하는 .. 더보기
[안드로이드] 컴포넌트 생명주기 - #1 액티비티 생명주기 이제 컴포넌트의 생명주기에 대해 포스팅 할까 합니다. 컴포넌트 4가지 중 어느하나 중요하지 않은것은 없다고 생각하는데요, 여기에 이어 또 , 그것들의 생명주기 또한 중요하다고 생각되어 집니다. 이번 글에서는 액티비티 생명주기에 대해 적어볼까 하는데, 왠지 내용이 길어질 것 같아, 다른 컴포넌트들은 다음 포스팅에서 이어가도록 하겠습니다. 컴포넌트의 생명주기 컴포넌트의 생명주기는 컴포넌트를 인스턴스화 할 때 시작해서, 인스턴스가 사라질 때 종료됩니다. 액티비티의 경우 그 사이에 활성화, 비활성화가 될 수 있기 때문에 사용자에게 보이거나 , 또는 보이지 않을 수도 있습니다. 1. 액티비티 생명주기 액티비티는 필수적으로 세 가지의 상태를 가지고 있습니다. ▣ 활성화(activity) 또는 실행 (running).. 더보기
[안드로이드] 태스크 (Task) 시작하기 현재 안드로이드의 태스크 ( Task ) 에 대해 적어보고 있습니다. 관련글은 하단에 있어요 ^^ 태스크 시작하기 우선 가장 기본적인 안드로이드의 중요한 파일은 매니페스트 파일을 한번 보실까요? 그전에~ 매니페스트엔 여러가지 사항이 있기 때문에 태스크에 관련된 인텐트 필터만 우선 보겠습니다. 보시는것 처럼 인텐트 필터 액션을 " android.intent.action.MAIN" 으로 하고 카테고리를 " android.intent.category.LAUNCHER" 로 지정되어 있습니다. 이게 처음 프로젝트를 만들시에 시스템이 기본으로 만들어주는 매니페스트의 인텐트 필터인데요, 이렇게 지정하면 태스크의 시작점으로 설정됩니다. 즉, 액티비티의 아이콘과 라벨이 어플리케이션 런처에 표시되고, 사용자는 태스크를 런.. 더보기
[안드로이드] 런치 ( Launch ) 모드 엘리먼트의 launchMode 속성에는 네 가지의 모드가 있습니다. " standard " ( 디폴트 ) , "singleTop" , "singleTask" , "singleInstance" 인데요. 하나씩 한번 알아보지요. 1. standard (디폴트) ▣ 인텐트 객체가 FLAG_ACTIVITY_NEW_TASK 플래그를 가지지 않았다면 인텐트를 만들고 startActivity() 를 호출한 액티비티가 있는 태스크입니다. FLASG_ACTIVITY_NEW_TASK 플래그를 가지고 있다면 ' 어피니티와 태스크 ' 에서 처럼 다른 태스크가 선택됩니다. ▣ 여러번 인스턴스화 될 수 있어서 다양한 태스크에 속할 수 있고, 주어진 태스크는 동일한 액티비티의 여러개의 인스턴스를 가질 수 있습니다. ▣ 스택의 위치.. 더보기