Android アプリの拡張ファイルを実装中です。
これまでのところ、いくつかの画像と音声ファイルをメイン拡張ファイルに配置しました (パッチ拡張ファイルは使用していません)。どのファイルも圧縮されていません。
アプリから拡張ファイルをダウンロードし、音声ファイルを問題なく再生できます。拡張ファイルの音声ファイルが再生されると同時に、拡張ファイルの画像も表示されます。ただ、画像は思ったよりかなり小さいです。
画像は320x400pxです。拡張ファイルを実装する前は、アプリで期待どおりに表示されていました。しかし、実装後は横幅50px程度(高さも比例して縮小)に縮小されたように見えます。
次に、サイズを変更せずにストリームからドローアブルを作成する方法で提供されているソリューションを試しました。画像はわずかに大きく見えますが、それでも私が望むものよりもはるかに小さいです (現在は約 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
}
画像が実際のサイズで表示されていないように見えます。拡張ファイル内の画像を調べると、まだ 320x400px であることがわかります。ただし、アプリはこれらのサイズで画像を表示していません。
アプリに正しいサイズで画像を表示させるにはどうすればよいですか?
ありがとう!
- -アップデート - -
以下のコードも試しましたが、結果に違いはありませんでした。元のサイズの 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);
}
これまでに機能した唯一のことは、Bitmap.createScaledBitmap(b, bWidth, bHeight, true);
私の携帯電話では、上記の方法を使用して画像の元のサイズを 2 倍 (640x800 ピクセル) にすると、画像が予想されるサイズになりますが、別の携帯電話では画像が異なるサイズで表示される可能性があると思います (おそらく画面の密度/サイズのため)。 )。特大画像のサイズを 2 倍にしてタブレットで表示すると、画像が本来よりも大きく表示されます。