development

Android에서 Bitmap과 Drawable의 차이점은 무엇입니까?

big-blog 2020. 11. 14. 10:51
반응형

Android에서 Bitmap과 Drawable의 차이점은 무엇입니까?


검색했지만 Android에서 Bitmap과 Drawable의 차이점에 대해 설명하는 기사를 찾을 수 없습니다.


비트 맵은 비트 맵 이미지 (예 : java.awt.Image)의 표현입니다. 드로어 블은 "그릴 수있는 것"의 추상화입니다. 비트 맵 (으로 래핑 됨 BitmapDrawable) 일 수 있지만 단색, 다른 Drawable 개체의 컬렉션 또는 기타 여러 구조 일 수도 있습니다.

대부분의 Android UI 프레임 워크는 Bitmap 객체가 아닌 Drawable 객체로 작업하는 것을 좋아합니다. 뷰는 모든 드로어 블을 배경으로 받아 들일 수 있습니다. ImageView는 전경 Drawable을 표시 할 수 있습니다. 리소스로 저장된 이미지는 Drawable 개체로로드됩니다.


Drawable은 그릴 수있는 것입니다. 예 : 레이아웃, 벡터 이미지 (선, 원), 글꼴, 이미지 등

비트 맵-PNG, JPEG 등과 같은 이미지 인 드로어 블의 특정 유형입니다.


비트 맵은 이미지가 아닙니다. 비트 맵은 비트 맵입니다 (참고 이름 : 비트 맵). 그리고이지도는 무언가를 그릴 수있는 픽셀을 나타냅니다. 예를 들어 정사각형과 같은 사용자 정의 비트 맵 (이미지 아님) 일 수 있습니다.

Bitmap bitmap = Bitmap.createBitmap(100, 100, Bitmap.Config.ARGB_8888);

또는 이미지에서 Bitmap 객체를 만들 수 있습니다.

Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.your_image);    

비트 맵은 픽셀 홀더입니다. 그리고 Canvas는 비트 맵 (비트 맵 픽셀)에 무언가를 그리는 데 사용됩니다.

Drawable에 대한 모든 것은 위에 잘 설명되어 있습니다.

TL; DR

어떤 사람들은 캔버스에 그리는 것을 씁니다. 캔버스에 그리지 않습니다. Canvas 도우미 메서드를 사용하여 비트 맵 픽셀에 그립니다.

Bitmap bitmap = Bitmap.createBitmap(100, 100, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
canvas.drawColor(Color.RED) // now all bitmap pixels became red

드로어 블 리소스

Drawable자원이 화면에 그려 질 수 있으며, 같은 API를 사용하여 검색 할 수있는 그래픽에 대한 일반적인 개념 getDrawable(int)이나 같은 속성을 또 다른 XML 리소스에 적용 android:drawable하고 android:icon. 드로어 블에는 여러 유형이 있습니다.

  • 비트 맵 파일 , 비트 맵 그래픽 파일 (.png, .jpg 또는 .gif)은 BitmapDrawable.

  • Nine-Patch File , PNG콘텐츠 (.9.png)에 따라 이미지 크기를 조정할 수있는 확장 가능한 영역이 있는 파일은 NinePatchDrawable.

  • 목록 레이어 하는 Drawable다른 배열 관리 Drawable들. 이들은 배열 순서로 그려 지므로 가장 큰 인덱스를 가진 요소가 맨 위에 그려지고 LayerDrawable.

  • 상태 목록 , XML다른 상태에 대해 다른 비트 맵 그래픽을 참조 하는 파일 (예 : 버튼을 눌렀을 때 다른 이미지 사용)은 StateListDrawable.

  • 레벨 목록 , 각각 최대 숫자 값이 할당 된 여러 대체를 관리하는 XML을 정의 하는 파일 .DrawableDrawableLevelListDrawable

  • Transition Drawable , 리소스 간에 교차 페이드 할 수 XML있는을 정의 하는 파일 .DrawableDrawableTransitionDrawable

  • Inset Drawable , 지정된 거리만큼 다른 XML것을 삽입 하는 을 정의 하는 파일입니다 . 이것은 뷰의 실제 경계보다 작은 배경 필요할 때 유용 합니다.DrawableDrawableViewDrawble

  • Clip Drawable , 현재 레벨 값을 기반으로 다른 클립 XML을 정의 하는 파일 .DrawableDrawableDrawableClipDrawable

  • Scale Drawable , 현재 레벨 값에 따라 다른 크기를 변경하는 XML을 정의 하는 파일 .DrawableDrawableScaleDrawable

  • Shape Drawable , XML색상 및 그라디언트를 포함하여 기하학적 모양을 정의 하는 파일은 ShapeDrawable.

.NET Framework를 만드는 방법은 애니메이션 리소스 문서를 참조하세요 AnimationDrawable.

참고 : 색상 자원도로 사용할 수 있습니다 Ddrawable에서 XML. 예를 들어를 만들 때 속성 ( )에 StateListDrawable대한 색상 리소스를 참조 할 수 있습니다 .android:drawableandroid:drawable="@color/green"

비트 맵

비트 맵 이미지. Android는 .png (선호), .jpg (허용), .gif (권장)의 세 가지 형식의 비트 맵 파일을 지원합니다.

파일 이름을 리소스 ID로 사용하여 비트 맵 파일을 직접 참조하거나 XML로 별칭 리소스 ID를 만들 수 있습니다.

참고 : 비트 맵 파일은 빌드 프로세스 중에 aapt 도구에 의해 무손실 이미지 압축으로 자동 최적화 될 수 있습니다. 예를 들어 256 색 이상이 필요하지 않은 트루 컬러 PNG는 색상 팔레트가있는 8 비트 PNG로 변환 될 수 있습니다. 이렇게하면 동일한 품질의 이미지가 생성되지만 메모리가 덜 필요합니다. 따라서이 디렉토리에있는 이미지 바이너리는 빌드 중에 변경 될 수 있습니다. 비트 맵으로 변환하기 위해 이미지를 비트 스트림으로 읽으려는 경우 이미지를 res/raw/최적화되지 않는 폴더에 대신 넣으십시오 .

참고URL : https://stackoverflow.com/questions/8937036/what-is-the-difference-between-bitmap-and-drawable-in-android

반응형