我对android中图像的处理有很多疑问,我希望看看你是否可以解决它们。
此时我的图像占用320 dp高,match_parent宽度约占屏幕的60%。 这张载有Glide的图片,我个人的1080张图片。
我尝试制作centroCrop和fitXY,但总是使图像变形。我所知道的第一种类型会切割图像,但第二种类型适合大小,但它会使图像变形或变宽。
有没有办法,用Glide插入并按原样看到它? 我可以在ImageView和Glide中使用哪些属性?
<ImageView
android:id="@+id/img"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:nestedScrollingEnabled="false"
app:layout_collapseMode="parallax"
android:scaleType="fitXY"
app:layout_scrollFlags="scroll|enterAlways" />
答案 0 :(得分:25)
Override
的最新版本中通过RequestOptions
访问 Glide 4.x
。您可以通过RequestOptions
apply()
Glide
.with(context)
.load(path)
.apply(new RequestOptions().override(600, 200))
.into(imageViewResizeCenterCrop);
答案 1 :(得分:3)
在滑行4.x中,“替代”位于“应用”中:
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=en_US.UTF-8
答案 2 :(得分:2)
Glide
.with(context)
.load(path)
.override(600, 200)
.centerCrop()
.into(imageViewResizeCenterCrop);
@Raghunandan是对的。你应该尝试按照自己的方式进行改造。
答案 3 :(得分:0)
如果你想在不使用滑行的情况下加载图像,那么你可以使用scaleType&#34; fitCenter&#34;或&#34; centerInside&#34;如下 -
<ImageView
android:id="@+id/img"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:nestedScrollingEnabled="false"
app:layout_collapseMode="parallax"
android:scaleType="centerInside"
app:layout_scrollFlags="scroll|enterAlways" />
使用Glide,你可以使用覆盖(w,h)。当您使用override(w,h)时,glide会生成一个新的位图,其宽度和高度在override(w,h)中提到,然后将图像加载到ImageView中。您可以使用fitCenter()来对齐图像。您也可以使用diskCacheStrategy()。如果你不使用它,Glide将只捕获新生成的位图。如果你想捕获原始图像,那么使用diskCacheStrategy(DiskCacheStrategy.ALL)。
Glide.with(context)
.load(image_path)
.override(800, 400)
.fitCenter()
.diskCacheStrategy(DiskCacheStrategy.ALL)
.into(imageView)
我希望这会有所帮助。
答案 4 :(得分:0)
您必须对imageview进行以下操作:
<ImageView
android:id="@+id/img"
android:layout_width="match_parent"
android:layout_height="200dp"
android:scaleType="fitCenter" />
,这与您的滑行:
Glide.with(getBaseContext())
.load(path)
//.placeholder(R.drawable.drawable)
.error(R.drawable.noimg)
.animate(R.anim.animation_fade_in)
.into(mImageView);
这对我来说很完美。
答案 5 :(得分:0)
Glide 4.x-如果要获取位图,请尝试:
Glide.with(mContext).asBitmap().
load(pictureUri)
.apply(new RequestOptions().override(50, 50))
.listener(new RequestListener<Bitmap>() {
@Override
public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Bitmap> target, boolean isFirstResource) {
return false;
}
@Override
public boolean onResourceReady(Bitmap resource, Object model, Target<Bitmap> target, DataSource dataSource, boolean isFirstResource) {
// resource is your loaded Bitmap
imgView.setImageBitmap(resource);
return true;
}
}).submit();