본문 바로가기

나의 플랫폼

[Android] 배경화면에 이미지를 표현할 때 참고사항 배경화면에 이미지를 출력할 때, offset까지 생각을 해서 화면보다 좌우를 더 크게할 경우가 많으시죠. 그럴 경우, 이미지가 커지고 출력할 때 과부하가 생기기도 합니다. 즉, 큰 이미지의 딱 화면 크기 정도만 가져와서 표현을 하게 되면, 과부하가 생길 이유가 없겠죠. 하늘색 부분만 보이도록 하는 것이지요! 소스는 다음과 같습니다. RectF rect = new RectF(0, 0, screenSizeWidth, screenSizeHeight); // 네모 상자 크기 지정 Matrix matrix = new Matrix(); matrix.mapRect(rect); matrix.setTranslate(mOffsetX, 0); // offset설정 mainCanvas.drawBitmap(mainBmp,mat.. 더보기
[Android] 진저브레드도... Opengl은 16비트컬러 출처:http://www.androidcentral.com/some-details-about-gingerbreads-ui-changes 위 내용을 보면... 아직 Opengl이 24비트를 지원 안되어있습니다. 모토로라는 24비트를 지원해서 조금 깨끗한 화면은 연출할 수 있지만... 다른 핸드폰에서는 디더링을 해도... 점 같은 모양이 생기는 것을 막을 수는 없네요... 다음 버전에는 24비트가 지원 되었으면 좋겠네요. 더보기
[Android] java.lang.OutOfMemoryError: bitmap size exceeds VM budget 이건 한정된 메모리를 초과 했을 때 뜨는 오류 입니다. 먼저 , 전에 제가 적은 블로그 내용을 확인해보고, 그래도 안될 시에는 이 방법을 해보세요. http://gogorchg.tistory.com/entry/Android-BitmapFactory%EC%97%90-%EB%AC%B8%EC%A0%9C%EC%A0%90 Bitmap이 차지하는 메모리가 급속하게 줄어듭니다. Bitmap bitmap; BitmapFactory.Options option = new BitmapFactory.Options(); option.inSampleSize = 1; option.inPurgeable = true; option.inDither = true; bitmap = BitmapFactory.decodeResource(mRe.. 더보기
[Android] BitmapFactory에 문제점 BitmapFactory를 이용하여 Decode할 경우, Out of memory 에러가 자주 발생하죠. Bitmap bitmap; BitmapFactory.Options option = new BitmapFactory.Options(); option.inSampleSize = 2; bitmap = BitmapFactory.decodeResource(mRes, mRes.getIdentifier(fileName, null, null), option); 보통 위 같은 경우에는 에러는 막을 수 있지만, 보시면 아는 바와 같이 Bitmap크기를 반으로 줄여버립니다. 저장한 Bitmap을 사용할 때, 2배로 키우게 되면 이미지가 깨지게 되죠. Bitmap.createScaledBitmap(src, dstWidth.. 더보기
[Android] Bitmap에 그림 그리기. 항상 drawLine이나 drawCircle같은 함수를 매번 추가해야 할 경우, 혹시 For문으로 돌리고 계시지는 않는 지요? 그럼 시스템적으로 부화도 많이 생기고, 느려지는 것을 느낄 수 있습니다. Canvas 자체적으로 다시 초기화를 하지 않고,겹쳐서 그릴 경우에는 그대로 계속 그리면 되지만, 다시 깨끗하게 화면을 초기화 하고 다시 출력할려고 하면 다시 그 수만큼 사용을 해야하죠. for(int i = 0 ; i < 100 ; i++) c.drawLine(0,0,100,100,paint); 위와 같은 코드로는 drawLine을 100번 출력하게 되는 대박 코딩이 되는 거죠-0-;; 그래서 지금까지 그린 것을 Bitmap에 저장시켜 놓은 후, 그것을 다시 호출해서 사용하면 drawBitmap함수를 한번.. 더보기
[Android] RGB 색깔 테이블 색깔을 입힐 때, Hex코드는 이해하기 힘드니 Color.rgb(red, green, blue); ex> Snow : Color.rgb(255,250,250); 위 코드 형태로 RGB값으로 지정하자. Whites/Pastels Color Name RGB CODE HEX # Sample Snow 255-250-250 fffafa Snow 2 238-233-233 eee9e9 Snow 3 205-201-201 cdc9c9 Snow 4 139-137-137 8b8989 Ghost White 248-248-255 f8f8ff White Smoke 245-245-245 f5f5f5 Gainsboro 220-220-220 dccdc Floral White 255-250-240 fffaf0 Old Lace 253-2.. 더보기
[Android] HeapSize확인! Log.d("DEBUG", "Heap Size : "+Long.toString(Debug.getNativeHeapAllocatedSize())); 위 로그를 사용하여 매번 출력해줘서 HeapSize에 변화를 확인한다. 참고로 전 Sky VegaS를 테스트 해봤을 때, 결과값이 약140000000 이상이 될 경우 핸드폰이 멈춰버리는 현상이 발생하였습니다. HTC 디자이어 HD같은 경우는 그 전에 Out of memory가 발생하고 종료 되어버리구요. Bitmap을 사용하거나 리스트 배열에 이미지를 다룰 경우 주의사항! 1. Bitmap을 계속 사용하지 않을 경우에는 삭제한다. bitmap.recycle(); bitmap = null; 2. Bitmap을 불러들이는 부분이 매번 추가되지 않는지 확인한다. 특.. 더보기
[Android] Bitmap을 확장 축소할 경우 아래 소스가 확장하거나 축소하는 함수이다. Bitmap.createScaledBitmap( bitmap ,bitmap.getWidth()*2 ,bitmap.getHeight()*2 ,true); 지금은 2배로 확장하는 소스 인데... 여기서 중요한게 마지막 매개변수의 true일 때와 false때의 차이점!!! false일 경우 : 지금 pixel형태 그대로 2배 늘려버려서 이미지가 깨지거나 흐려보이게 된다. true 일 경우 : 지금 이미지 pixel형태를 조정해 주어서 이미지가 선명하게 보이도록 도움을 준다. 주의) 이미지를 늘리거나 true옵션을 사용할 경우, 너무 큰 이미지는 Out of memory 오류가 발생할 가능성이 크므로, 주의해서 사용하길 바란다. 더보기