我使用Glide库将图像加载到imageView中,但我不知道如何使图像可缩放。

14
public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);


    //Variables
    ImageView imageView;
    imageView = (ImageView) findViewById(R.id.imageView);

    //Loading into ImageView
    Glide.with(this)
            .load("http://vrijeme.hr/bradar.gif")
            .into(imageView);
}

我也试过使用 Picasso 库,并将其与 PhotoView 库连接,但它没有做任何事情。当我尝试用捏合手势缩放时,它根本不会缩放,这是部分代码:

ImageView imageView;
PhotoViewAttacher photoView;

imageView = (ImageView) findViewById(R.id.imageView);
photoView = new PhotoViewAttacher(imageView);
Picasso.with(this)
       .load("link")
       .resize(1080,80)
       .into(imageView);
2个回答

22

这个叫做PhotoView的库非常流行。
https://github.com/chrisbanes/PhotoView

拥有13,500+颗星,30+贡献者支持,如此众多的用户使用它,而且很容易集成到项目中,几乎可以视为标准。

它还与Glide兼容 ^.^


安装(由chrisbanes提供的官方文档)

将以下内容添加到您的根build.gradle文件中(不是您的模块build.gradle文件):

allprojects {
    repositories {
        maven { url "https://jitpack.io" }
    }
}

然后,在您的模块build.gradle文件中添加库。

dependencies {
    implementation 'com.github.chrisbanes:PhotoView:latest.release.here'
}

在撰写本文时,latest.release.here 的版本为 2.1.4


用法(由chrisbanes官方文档提供)

虽然有示例展示了如何更高级地使用该库,但为了完整起见,在此提供使用PhotoView所需的全部内容:

<com.github.chrisbanes.photoview.PhotoView
    android:id="@+id/photo_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent"/>
PhotoView photoView = (PhotoView) findViewById(R.id.photo_view);
photoView.setImageResource(R.drawable.image);

就是这样!


Glide 一起使用

没有任何变化!!

PhotoView photoView = (PhotoView) findViewById(R.id.photo_view);
Glide.with(this).load(imageUrl).into(photoView);

3
或许这是广告,但至少它与Glide搭配使用效果很好。不错。 - Meow Cat 2012
1
这是一个很棒的框架,它能够节省好几天的时间。我认为这才是更加正确的答案 :) - Arun Kumar P

6
你可以使用这个库,例如: https://github.com/MikeOrtiz/TouchImageView 将你的图片加载到这个小部件中,而不是 ImageView。
示例用法:
private TouchImageView mContentView;
private private SimpleTarget target;

mContentView = (TouchImageView) findViewById(R.id.fullscreen_content);

target = new SimpleTarget<Bitmap>() {
        @Override
   public void onResourceReady(Bitmap bitmap, GlideAnimation glideAnimation) 
{
            // do something with the bitmap
            // for demonstration purposes, let's just set it to an ImageView
            mContentView.setImageBitmap(bitmap);
        }
    };



    Glide.with(this) // could be an issue!
            .load( imagePath )
            .asBitmap()
            .into(target);

请注意,我首先使用了SimpleTarget,这是使用Glide和pinch to zoom效果处理大图像的好方法。
布局将如下所示:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.FullscreenActivity">


<com.yourPath.TouchImageView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/fullscreen_content"/>

</FrameLayout>

有时在设置后加载图片会出现问题。对我而言,解决方法如下:覆盖TouchImageView类中的方法:

@Override
public void setImageBitmap(Bitmap bm) {
    imageRenderedAtLeastOnce = false;
    super.setImageBitmap(bm);
    savePreviousImageValues();
    fitImageToView();
}

我在我的自定义可缩放图像视图类的“setImageBitmap”方法中添加了“imageRenderedAtLeastOnce = false;”,现在它运行良好。感谢@Konrad... - varotariya vajsi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接