Created
January 25, 2016 08:40
-
-
Save wyon/f2cf8266c591fd90b066 to your computer and use it in GitHub Desktop.
android中如何使用一张图片适配不同尺寸的APP引导页(http://blog.csdn.net/sahadev_/article/details/48475217)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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