336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
안드로이드에서 2D 그래픽 엔진( Graphic engine ) 으로 사용하고 있는 것은 Skia라는 이름의 엔진이다. 개발밥을 먹으면서 써보지는 않았어도 대충 들어는 봤어야 하는데, 생전 처음 듣는 이름 이었다. 역사를 찾아 보니 아래와 같은 기사가 있었다. [1]
게다가 구글은 그 분야의 인수 및 인재 조달도 추진 중이다. 소형기기 제조엡체인 데인저(Danger)의 설립자이자 뒤에 휴대 전화용 소프트웨어 제조업체인 앤드로이드(Android)를 설립한 앤디 루빈(Andy Rubin)은 앤드로이드의 인수와 함께 2005년에 구글에 입사했다.
또한 구글은 모바일 애플리케이션 개발 기업인 레큐와이어리스(Reqwireless) 및 스키아(Skia)라는 기업도 인수했다. 스키아의 첫 제품은 휴대 기기로 2D 그래픽스를 렌더링하는 휴대용 그래픽 엔진이다.
안드로이드에서 GUI를 담당하는 중추 역할인 그래픽엔진임에도 관련 자료가 많이 없는 것 같다. 안드로이드가 openSource 이긴 한데, Skia 관련 자료가 부족한 이유는 google에서 주도적으로 개발하면서 관련된 문서 및 reference가 빈약하기 때문인 것 같다.
우리가 많이 사용하는 Canvas가 HWUI와 Skia를 이용해서 Surface로 요청을 하는 구조이다. 3.0 이전에는 Skia로 다 처리되던 것이 3.0 이후부터는 성능 이슈로 인해서 skia 부분이 점점 HWUI로 대체되고 있다. HWUI 모듈은 GPU를 사용하는 UI component 이다. Android 3.0 부터 tablet에 대한 지원이 되었는데, tablet이 화면이 크다보니 기존에 사용하던 skia로는 animation이 매끄럽지 않아서HWUI나 renderscript 같은 것이 등장하게 된 것 이다.
NetworkImageView는 정말 간단하다. 그냥 url 과 imageLoader만 넘겨주면 된다.
// GET 호출 ( with parameter )
Listener<String> listener = new Listener<String>() {
@Override
publicvoid onResponse(String result) {
// some action
}
};
String uri = String.format("http://somesite.com/some_endpoint.php?param1=%1$s¶m2=%2$s", num1, num2);
StringRequest myReq = new StringRequest(Method.GET,
uri,
listener,
errorListener);
mQueue.add(myReq);
GET 방식으로이미지호출이아닌 api 를호출해서 data를 받아오는경우도흔하므로위와같이StringRequest를이용해서사용하면된다. Parameter는Get방식이므로url로전달하면된다. ( Json 형식을 사용할땐, StringRequest 대신에 JsonRequest를 사용하면 된다. )
// POST 호출 ( with parameter )
StringRequest myReq = new StringRequest(Method.POST,
SharedPreference loading flag: when set, the file on disk will be checked for modification even if the shared preferences instance is already loaded in this process. This behavior is sometimes desired in cases where the application has multiple processes, all writing to the same SharedPreferences file. Generally there are better forms of communication between processes, though.
This was the legacy (but undocumented) behavior in and before Gingerbread (Android 2.3) and this flag is implied when targetting such releases. For applications targetting SDK versions greater than Android 2.3, this flag must be explicitly set if desired.
간단히 볼드부분을 번역하면 아래와 같습니다.
Gingerbread (Android2.3) 까지는 기본으로 MODE_MULTI_PROCESS가 설정되어 있었다.
Target SDK 버전이 Gingerbread (Android2.3) 보다 높으면 명시적으로 설정해야 된다.
( API level이 11 이므로 3.0 부터 사용하능하다는 이야기니까, 2.3 까지는 않써도 된다고 생각함. 그러나 버전 상관없이 다 동작하려면 항상 써주는게 좋다. )
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
NDK를 다운받기 위해 안드로이드 개발 page에 들어갔더니 “android studio” 라는 것이 생겼습니다. Studio 하니 예전의 visual studio가 생각이 나면서 연결되는 것은 .Net의 design studio 였습니다. ( Page의 화면도 그렇고 ) 뭔가 XML을 편하게 해주는 것인가..
그리고 내용을 보니 IntelliJ 기반의 새로운 android 개발 환경이라고 하네요. Intell-J 는 유료라서 써보고 싶기만 했던 것인데 ( 막연히 eclipse 보다 뭔가 더 좋겠지 라는 생각을 가지고 있는 툴이었고 blog 등을 보면 좋아하는 사람은 엄청 좋아하더라구요.. )
Android studio가 제공하는 것들은 다음과 같다고 합니다.
* gradle 기반의 빌드
* android에 특화된 refactoring과 빠른 오류 수정
* 성능, 사용성, 버전 호환성 등등의 오류를 알려주는 Lint tool
* ProGuard 지원과App – signing
* 템플릿(Template)기반의 위저드 기능
* 강력해진 layout 편집기, 멀티화면의 미리보기등
아직은 early access preview 버전이므로 주의 하시요. ( 버전이 0.1 이므로 완성도가 당연히 떨어지리라 예상함 )
검색해보니 Google I/O 2013에서 발표한 것 같네요. 우연히도 빠르게 발견하게 되었네요 ㅎㅎ
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
eclipse에서 android를 개발하다가 겪게 되는 것 중 하나는 노란색 경고줄이 가면서 마우수를 가져가면 아래처럼 이상한 해결 법이 뜨는 것이다.
@SuppressLint 를 추가하면 Lint 에서 해당 코드를 에러로 취급 하지 말라고 선언하는 것이므로, 노란 경고가 보기 싫어서 eclipse가 가이드 하는 대로 @SuppressLint("UseSparseArrays")을 적어줬더니 잘 해결되는 것 같았다. (적어도 내 local 개발 환경에서는 ) 그러나, 빌드 서버에서는 아래와 같은 에러를 뿜고 있군요 ㅠㅠ
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
startActivity를 호출하여 전달할 값을 putExtra()를 호출하여 intent에 설정하고, 호출된 Activity에서 getIntent()로 intent를 얻어 왔는데 이상하게 넘겨준값이 없다. 한참 고민하다가 발견한 것은 startActivity로 넘겨주는 intent에FLAG_ACTIVITY_SINGLE_TOP을 설정한 점이다.
그런데 TextView를 XML에 선언하지 않고 코드에서 생성해서 style을 적용하려니 잘 안된다. 처음에는 그냥 직접 속성들을 적용하였다.
textView.setTextSize(22);
textView.setTextColor(0xffffffff);
textView.setShadowLayer(1, 0, 2, 0x4e000000);
textView.setGravity(Gravity.CENTER_VERTICAL);
그러나 뭔가 개운치가 않다. style로 묶은 것은 해당 style을 재사용 하기 위한것인데, XML에 정의해서 다른곳에서 사용하는 부분과, 코드에서 직접 적용한 부분으로 2중으로 정의되어 있으면 향후 style이 변경되었을 때 두군데를 다고쳐야 한다. 유지 보수시에 실수하기 좋은 방식이므로 코드에서 XML에서 정의한 style을 불러다 쓰고 싶었다. 이것저것 찾아보다 TextView에서 setTextAppearance라는 메소드를 제공한다. 이것을 사용하면 간단하게 적용 가능하다.
textView = new TextView(getContext());
LayoutParams textParam;
textParam = new LayoutParams(30, 30); // 임의의크기로 param 생성