我想知道这两种方式中的哪一种在内存或速度方面更有效。
BitmapFactory.decodeResource
Bitmap loadedBitmap = BitmapFactory.decodeResource(this.getResources(), R.drawable.big_image);
Bitmap scaledBitmap = loadedBitmap.createScaledBitmap(loadedBitmap, 1920, 1080, false);
(BitmapDrawable)getResources().getDrawable()
Bitmap loadedBitmap = ((BitmapDrawable)getResources().getDrawable(R.drawable.big_image)).getBitmap();
Bitmap scaledBitmap = loadedBitmap.createScaledBitmap(loadedBitmap, 1920, 1080, false);
答案 0 :(得分:1)
第一种方式更好。
Bitmap loadedBitmap = BitmapFactory.decodeResource(this.getResources(), R.drawable.big_image);
Bitmap scaledBitmap = loadedBitmap.createScaledBitmap(loadedBitmap, 1920, 1080, false);
答案 1 :(得分:0)
理论上第一种方式要好得多。 原因是,
Bitmap loadedBitmap = ((BitmapDrawable)getResources().getDrawable(R.drawable.big_image)).getBitmap();
您正在尝试进行显式转换,
((BitmapDrawable)<drawable object>
这里BitmapDrawable是Drawable的一个子类,然后是一个更倾向于失败并抛出ClassCastException的Downcast。