无法使用photoview库缩放图像

时间:2017-10-03 04:36:21

标签: java android xml pinchzoom android-photoview

我正在使用here中的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'
}

3 个答案:

答案 0 :(得分: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);
                        }
                    });

答案 1 :(得分:0)

尝试使用Picasso库。

<CATEGORY name="Hidden Types Category" refname="Microsoft.HiddenCategory">  
    <DEFAULTWORKITEMTYPE name="Code Review Request" />  
    <WORKITEMTYPE name="Code Review Response" />  
    <WORKITEMTYPE name="Feedback Request" />  
    <WORKITEMTYPE name="Feedback Response" />  
    <WORKITEMTYPE name="Shared Steps" />  
    <WORKITEMTYPE name="Shared Parameter" />  
    <WORKITEMTYPE name="Test Plan" />  
    <WORKITEMTYPE name="Test Suite" />  
  </CATEGORY>  

根据this文章

  

Picasso下载图像并存储全尺寸图像(在我的情况下)   每当我们询问时,缓存中的图像分辨率为1160 * 750)   对于同一图像,它将返回全尺寸图像并调整它们的大小   实时适应ImageView。

     

另一方面,Glide的工作方式不同。 Glide下载图像   从给定的URL,将其大小调整为图像视图和存储的大小   它到磁盘缓存。

当Glide调整图像大小时,您将面临缩放问题。所以使用毕加索可能会解决你的问题。

答案 2 :(得分:0)

尝试这种方式,它会帮助你

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