Android 52

안드로이드 툴바 우측 서랍 아이콘 만들기

안드로이드 액션바 우측에 원하는 이미지로 메뉴를 만들어 보자. 상위 버전의 경우 기본적으로 만들어지지만, 하위 버전의 경우에는 하나 하나 해줘야만 한다. 애플은 OS 버전이 올라가면 참 난감하게도 예전 API를 통보도 없이 없애 버리지만, 아직 구글은 친절하게 하위 버전에서도 사용 할 수 있도록 많은 지원을 아끼지 않고 있다. 1. 우선 툴바를 만들고2. 툴바에 메뉴를 붙이고3. 메뉴에 붙을 이미지를 Drawable로 만든다.4. 만든 drawable을 툴바에 붙인다. toolbar.setOverflowIcon(drawable); Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); toolbar.setTitle(""); toolbar.addView(cust..

안드로이드 프리퍼런스 보이기 안보이기

PreferenceScreen은 xml에서 gone을 해도 보인다. 그럼 소스코드에서 변경해야 하는데 일반적인 방법으로 해서는 되지 않는다. PreviewPreference mCheckBoxPref = (PreviewPreference) findPreference(KEY_SETTINGS); PreferenceCategory mCategory = (PreferenceCategory) findPreference("key_PreferenceCategory"); mCategory.removePreference(mCheckBoxPref); 프리퍼런스를 카테고리에 추가하고 카테고리에 있는 프리퍼런스를 보이지 않게 만들면 된다.

[안드로이드] 프래그먼트에서 뷰 제거 확실하게 하기 -You must call removeView()

Caused by: java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first. 뷰페이져에 달린 얘들에서 디스트로이 뷰 하면서 제거 해줘야 한다. @Override public void onDestroyView() { super.onDestroyView(); if(mRootView !=null){ ViewGroup parentViewGroup = (ViewGroup) mRootView.getParent(); if( null != parentViewGroup ) { parentViewGroup.removeView( mRootView )..

[안드로이드] 프래그먼트 안정화 시키기

프래그먼트는 액티비티 아빠에게 소속되어있다가 아빠가 잠시 한 눈을 팔 때 붙었다 떨어졌다 하면서 실종되는 문제를 가지고 있다. 즉, 이런 문제 때문에 isAdded를 사용하면 붙어 있나 없나를 알아 낼 수 있지만.. 이건 그냥 임시 방편일 뿐이다. isAdded()를 쓰면 그냥 피해가지만..... 이건 너무 많은 비용이 든다.... 처리 못하는게 너무 많아 진다.... can not resolve android.support.v4.app.FragmentManager.--> getSupportFragmentManager() in your code, not getFragmentManager() You must call removeView() on the child's parent first" 프래그먼트에서 ..

AsyncTask를 전역으로 쓰면?

안드로이드 AsyncTask를 전역으로 쓴다면? 즉, 재활용 하겠다는 의미인데 가능 할까? 불가능하다! 만약 한 번 쓴 비동기 태스크를 재 활용 하려고 하면 아래문구를 보게 될 것이다. java.lang.IllegalStateException: Cannot execute task: the task has already been executed (a task can be executed only once) 즉, 변수 이름은 재활용이 가능 하지만 다시 쓰려면 새로 할당을 받으라는 것이다. 당연한 것 아니겠나? 얼음 얼리는 통을 사서 물을 채우고 얼음을 얼려서 먹었는데, 다음 번에 얼음을 먹으려면 당연히 물을 다시 부어서 넣고 기다려야 먹을 수 있지 않겠는가? 그 당시 얼음 통과 얼음은 그 당시의 내 위장 속..

[아이폰 6s vs 갤럭시 S6 vs LG G4] 카메라 비교 리뷰

이번에도 담달폰이되어버린 아이폰 6s... 분홍색 아이폰 6S 너무 갖고 싶네요. 아이폰 6보다 얼마나 더 좋아졌을지 궁금하기도 한데 일단 한국에 넘어오기 전에 카메라 리뷰부터 찬찬히 보면서 기다려봅시다. 갤럭시S6, LG G4 등과의 비교리뷰 사진을 보면서 말이죠. 이 리뷰는 기즈모도에서 한겁니다. 차이가 보이나요??????? 6S는 뭔가 사실적인 그런 냄새가 나는 군요. 갤럭시 S6d와 아이폰 6s의 카메라가 비슷한 느낌을 주는 것 같지만 갤럭시는 약간 둔탁한 느낌이 있는 반면 아이폰은 조금 더 사실적입니다. 물론 이 사실적이란 것이... 조작된 것 일 수도 있죠.(내부 이미지 처리) LG G4가 실내 찰영에서 꼴찌를 했군요. 아니면 신의 재림을 제대로 찍었을 수도... 갤럭시 S6가 좀 오버된 느낌..

포르쉐에 구글카 대신 애플카 탑재 한다.(개인정보 수집 때문?)

구글 오토(Android Auto)가 애플의 카플레이(Car Play)에 한 방먹은 것 같습니다. 모토 트렌드 매거진등에 따르면 포르쉐가 안드로이드 오토를 차량에 장착하려 했으나 개인 정보를 빼가는 것 같아서 철회 하고, 애플의 카플레이를 장착하기로 했다는 소문이 있다고 합니다. 안드로이드 오토는 기본적으로 운전자 습관, 속도, 거리, 기름, 온도, 엔진 정보등을 빼내어 간다는 의심을 받고 있어서 이런 일이 발생했는데요, 이에 구글은 절대 그런일이 없다고 바로 반박했다고 합니다. 하지만, 포르쉐는 그래도 불안하다고 하면서 애플의 카플레이를 장착하기로 했답니다. 루머인지 사실인지 확실하지는 않지만, 개인적으로는 사실로 추정이 되는군요. 구글은 태양계에서 큰형님의 자세로 커왔기 때문에 지구인이라면 누구나 아..

안드로이드 오버라이드의 비밀과 함정 -Preference

PreferenceActivity의 기본 아이템들은 타이틀, 서머리 또는 체크박스만 있기 때문에 너무 단조롭다. 그래서 안드로이드는 오버라이드해서 내 맘대로 UI를 바꿀수 있도록 제공한다. 결국, 아래 그림처럼 seekbar를 넣어서 좀 더 다이나믹하고 인터랙티비한 형태로 바꿀 수 있다. 방법은1. Preference를 extends 하는 클래스를 하나 만든 다.2. 새로 만든 클래스에서 반드시 onCreateView를 만들어 줘야한다. @Override protected View onCreateView( ViewGroup parent ) { super.onCreateView(parent); mLayoutInFlater = (LayoutInflater) getContext().getSystemServic..

[안드로이드] 홈키 5초룰을 아시나요?

앱을 테스트 하던 중, 이벤트를 받고 startActivity를 했는데, mainActivity가 화면에 2-3초 후에 나타나는 현상이 발생했습니다. 왜 이렇게 느리지 하는 생각이 들어 개선점을 찾아 보기로 했지요. 속도를 개선해야 겠다 화면을 많이 그려서 그런가... 리소스를 잡아먹는 코드가 있나 고민에 빠졌죠.코드를 이것저것 빼도 전혀 빨라지지가 않네요. 그런데 이것저것 테스트를 하는 중에 Back 키로 앱을 나간 후 실행하면 바로 뜨고, Home 키로 나간 후 실행하면 뜨지 않는다는 차이점을 발견했지요. 홈 키는 뭐가 다를까?검색을 해 보니 안드로이드에는 일명 5초 룰 이라는 것이 있네요.홈키로 앱을 숨기면 그 activity는 백그라운드에서 startActivity를 해도 5초 동안 꼼짝하지 않는..