본문 바로가기

Android

[android] SSO와 Service SSO를 구현하면서 아주 조금(0.1%)의 OAuth와 Service(AIDL)을 건드려봤다. AIDL - Android Interface Definition Language Android Application간의 통신수단Application을 Server와 Clinet로 굳이 나누었을 때, Server는 aidl을 정의하고 Service를 등록하고 구동한다.Client는 구동중인 Service를 찾아서 binding 한다. 그렇게 바인딩 된 객체를 통해 aidl에 정의된 함수를 Client가 호출하고 Server가 반환 할 수 있다. SSO - Sing Sign On https://ko.wikipedia.org/wiki/%ED%86%B5%ED%95%A9_%EC%9D%B8%EC%A6%9D 통합인증. 단일.. 더보기
[android] Behavior 다 이해하고 작정하고 적는것이 아니고, 적어가면서 가다듬는 용임 Android design support library와 함께 등장한 BehaviorCoordinatorLayout이 등장하면서 Scroll을 제어하기 위해 제시한 방법이다. Design Support Library( 링크 ) 를 소개할때 보이는 AppBarLayout을 감싸서 스크롤을 제어하는 모습을 볼 수 있다. 그때까지는 아마 이러한 형태의 View를 구현하려면 가장 먼저 떠올리는것이 아마 ParallaxView( 링크 )가 아니었나싶다. (이제는 모두가 CoordinatorLayout을 떠올린다.) 그런데 CoordinatorLayout을 써본 사람이라면 fling시 누구나 이런 말을 했을것이다. 100%"이거 아닌데..." 관련 동.. 더보기
[Android View] 달력만들기 CalendarView 처음에 달력을 만들때는 아주 간단하게 생각했다. 달력 - 날짜 - 정방형 - 많다 - GridView - 다음달 - ViewPager - 만세 그리고 아주 간단한 문제를 아주 복잡하게 구현했다.기본적인 기능들을 넣다보니 참으로 덕지덕지 바른 형태의 달력이 탄생했다. 구조를 대략적으로 적어보면Acitivity - ViewPager FragmentStatePagerAdapter - Fragment - GridView Adapter- View 대충 감이 올것 같은데.. ViewPager의 각 Item으로 달을 표시했고, 달에 포함된 날짜를 GridView로 구현을 했다.참 쉽게 했다. 그런데 문제는 느리다.초기화 속도가 1초에서 길게는 2초까지 갔다. 영 마음에 안들었다. 사용자는 빨리.. 더보기
[android] 인상적인 View - ContextMenu https://github.com/Yalantis/Context-Menu.Android 더보기
[android] attr/actionbarSize android.R.attr.actionBarSize 와 R.attr.actionBarSize는 다르다. AppCompat-v7 은 actionBarSize는 56dp로 R.attr.actionBarSize를 참조해야 한다. android.R.attr.actionBarSize는 플랫폼에서 정의하고 있는 값으로 48dp의 값을 가진다. 참고 주소http://stackoverflow.com/questions/26449195/new-theme-appcompat-actionbar-height 더보기
[android] Lollipop (v5.x) service 오류 targetSdkVersion을 21로 맞추고 빌드를 하면 Process: com.myapp, PID: 6073 java.lang.IllegalArgumentException: Service Intent must be explicit: 위와 같은 오류가 발생한다.뭘 명확하게 하라는건데, 오류가 난 곳을 보면 Service의 Action을 특정 문자열로 사용하고 있을 것이다.이걸 특정 패키지를 지정해주면 오류가 없어진다.'어느 패키지(앱) 건지 지정해라.' 정도로 해석하면 되겠다.intent.setPackage("com.myapp")을 추가 특정 문자열로 하면 namespace관련 오류 발생 가능성이 있나보다. 더보기
[android] sqlite 사용하기 SQLite를 사용하기위해서는 1. SQLiteOpenHelper 클래스 생성2. 생성자에 Database name를 전달함으로써 SQLiteOpenHelper안에서 서 SQLiteDatabase.openDatabase() 또는 mContext.openOrCreateDatabase()로 Database를 생성또는 다시 연다.4. Table 생성3. DML 구현 끗. SQLite를 사용하는데에 SQLite 클래스 SQLiteOpenHelperSQLite의 생성자는 SQLiteOpenHelper(Context context, String databaseName, CursorFactory factory, int version)onCreate()에서 SQLiteDatabase 인스턴스로 table 생성 쿼리를 .. 더보기
[android] dex index google play service 추가 시 dex index 초과 오류[2014-06-03 16:56:23 - Dex Loader] Unable to execute dex: Cannot merge new index 66570 into a non-jumbo instruction![2014-06-03 16:56:23 - TestApplication] Conversion to Dalvik format failed: Unable to execute dex: Cannot merge new index 66570 into a non-jumbo instruction! compile 시 dex table의 갯수가 2^16(65536)개 인데, 초과하면 dex loader에서 오류 발생. indexoverflow와 같은.. 더보기
[android] 한줄 팁 1. TextView 의 말줄임 위치 설정android:ellipsize="end"end / middle / start / none / marquee 2. 2.3 이하에서 dialog가 배경 테두리를 가질 경우 삭제dialog.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT)); 3. bitmap recycle 시 유의사항 (14.06.13)bitmap을 recyle했다면 모든 참조를 끊어라.imageView 참조bitmap 전달인자 4. 서로다른 Notification은 서로다른 context를 써라.같은 context로 다른 Notification을 생성한다면 처음에 생성한 notificatio.. 더보기
[android] get resource id by String 내장된 resource를 가져오려면 약속된 key로 가져오게 된다. 가장 보편적으로 쓰는것이 파일이름이 image.jpg인 drawable에 대해 ImageView.setImageResource(R.drawable.image); 하지만 key를 모를경우, String으로 해당 resource를 찾아올 수 있다. private static Drawable getResource(String resName, Context context) throws NameNotFoundException { Context resContext = context.createPackageContext(context.getPackageName(), 0); Resources res = resContext.getResources(); .. 더보기