2014-04-23 2 views
1

나는 비트 맵을 확장하려고 노력하고 있으며, 모든 안드로이드 폰에서 작업하길 바란다. 나는이 웹 사이트에이 코드를 보았다,하지만 난 내 응용 프로그램 :이 코드를 적용하는 방법과 위치를 확실하지 않다은 적절한 스케일링입니까?

코드 : 나는 또한이 웹 사이트에서이 코드를보고

다음
 Bitmap image1, pic1; 
     image1 = BitmapFactory.decodeResource(getResources(), R.drawable.image1); 
float xScale = (float) canvas.getWidth()/image1.getWidth(); 
      float yScale = (float) canvas.getHeight()/image1.getHeight(); 
      float scale = Math.max(xScale, yScale);  //selects the larger size to grow the images by 

      scale = (float) (scale*1.1);      //this allows for ensuring the image covers the whole screen. 

      scaledWidth = scale * image1.getWidth(); 
      scaledHeight = scale * image1.getHeight(); 

       pic1 = Bitmap.createScaledBitmap(image1, (int)scaledWidth, (int)scaledHeight, true); 

http://developer.sonymobile.com/2011/06/27/how-to-scale-images-for-your-android-application/

마지막 업데이트 2011 년

다시 것 같다 수있는 사람은 메타 설명하십시오 od는 API10 또는>와 같은 새로운 API에 더 좋습니다.

나는 지금 API19가 있다는 것을 알고 있으므로, 이것들의 새로운 버전이 있어야한다고 확신합니다.

우리와 함께 지식과 친절을 나누시겠습니까?

대단히 감사합니다.

답변

1

코드는 이미지의 크기를 조정하지만 안드로이드는 여러 가지 방법으로 할당 된 공간에 맞게 이미지 크기를 조정합니다.

link의 설명대로 폴더에 이미지를 배치하고 각 폴더의 크기가 올바른지 확인하면 시스템은 실행중인 장치에 따라 올바른 크기의 이미지를 선택합니다. 이미지에 적용 할 수있는 스케일링 매개 변수도 있습니다 (자세한 내용은 ImageView.ScaleType 참조)

또한이 link은 효율적으로 이미지를로드하여 메모리를 절약하는 방법을 설명합니다. 비동기 작업을 통해 여러 이미지를로드하는 방법뿐만 아니라 전체 크기보다 적은 메모리에 이미지를로드하는 데 매우 유용합니다.

+0

도움 주셔서 감사합니다. 처음에는 저의 목적은 ldpi, mdpi, hdpi, xhdpi, xxhdpi 폴더에 올바른 크기의 이미지를 배치하는 것이 었습니다. 그래서 코드에서 확장 할 필요가 없었습니다. 내가 겪고있는 문제는 슬라이드 쇼 앱을위한 많은 이미지가 있다는 것입니다. 즉, 내 앱의 크기가 앱에 비해 너무 큰 100MB를 초과하게됩니다. 위에 나열된 코드는 메모리 부족 문제로 인해 문제가 있습니까? 또한 코드를 어디에 배치해야합니까? 나는 멍청한 놈들의 질문에 유감이다. 고맙습니다. – Dante

+0

네, 메모리를 낮게 유지해야 할 가능성이 큽니다. 서버에 이미지를 남겨두면 앱에서 필요한 정보를 다운로드 할 수 있습니다. 대형 앱이나 이미지를 자주 변경하는 경우에 매우 일반적인 시나리오입니다. 위의 코드는 이미지를 읽고 즉시 필요한 크기로 조정해야 할 때 사용해야합니다. 위에서 언급했듯이 안드로이드와 다르게 이미지를 편집하려는 경우를 제외하고는 필요하지 않습니다. 이미지 편집 응용 프로그램이 좋은 예입니다. 사용자에게 큰 작은 이미지 선택을 표시하고 이에 따라 크기를 조정할 수 있습니다. – Martin