'전체 글'에 해당되는 글 171건

  1. 2014.09.22 [android] View의 LayerType 알아보기
  2. 2014.06.11 외부 library에 소스 경로 추가하기
  3. 2013.12.17 sony tablet s (SGPT12) usb driver 설치
  4. 2013.12.17 [주식] 주식 명의개서 정지 란? 1
  5. 2013.12.14 2014 연말정산 팁(Tip)

[android] View의 LayerType 알아보기

android 2014. 9. 22. 15:09

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

Android 3.0 ( 허니컴 : API level 11 ) 부터 하드웨어 가속 (hardwareAccelerated )  옵션으로 2D rendering pipeline 의 사용여부를 설정 할 수 있도록 하였다. hardwareAccelerated 을 설정하면 CPU가 할 일을 GPU가 대신 처리해서 그런지 체감 속도가 많이 빨라진다.

 

설정하기

ApplicationManifest.xml에서 설정할수 있다.

앱 전체에 설정하려면 아래처럼 application tag에 설정하면 된다.

<application

android:hardwareAccelerated="true"

또는 Activity 단위로도 설정할 수 있다.

<activity

android:hardwareAccelerated="true"

 

코드를 이용해서 동적으로 Activity에 설정하려면 아래와 같이 하면 된다. ( 동적으로 application 전체를 설정하는 방법은 없다. 동적으로 하려면 모든 activity에 아래의 방법을 적용하면 된다. )

코드로 할 때 주의할점은 setContent 전에 설정해야 한다.

@Override

