簡體   English   中英

無法使用Photoview庫縮放圖像

[英]not able to zoom images with photoview library

我從這里開始使用PhotoView庫。 它沒有給出任何錯誤,但我無法縮放圖像。 嘗試縮放圖像沒有任何build.gradle也沒有任何錯誤。 我該如何解決?

FullImageActivity.java

public class FullImageActivity extends AppCompatActivity {
    int position;
    int folderPosition;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_full_image);
        Intent i = getIntent();
        PhotoView photoView = (PhotoView) findViewById(R.id.photo_view);


        // Selected image id
        position = i.getExtras().getInt("id");
        folderPosition = i.getExtras().getInt("folderPosition");
        Bundle extras = getIntent().getExtras();
        String value = extras.getString("abc");

        Glide.with(FullImageActivity.this)
                .load(value)
                .skipMemoryCache(false)
                .into(photoView);

        ViewPager mViewPager = (ViewPager) findViewById(R.id.viewpager);
        mViewPager.setAdapter(new TouchImageAdapter(this,al_images, folderPosition));
        mViewPager.setCurrentItem(position);
    }
}

activity_full_image.xml:

<?xml version="1.0" encoding="utf-8"?>

     <LinearLayout
         xmlns:android="http://schemas.android.com/apk/res/android"
         android:id="@+id/jazzy_pager"
         android:layout_width="match_parent"
         android:layout_height="match_parent">


     <android.support.v4.view.ViewPager
         android:id="@+id/viewpager"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content" />

     <com.github.chrisbanes.photoview.PhotoView
         android:id="@+id/photo_view"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
         android:layout_gravity="center"
         android:scaleType="centerCrop"/>


</LinearLayout>

build.gradle:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 25
    buildToolsVersion '25.0.3'
    defaultConfig {
        applicationId "com.example.dell_1.Myapp3"
        minSdkVersion 14
        targetSdkVersion 25
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    sourceCompatibility = '1.7'
    targetCompatibility = '1.7'

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    productFlavors {
    }
}


dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile 'com.android.support:appcompat-v7:25.3.1'
    compile 'com.android.support.constraint:constraint-layout:1.0.0-alpha7'
    compile 'com.android.support:support-annotations:25.3.1'
    compile 'com.ss.bannerslider:bannerslider:1.8.0'
    compile 'com.github.chrisbanes:PhotoView:2.0.0'
    compile 'com.github.barteksc:android-pdf-viewer:2.7.0-beta.1'
    compile 'com.github.bumptech.glide:glide:3.8.0'
    compile 'com.android.support:design:25.3.1'
    compile 'com.android.support:support-v4'
    compile 'com.squareup.picasso:picasso:2.3.2'
    compile 'com.nineoldandroids:library:2.4.0'
    compile 'com.daimajia.slider:library:1.1.5@aar'
    testCompile 'junit:junit:4.12'
    compile 'org.jetbrains:annotations-java5:15.0'
}

試試這個代碼:

  Glide.with(FullImageActivity.this)
                    .load(value)
                    .asBitmap()
                    .diskCacheStrategy(DiskCacheStrategy.SOURCE)
                    .into(new SimpleTarget<Bitmap>() {
                        @Override
                        public void onResourceReady(Bitmap resource, GlideAnimation<? super Bitmap> glideAnimation) {
                            photoView.setImageBitmap(resource);
                        }
                    });

嘗試使用Picasso庫。

Picasso.with(context)
    .load(url)
    .placeholder(R.drawable.user_placeholder)
    .error(R.drawable.user_placeholder_error)
    .into(imageView);

根據這篇文章

畢加索下載圖像並將完整尺寸的圖像(在我的情況下,圖像分辨率為1160 * 750)存儲在緩存中,每當我們要求相同的圖像時,它將返回完整尺寸的圖像並調整其大小以適合實時ImageView。

另一方面,Glide的工作方式有所不同。 Glide從給定的URL下載圖像,將其調整為圖像視圖的大小並將其存儲到磁盤緩存中。

隨着Glide調整圖像大小,您正面臨縮放問題。 因此,使用畢加索可能會解決您的問題。

嘗試這種方式,對您有幫助

public class ImageView_Main extends Activity {
private ImageViewTouch ivLargeImage;
private Bitmap myBitmap;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.image_view);
ivLargeImage = (ImageViewTouch) findViewById(R.id.ivLargeImageView);

// if image size is too large.Then scale image.
BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;

                // provide image path for create Bitmap from image.
                // myBitmap = BitmapFactory.decodeFile( //provide here image file path//);
//Or
myBitmap = BitmapFactory.decodeResource(//provider here resource //);

if (options.outWidth > 3000 || options.outHeight > 2000) {
options.inSampleSize = 4;
} else if (options.outWidth > 2000 || options.outHeight > 1500) {
options.inSampleSize = 3;
} else if (options.outWidth > 1000 || options.outHeight > 1000) {
options.inSampleSize = 2;
}
options.inJustDecodeBounds = false;

myBitmap = BitmapFactory.decodeResource//provider here resource //);
ivLargeImage.setImageBitmapReset(myBitmap, 0, true);
   }
}

http://www.theappguruz.com/blog/android-pinch-zoom

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM