ITPub博客

首页 > 应用开发 > Java > 视频聊天app源码Android 加载长图

视频聊天app源码Android 加载长图

原创 Java 作者:zhibo系统开发 时间:2020-07-29 14:21:27 0 删除 编辑

使用库


implementation 'com.davemorrissey.labs:subsampling-scale-image-view:3.5.0'


注意:不要放在ScrollView中,不然滑动可能会冲突。


那么加载长图时,如何按宽度填充呢?


<com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView
        android:id="@+id/imageView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:panEnabled="false"
        app:quickScaleEnabled="true"
        app:zoomEnabled="false" />

//下载图片保存到本地
        Glide.with(this)
                .load(sUrl).downloadOnly(new SimpleTarget<File>() {
            @Override
            public void onResourceReady(File resource, GlideAnimation<? super File> glideAnimation) {
                // 将保存的图片地址给SubsamplingScaleImageView,这里注意设置ImageViewState设置初始显示比例
                imageView.setMinimumScaleType(SubsamplingScaleImageView.SCALE_TYPE_CENTER_CROP);
                imageView.setMinScale(getFitWidthScale(resource));//最小显示比例
                imageView.setMaxScale(getFitWidthScale(resource));//最大显示比例(太大了图片显示会失真,因为一般微博长图的宽度不会太宽)
                imageView.setImage(ImageSource.uri(Uri.fromFile(resource)), new ImageViewState(getFitWidthScale(resource), new PointF(0, 0), 0));
            }
        });



// 计算缩放比例
    private float getFitWidthScale(File file) {
        WindowManager wm = this.getWindowManager();
        float windowWidth = wm.getDefaultDisplay().getWidth();
        return windowWidth / getImageWidth(file);
    }
    private float getImageWidth(File file) {
        BitmapFactory.Options options = new BitmapFactory.Options();
        options.inJustDecodeBounds = true;
        BitmapFactory.decodeFile(file.getAbsolutePath(), options);
        return options.outWidth;
    }


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/69978258/viewspace-2707738/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2020-07-02

  • 博文量
    599
  • 访问量
    231204