protected void onCreate(Bundle savedInstanceState) {

       super.onCreate(savedInstanceState);          

       getWindow().addFlags(WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED);

       setContentView(R.layout.my_content_view);

 

View 단위로도 설정할수 있는데, 아래의 방법으로 코드로 설정 할 수 있다. 생성자에서 호출이 되어야 한다.

 

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {

setLayerType(View.LAYER_TYPE_SOFTWARE, null);

}

 

참고로, Applicationmanifest나 코드로 설정안하고, android settings에서 개발자 옵션에서 “GPU 렌더링 강제 실행옵션을 키면 항상 GPU로 렌더링하게 된다.

 

View 단위로 설정하는 코드에서 보듯이, SDK에서 View LayerType 3가지로 제공한다.

l  LAYER_TYPE_NONE

l  LAYER_TYPE_SOFTWARE

l  LAYER_TYPE_HARDWARE

 

Software-base drawing model

소프트웨어 기반의 그리기 모델에서는 다음 2가지 절차를 통해서 그리기를 수행한다.

1.     Invalidate the hierarchy

2.     Draw the hierarchy

예를들어서, TextView의 내용을 변경하고 invalidate() 함수를 호출하면 viewhierarchy를 순회하면서 모든 view invalidate가 호하면서 다시 그려야할 영역을( the dirty regin) 을 구하게 된다. 그리고 viewhierarchy를 순회하면서 다시 그리게 된다.  (View.invalidate 함수를 보면, ViewParent invalidateChild 함수를 호출하는 것을 확인할수 있다. )

Software로 그리는 방식은 간단하지만, 2개의 결점을 가지고 있다. 첫째는 변경되지 않은 view에 대해서도 draw 코드를 수행하게 되는것이고, 두번째는 앱에 버그가 존재할수 있다는 것이다.

  

 

Hardware-base drawing model

하드웨어기반의 그리기 모델에서는 소프트웨어기반의 그리기 모델의 단점을 개선하여서 변경된 viewupdate를 하도록 개선된 모델이다.

1.     Invalidate the hierarchy

2.     Record and update display lists

3.     Draw the display lists

디스플레이 리스트( diplay list)를 가지고 있어서 각각의 view hierarchy에서 update되는 것만 다시 그리는 방식이다.

 

전체적인 구조나 성능면에서 hardware 방식이 더 좋지만 hardware 방식의 문제점도 있다. 바로 모든 api 가 지원하는 것이 아니다.

아래의 표는 Harware 기반 그리기 모델에서 android OS 버전별로 지원되는 api와 지원안되는 api 리스트 이다. 아래의 api를 사용할때는 성능 감소가 되더라도, LayerType을 반드시 software로 설정해야 정성 동작한다.

 

API level

< 16

16

17

18

Canvas

drawBitmapMesh() (colors array)

drawPicture()

drawPosText()

drawTextOnPath()

drawVertices()

setDrawFilter()

clipPath()

clipRegion()

clipRect(Region.Op.XOR)

clipRect(Region.Op.Difference)

clipRect(Region.Op.ReverseDifference)

clipRect() with rotation/perspective

Paint

setAntiAlias() (for text)

setAntiAlias() (for lines)

setFilterBitmap()

setLinearText()

setMaskFilter()

setPathEffect() (for lines)

setRasterizer()

setShadowLayer() (other than text)

setStrokeCap() (for lines)

setStrokeCap() (for points)

setSubpixelText()

Xfermode

AvoidXfermode

PixelXorXfermode

PorterDuff.Mode.DARKEN (framebuffer)

PorterDuff.Mode.LIGHTEN (framebuffer)

PorterDuff.Mode.OVERLAY (framebuffer)

Shader

ComposeShader inside ComposeShader

Same type shaders inside ComposeShader

Local matrix on ComposeShader

 

 

 

참고 : http://developer.android.com/guide/topics/graphics/hardware-accel.html



:

외부 library에 소스 경로 추가하기

android 2014. 6. 11. 13:58

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

안드로이드를 개발할 때 장점은 java로 되어 있어서 android의 소스를 쉽게 참조 할수 있는 점이다. 그런데, 안드로이드 소스외에 추가로 사용하는 library에 대해서는 소스를 볼 수 없어서 답답하곤 했다. 예를 들어서 android의 하위버전 호환 library android-support-v4.jar를 대부분 사용하는데, 개발하다가 ‘F3’ 키로 따라 들어가다 보면 아래와 같은 화면을 만나게 된다.

 


Android –support-v4 opensource라서 project를 다운받아서 봐도 되지만, 개발 환경과 연동이 안되어서 바로바로 소스보기가 불편하다. 그래서 검색해보니 있구나~

 

Google I/O 2012에서 그 방법을 소개하고 있다. ( 48분 부터 보면 된다. ) 

또는 옆의 링크를 눌러도 된다.  Explanation in Google I/O 2012 video

 

간단하게 설명하면 다음과 같다.

 

1. lib 폴더에 jar 파일이름 + “.properties” 라는 파일을 하나 만든다.

   예를 들어서 gson-2.2.4.jar 이면, gson-2.2.4.jar.properties 로 파일을 하나 만든다.


2. 파일에 src 또는 doc 의 경로를 설정하면 된다. ( 절대경로, 상대경로 모두 된다. )

   예를 들면, src=../libs-sources/gson-2.2.4-sources.jar  이렇게 해주면 된다.

   물론 해당 경로에 gson-2.2.4-source.jar 파일이 있어야 한다.

 



이렇게 하고 설정이 잘 되었는지 확인하려면 환경설정에서

“Java Build path” -> Libraries -> Android Private Libraries 에서 해당 jar 파일을 찾아서 펼친뒤에 Source attachment를 확인하면 된다.



 

설정하고 위에서럼 확인이 안될때는 F5를 눌러서 refresh를 해보면 된다.

그래도 안되면 projectclose 했다가 다시 열면된다.

그래도 안되면 eclipse를 종료했다가 다시 시작해야 한다.

 

참고로 xxx-source.jar 파일은 maven 중앙 repository 등에서 쉽게 구할수 있다.

http://search.maven.org

 

개발환경이 편리해 저서 뿌듯하다~ ㅋㅋ 

 

 



:

sony tablet s (SGPT12) usb driver 설치

android 2013. 12. 17. 13:48

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

소니에서 나온 tablet s 라는 안드로이드 기반의 타블렛이 있는데, usb driver를 설치하기가 쉽지 않다. 정확한 모델명은 SGPT12 이다. 안드로이드 개발을 위해서 ADB 와 연결하려면 기본 드라이버가 설치되어 있어야 하는데.. 쉽지않군..

 

구글링으로 검색해보니 비슷한 사래가 다반사구나.

http://stackoverflow.com/questions/9006455/how-to-install-a-sony-tablet-s-as-an-adb-device

 

내용을 읽어 보면 아래 소니페이지에서 가이드 하는 대로 하면 된다고 한다.

http://esupport.sony.com/US/perl/support-info.pl?info_id=878

 

.. 이거봐라..

내용을 보니 google usb driver를 사용하고 있는데 windows에서 자동으로 검색이 안되니 sdk에서 android_winusb.inf 파일을 직접 수정하라고 한다. 참 우울하네~

Android SDK를 받은 상태라면 “android_winusb.inf” 파일은 아래 위치에 있다. 

SDK -> extras -> google -> usb_driver

Google usb driver만 받을 수도 있다. (http://developer.android.com/sdk/win-usb.html )


 

아래의 2줄을 자신의 환경에 맞게 추가해주면 된다.

 

;SONY Sony Tablet P

%CompositeAdbInterface% = USB_Install, USB\VID_054C&PID_04D2&MI_01

 

;SONY Sony Tablet S

%CompositeAdbInterface% = USB_Install, USB\VID_054C&PID_05B4&MI_01

 

자신의 컴퓨터가 intel 기반이면 [Google.NTx86] 영역에 추가하면 되고, AMD 기반이면 [Google.NTamd64] 에 추가해주면 된다. 잘 모르겠으면 2군데 다 추가해주면 된다. 

추가해주고 드라이버를 업데이트 하는데 자동 검색이 안된다. ㅠㅠ  

 

아래처럼 수동으로 직접 선택해주면 된다.

장치관리자 -> 미설치 장치 -> 마우스 오른쪽 클릭 ->  드라이버 소프트웨어 업데이트 에서 자동검색말고 아래있는 수동으로 찾기를 선택하다.  그다음 "컴퓨터장치 드라이버 목록에서 직접 선택" 을 누르면 된다. 



 

위와 같은 화면이 안나오면 "디스크 있음"을 선택한 후에 직접 “android_winusb.inf” 파일을 선택해 주면 된다.

 



:

[주식] 주식 명의개서 정지 란?

정치&경제 2013. 12. 17. 01:08

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

연말이 되면 "주식 명의개서 정지" 라는 내용의 공시가 종목별로 많이 올라온다. 대략적인 느낌은 알겠는데, 정확하게 알아보도록 하자. 

일단 사전적인 의미를 찾아보면 아래와 같다. 

기명주식(記名株式)이 양도·상속·합병 등으로 인하여 구소유자로부터 신소유자로 이전된 경우에 신소유자의 성명과 주소를 회사의 주주명부에 기재하는 것을 명의개서(名義改書)라 한다. 기명주식의 양도는 주권(株券)의 배서와 주권과 양도증서의 교부에 의하여 효력이 생기지만, 양수인이 회사에 대하여 자기가 주주임을 주장하기 위하여는 명의개서의 절차를 밟아야 한다.

 


우리가 보통 거래소(또는 코스닥)시장에서 거래 매수하면 내가 구매한 주식은 어디 있는 걸까?  예들들어서 장마감 1시간 전인 오후 2시에 삼성전자 주식 1주를 구매했다고 해보자. HTS 또는 모바일을 통해서 주식을 사기위해 주식대금을 130만원을 납입하였다. 그러면 내가 산 주식 1개는 어디있는걸까? 키움증권으로 거래했으면 키움증권에서 보관하고 있는 걸까? 아니다. 거래한 주식은 "증권예탁원" 이라는 곳에서 보관하고 있게 된다. 그럼 좀전에 구입한 삼성전자 주식 1개는 장마감이 되는 3시이후에 (실제로는 시간외 거래인 5시) 그날의 거래내역에 따라서 변동된 주식의 주인이 누구라고 명의개서를 하게 되는 것이다.  

즉, 주식은 매일 거래소를 통해서 거래되고, 보관은 "증권예탁원"에서 보관하고 있는 것이다. 그리고 증권예탁원은 매일매일 변경된 주식이 누구것인지 명의를 개서(이 주식은 누구꺼라고 표시하는것)를 하는 것이다. 


명의개서 정지는 왜하게 되나? 

주주총회를 한다고 가정해 보면, 매일매일 주식이 거래되고 있어서 매일 소유자가 변경되어서 주식의 가장 큰 권리인 주권을 행사할때 누구에게 주권해사 권한을 줘야할지 어려워 진다. 그래서 주식의 특정한 권리를 행사하기 전에 명의개서정지기간을 두는 것이다. 주주총회전에 자주 있는 일이므로, 주주총회에서 무슨 중요한 안건이 나오는지 살펴보는 것이 좋다. 


주식거래정지와는?

명의 개서는 주권을 행사할수 있는 권한의 변경을 금지하는 것이기 때문에 거래와는 아무런 상관이 없다. 예를 들어서 1월1~1월31일까지 명의개서 정지를 한다고 할때 12월 30일에 주식을 산뒤에 1월 5일에 주식을 팔았다고 가정하면 1월1일 이전에 이미 명의개서를 통해서 주주로 등록이 된 상태이고 1월5일에 주식을 팔았어도 명의개서 정지기간이므로 주주총회에서는 주주권(1주당 1투표권리)을 갖게 된다. 


배당기일과 배당금 

배당기일은 해달 날짜에 주식명부에 올라있으면 배당을 받게되는 날짜를 말한다. 만약 배당기일이 12월 31이라고 하면, 12월 31일 전에 주식을 구입하여서 주주명부에 기록이 되면 1월 2일에 주식을 팔았다고 하더라도 당해년도의 배당을 받을수 있게 된다. 그래서 배당기일 이후에 주가가 조금씩 빠지는 경향이 있다. 





:

2014 연말정산 팁(Tip)

정치&경제 2013. 12. 14. 08:08

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.


사실 연말정산의 팁이라는건 딱히 없다. 왜냐하면 매년 국세청에서 발행하는 연말정산 가이드를 꼼꼼히 읽어 보면 되는데 그 분량이 책한권 수준이다. 또한 어려운 용어가 범람하여 읽기가 어려운 측면이 있기에 간단하고 이해하기 쉽도록 풀어 쓰것들 일 뿐이다.  그럼 시작해 볼까~ 참고로 2013년 귀속 연말정산 달라지는점도 한번 읽어 보시길~ 

2013/11/11 - [정치/경제] - 2014 연말정산 달라지는 점 - 1탄


1. 카드 현금공제에서 25% 를 넘야야.. 

연말정산에서 90% 이상의 사람들에게 해당하는 것이 신용카드 및 현금사용 항목인데, 의외로 세세한 부분을 모르고 있다. 일단 신용카드/체크카드/현금영수증의 1년간 사용 금액이 25%를 넘어야 공제가 가능하다. 예를 들어서 연봉이 5천만원인 사람이 카드로 1,000만원을 사용하고 현금을 200만원 사용하였다면 공제 받는 금액은 0원이다. 총사용금액이 1,200만원으로 25%인 1,250만원 미만이기 때문이다. 소득공제를 받기 위해서 과소비를 할 필요는 없지만 사용금액이 많은 사람은 사용할때 신용카드와 현금(체크카드)의 공제율 차이를 알고서 사용하는 것도 팁이 된다. 현금의 공제율이 더 높기때문에 1,250만원까지는 카드 사용을 위주로 하고, 1,250만원이 넘었으면 현금또는 체크카드를 사용하는게 좋다. 


2. 맞벌이 부부라면.. 

맞벌이 부부인 경우에는 항목에 따라서 더 유리한 경우가 있다. 기본적인 원칙은 고소득자가 더 많이 내기 때문에 환급액도 더 많다는 것이다. 이 원칙에 따라서 기본 인적공제, 자녀양육비 추가공제등은 고소득자가 선택하는 것이 좋다. 반면에 총소득에 최저 사용금액을 초과하는 항목은 저소득자가 선택하는게 유리할수 있다. 예를들면, 의료비(총소득의 3%이상)와 신용카드(총소득의 25%이상) 항목은 저소득자가 선택하는게 유리할수 있다. 

참고로 아래는 과표구간에 따른 소득세율이다. 

1200만원 이하는 6%

1200만~4600만원 15%

4600만~8800만원 24%

8800만~3억원 35%

3억원 초과 38%


3. 절세 상품을 적극 활용.. 

종합청약저축에 가입하면 연간 120만원이 불입가능하며 불입액의 40%를 공제 받을수 있으므로 최대 48만원까지 공제가 가능하다. 

연금상품(연금저축,연금펀드, 연금보험)은 연간 400만원한도로 공제가 가능하다. 12월전까지 가입해서 일시불로 400만원을 납입하여도 공제가 가능하다. 





: