我正在使用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'
}
答案 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);
}
}