Android 앱의 확장 파일을 구현하는 중입니다.Android 확장 파일의 이미지가 너무 작게 표시됩니다.
지금까지 필자는 주 확장 파일에 여러 개의 이미지 및 오디오 파일을 배치했습니다 (패치 확장 파일을 사용하지 않습니다). 파일 중 압축 된 파일이 없습니다.
앱을 통해 확장 파일을 다운로드하고 아무런 문제없이 오디오 파일을 재생할 수 있습니다. 확장 파일의 오디오 파일이 재생되는 동시에 확장 파일의 이미지가 표시됩니다. 그러나 이미지는 예상보다 훨씬 작습니다.
이미지는 320x400 픽셀입니다. 확장 파일을 구현하기 전에 내 응용 프로그램에 예상대로 표시되었습니다. 그러나 구현 후에는 이미지가 약 50 픽셀 너비로 축소되었습니다 (높이가 축소됨).
그런 다음 How to create a drawable from a stream without resizing it에 제공된 솔루션을 시도했습니다. 이미지가 약간 큰 것처럼 보이지만, 원하는 이미지보다 훨씬 작습니다 (현재 약 100x125 픽셀 인 것처럼 보입니다). 현재 이미지를 표시하는 코드는 다음과 같습니다.
public void displayImageFromExpansionFile(){
Bitmap b = BitmapFactory.decodeStream(fileStream);
b.setDensity(Bitmap.DENSITY_NONE);
Drawable d = new BitmapDrawable(this.getResources(), b);
imageToDisplay.setImageDrawable(d);
}
public void showImg(int imgNum){
switch(imgNum){
case(1):
try{
if((getResources().getConfiguration().screenLayout &
Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_SMALL){
fileStream = expansionFile.getInputStream("filepath inside expansion file for small image");
}
else if((getResources().getConfiguration().screenLayout &
Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_NORMAL){
fileStream = expansionFile.getInputStream("filepath inside expansion file for normal image");
}
else if((getResources().getConfiguration().screenLayout &
Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_LARGE){
fileStream = expansionFile.getInputStream("filepath inside expansion file for large image");
}
else{
fileStream = expansionFile.getInputStream("filepath inside expansion file for xlarge image");
}
displayImageFromExpansionFile();
} catch (Exception e) {
e.printStackTrace();
}
break;
// more cases here
}
이미지가 실제 크기로 표시되지 않는 것 같습니다. 확장 파일 내부의 이미지를 살펴보면 여전히 320x400 픽셀임을 알 수 있습니다. 그러나 앱은 이러한 크기로 이미지를 표시하지 않습니다.
앱이 올바른 크기로 이미지를 표시하도록하려면 어떻게해야합니까?
감사합니다.
--- UPDATE ---
는 또한 결과에 어떠한 차이, 아래의 코드를 시도했습니다. 원래 크기와 같이 여전히 320x400 픽셀이 아닌 약 100x125 픽셀로 보입니다. 지금까지 일한 것
public void displayImageFromExpansionFile(int bWidth, int bHeight){
BitmapFactory.Options bfo = new BitmapFactory.Options();
bfo.inPreferredConfig = Bitmap.Config.ARGB_8888;
Bitmap b = BitmapFactory.decodeStream(fileStream, null, bfo);
b.setDensity(Bitmap.DENSITY_NONE);
imageToDisplay.setImageBitmap(b);
}
유일한 것은 예상 된 크기로 이미지를 위의 방법을 제공하여 (640x800 픽셀로) 이미지의 원래 크기를 두 배로, 내 휴대 전화에 Bitmap.createScaledBitmap(b, bWidth, bHeight, true);
,하지만 난 것 이미지가 다른 휴대폰에서 다른 크기로 나타날 수 있다고 상상해보십시오 (아마도 화면 밀도/크기로 인해). xlarge 이미지 크기를 두 배로 늘리고 태블릿에서 볼 때 이미지가 더 커야합니다.