Skip to content

Instantly share code, notes, and snippets.

@wyon
Created January 25, 2016 08:40
Show Gist options
  • Select an option

  • Save wyon/f2cf8266c591fd90b066 to your computer and use it in GitHub Desktop.

Select an option

Save wyon/f2cf8266c591fd90b066 to your computer and use it in GitHub Desktop.
android中如何使用一张图片适配不同尺寸的APP引导页(http://blog.csdn.net/sahadev_/article/details/48475217)
private static void scaleImage(final Activity activity, final View view, int drawableResId) {
// 获取屏幕的高宽
Point outSize = new Point();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB_MR2) {
activity.getWindow().getWindowManager().getDefaultDisplay().getSize(outSize);
} else {
outSize.x = activity.getWindow().getWindowManager().getDefaultDisplay().getWidth();
outSize.y = activity.getWindow().getWindowManager().getDefaultDisplay().getHeight();
}
// 解析将要被处理的图片
Bitmap resourceBitmap = BitmapFactory.decodeResource(activity.getResources(), drawableResId);
if (resourceBitmap == null) {
return;
}
// 开始对图片进行拉伸或者缩放
// 使用图片的缩放比例计算将要放大的图片的高度
int bitmapScaledHeight = Math.round(resourceBitmap.getHeight() * outSize.x * 1.0f / resourceBitmap.getWidth());
// 以屏幕的宽度为基准,如果图片的宽度比屏幕宽,则等比缩小,如果窄,则放大
final Bitmap scaledBitmap = Bitmap.createScaledBitmap(resourceBitmap, outSize.x, bitmapScaledHeight, false);
view.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
// 当UI绘制完毕,我们对图片进行处理
int viewHeight = view.getMeasuredHeight();
// 计算将要裁剪的图片的顶部以及底部的偏移量
int offset = (scaledBitmap.getHeight() - viewHeight) / 2;
// 对图片以中心进行裁剪,裁剪出的图片就是非常适合做引导页的图片了
Bitmap finallyBitmap = Bitmap.createBitmap(scaledBitmap, 0, offset, scaledBitmap.getWidth(),
scaledBitmap.getHeight() - offset * 2);
// 设置图片显示
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
view.setBackground(new BitmapDrawable(activity.getResources(), finallyBitmap));
} else {
view.setBackgroundDrawable(new BitmapDrawable(activity.getResources(), finallyBitmap));
}
}
});
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment