1.引入:
implementation 'io.openharmony.tpc.thirdlib:glide:1.0.3'
implementation 'io.openharmony.tpc.thirdlib:subsampling-scale-image-view:1.0.4'//加载长图
2.xml
<com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView
ohos:id="$+id:longImg"
ohos:image_src="$media:test2"
ohos:height="match_content"
ohos:layout_alignment="center"
ohos:width="match_content"/>
3.java 代码
private void initView() {
GlideUrl glideUrl = new GlideUrl(url, new LazyHeaders.Builder()
.build());
Glide.with(context)
.asBitmap()
.load(glideUrl)
.apply(new RequestOptions()
.placeholder(ResourceTable.Media_boy)
.error(ResourceTable.Media_boy)
.skipMemoryCache(true) // 不使用内存缓存
.diskCacheStrategy(DiskCacheStrategy.NONE) // 不使用磁盘缓存
)
.into(new SimpleTarget<PixelMap>() {
public void onResourceReady(PixelMap pixelMap, Transition<? super PixelMap> transition) {
longImg.setPixelMap(pixelMap);
int phoneWidth = DisplayUtils.getDisplayWidthInPx(context);
int phoneHeight = DisplayUtils.getDisplayHeightInPx(context);
Log.d("屏幕-宽度", phoneWidth + "");
Log.d("屏幕-高度", phoneHeight + "");
int picWidth = pixelMap.getImageInfo().size.width;
int picHeight = pixelMap.getImageInfo().size.height;
Log.d("图片-宽度", picWidth + "");
Log.d("图片-高度", picHeight + "");
float scaleNum = ((float) phoneWidth / (float) picWidth);
Log.d("放大比率-宽度", scaleNum + "");
//如果 图片的高度度 大于 屏幕的宽度 就把原始图片放大到屏幕的宽度 放大的比率是 手机屏幕的宽度除以图片的宽度
if (picHeight >= phoneHeight) {
Log.d("设置最小放大比率", "小====");
longImg.setMinScale(scaleNum);
}
}
});
}