web-dev-qa-db-ja.com

グライドライブラリを使用して画像をimageViewにロードしましたが、画像をピンチしてズーム可能にする方法がわかりません

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);
9
Towelie

たとえば、このライブラリを使用できます。 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も使用していることに注意してください。グライドとピンチを使用して、大きな画像の効果をズームすることをお勧めします。

そして、レイアウトは次のようになります。

<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();
}
5
K.Os

ここでPhotoViewと呼ばれるこのライブラリは非常に人気があります。
https://github.com/chrisbanes/PhotoView

13,500以上のスター、30以上の貢献者がそれを支持しており、非常に多くの人々がそれを使用しており、プロジェクトへの統合がいかに簡単であるか、それはほとんど標準のように感じます。

Glide ^。^とも互換性があります


インストールchrisbanes による公式ドキュメント)

これをルートに追加しますbuild.gradleファイル(notモジュールbuild.gradleファイル):

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

次に、ライブラリをモジュールに追加しますbuild.gradle

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

執筆時点では、latest.release.here2.1.4


使用法chrisbanes による公式ドキュメント)

より高度な方法でライブラリを使用する方法を示す sample が提供されていますが、完全を期すために、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);

それでおしまい!


使用法 グライド

何も変わらない!!

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