/** * This is a screen density aware alternative to {@link #setMaxScale(float)}; it allows you to express the maximum * allowed scale in terms of the minimum pixel density. This avoids the problem of 1:1 scale still being * too small on a high density screen. A sensible starting point is 160 - the default used by this view. * @param dpi Source image pixel density at maximum zoom. */ public final void setMinimumDpi(int dpi) { DisplayMetrics metrics = getResources().getDisplayMetrics(); float averageDpi = (metrics.xdpi + metrics.ydpi)/2; setMaxScale(averageDpi/dpi); }
mImageView.setMaxScale(Math.max(defaultMaxScale, maxScale * 1.2F)); } else {
view.setMinimumDpi(50); } else { view.setMaxScale(2F);
/** * This is a screen density aware alternative to {@link #setMaxScale(float)}; it allows you to express the maximum * allowed scale in terms of the minimum pixel density. This avoids the problem of 1:1 scale still being * too small on a high density screen. A sensible starting point is 160 - the default used by this view. * @param dpi Source image pixel density at maximum zoom. */ public final void setMinimumDpi(int dpi) { DisplayMetrics metrics = getResources().getDisplayMetrics(); float averageDpi = (metrics.xdpi + metrics.ydpi)/2; setMaxScale(averageDpi/dpi); }
private SubsamplingScaleImageView getLongImageView(ImageSource imageSource, File file, int orientation, float hScale) { SubsamplingScaleImageView imageView = new SubsamplingScaleImageView(this); if (orientation == 1) {//纵向图 imageView.setMinimumScaleType(SubsamplingScaleImageView.SCALE_TYPE_CENTER_CROP); imageView.setImage(imageSource, new ImageViewState(0, new PointF(0, 0), SubsamplingScaleImageView.ORIENTATION_0)); } else {//横向长图 if (file != null) { //因为这里展示的是原图,不是经过fresco压缩的bitmap,这里拿到图片的原始宽高,从新计算最大缩放比 hScale = screenHeight / BitmapUtil.getImageSize(file.getAbsolutePath())[1]; } imageView.setMaxScale(hScale); imageView.setImage(imageSource); } imageView.setOnClickListener(onClickListener); //图片下载完成并且开启图片保存才给长按保存 imageView.setOnLongClickListener(this); return imageView; }
/** * 加载超长图 */ private SubsamplingScaleImageView loadLongPhoto(File file, int orientation, int hScale) { SubsamplingScaleImageView imageView = new SubsamplingScaleImageView(this); imageView.setOnClickListener(onClickListener); imageView.setBackgroundColor(getResources().getColor(android.R.color.black)); if (file != null && file.exists()) { if (orientation == 1) {//纵向图 imageView.setMinimumScaleType(SubsamplingScaleImageView.SCALE_TYPE_CENTER_CROP); imageView.setImage(ImageSource.uri(file.getAbsolutePath()), new ImageViewState(0, new PointF(0, 0), SubsamplingScaleImageView.ORIENTATION_0)); } else { imageView.setMaxScale(hScale); imageView.setImage(ImageSource.uri(file.getAbsolutePath())); } } else { imageView.setImage(ImageSource.resource(R.mipmap.failure_image)); } return imageView; }