Bitmap은 메모리에 얼마나 많이 로드됩니까?

1112 단어
android 핸드폰 화면 밀도 레벨과 화면 논리 사이즈
  • 논리 픽셀 밀도는rom 제조업체가 설정한 값으로 실제 화면 밀도가 가장 가까운 화면 밀도 등급에 대응하는 값을 취한다.getResources().getDisplayMetrics().densityDpi에서 이 값을 얻을 수 있습니다
  • .
    사진 한 장이 도대체 차지하는 메모리는 얼마나 됩니까?
    private int sizeOf(Bitmap value) {
        return value.getRowBytes() * value.getHeight();
    }
    

    이 방법을 통해 비트맵이 실행될 때 얼마나 많은 메모리를 차지하는지 알 수 있습니다.
    사진 한 장 주세요. 메모리 사용량이 얼마나 되는지 알려드릴게요.
    //      
    int inTargetDensity = getResources().getDisplayMetrics().densityDpi;
    
    int scaleWidth = (int) (500f * inTargetDensity / densityDpi + 0.5);
    int scaleHeight = (int) (645f * inTargetDensity / densityDpi + 0.5);
    int memory = scaleWidth * scaleHeight * 4;
    
  • 그 중에서densityDpi는 그림이 넣은 폴더와 관련이 있고mdpi는 160이다.hdpi 240;xhdpi 320;xxhdpi는 480;xxxdpi는 640입니다.

  • 총결산
    사실 앞의 코드 추적을 통해 Bitmap이 메모리에서 차지하는 크기는 다음과 같습니다.
  • 색채 형식, 앞에서 언급한 바와 같이 ARGB8888이라면 픽셀 4바이트, RGB565라면 2바이트
  • 원본 파일에 저장된 자원 디렉터리(hdpi인지 xxhdpi인지 헷갈리면 안 돼)
  • 목표 화면의 밀도(따라서 같은 조건에서 붉은 쌀이 자원에 소모하는 메모리는 삼성S6보다 작을 것이다)
  • 참고 자료
    안드로이드 개발이 돌이킬 수 없는 구덩이: 당신의 비트맵은 도대체 얼마나 큰 메모리를 차지합니까?

    좋은 웹페이지 즐겨찾기