Imageloader7-获取图片需要显示的大小
生活随笔
收集整理的這篇文章主要介紹了
Imageloader7-获取图片需要显示的大小
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
說一下通過線程加載圖片的過程:
第一步 根據ImageView獲得適當的壓縮的寬和高
因為要獲取到壓縮的寬和高,方法只能返回一個值,所以我們可以采用內部類的方式將寬和高設置為變量,返回此類的對象即可。
/*** 壓縮的寬和高*/private class ImageSize{int width ;int height;}計算壓縮的寬和高的方法
/*** 根據imageView獲取適當的壓縮的寬和高* @param imageView*/private ImageSize getImageViewSize(ImageView imageView) {ImageSize imageSize = new ImageSize();final DisplayMetrics displayMetrics = imageView.getContext().getResources().getDisplayMetrics();final ViewGroup.LayoutParams params = imageView.getLayoutParams();int width = params.width == ViewGroup.LayoutParams.WRAP_CONTENT ? 0 : imageView.getWidth(); // Get actual image widthif (width <= 0)width = params.width; // Get layout width parameterif (width <= 0)width = getImageViewFieldValue(imageView, "mMaxWidth"); // Check maxWidth parameterif (width <= 0)width = displayMetrics.widthPixels;int height = params.height == ViewGroup.LayoutParams.WRAP_CONTENT ? 0 : imageView.getHeight(); // Get actual image heightif (height <= 0)height = params.height; // Get layout height parameterif (height <= 0)height = getImageViewFieldValue(imageView, "mMaxHeight"); // Check// maxHeight// parameterif (height <= 0)height = displayMetrics.heightPixels;imageSize.width = width;imageSize.height = height;return imageSize;} /*** 為了兼容低版本,沒有采用@Target()的方式* 反射獲得ImageView設置的最大寬度和高度** @param object* @param fieldName* @return*/private static int getImageViewFieldValue(Object object, String fieldName){int value = 0;try{Field field = ImageView.class.getDeclaredField(fieldName);**field.setAccessible(true);**int fieldValue = (Integer) field.get(object);if (fieldValue > 0 && fieldValue < Integer.MAX_VALUE){value = fieldValue;Log.e("TAG", value + "");}} catch (Exception e){}return value;}總結
以上是生活随笔為你收集整理的Imageloader7-获取图片需要显示的大小的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ListView使用技巧-更新中
- 下一篇: Imageloader8-压缩图片