Не удается увеличить изображения с библиотекой просмотра фотографий
Я использую 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 ответа
Попробуйте этот код:
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.with(context)
.load(url)
.placeholder(R.drawable.user_placeholder)
.error(R.drawable.user_placeholder_error)
.into(imageView);
По этой статье
Picasso загружает изображение и сохраняет полноразмерное изображение (в моем случае разрешение изображения было 1160*750) в кеше, и всякий раз, когда мы запрашиваем одно и то же изображение, оно возвращает полноразмерное изображение и изменяет его размер, чтобы соответствовать ImageView в режиме реального времени.
С другой стороны, Glide работает по-другому. Glide загружает изображение с указанного URL, изменяет его размер до размера представления изображения и сохраняет его в кэш-памяти диска.
Вы столкнулись с проблемой масштабирования, так как Glide изменил размер изображения. Таким образом, использование Picasso может решить вашу проблему.
Попробуйте так, это поможет вам
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);
}
}