【发布时间】:2021-02-07 13:20:02
【问题描述】:
我正在使用 Picasso 从这样的 URL 加载图像并将它们显示在我的 Android 应用程序中:http://image.tmdb.org/t/p/w185/A7HtCxFe7Ms8H7e7o2zawppbuDT.jpg
但是,问题在于它们显示的是原始大小的一半。我不知道为什么。
直接在浏览器中加载上面的 URL,你会得到一个 185px x 278px 的图像
我将其中一张图像保存在本地,用作调试的虚拟图像。当我使用imageView.setImageResource(R.drawable.dummyimage); 时,图像显示为正确的大小。 (对不起,我试着附上截图,但我的声望不够高。)
但是,当我使用 Picasso.with(mContext).load(mMoviePosterURL).into(imageView); 加载图像时,它们会显示为该大小的一半。 (如果可以的话,我会附上截图。)
这是我的 ImageView:
<ImageView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/grid_item_imageview"
android:src="@drawable/dummyimage">
</ImageView>
还有我的布局:
<GridView
android:id="@+id/grid_view"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:verticalSpacing="0dp"
android:horizontalSpacing="0dp"
android:stretchMode="columnWidth"
tools:context=".MainActivityFragment"
android:numColumns="auto_fit">
</GridView>
我在 BaseAdapter 中的 getView 方法的完整代码:
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
imageView = new ImageView(mContext);
} else {
imageView = (ImageView) convertView;
}
//imageView.setImageResource(R.drawable.dummyimage); for comparison
if(mMoviePosterPaths!=null) {
Picasso.with(mContext)
.load(mMoviePosterPaths[position])
.into(imageView);
}
return imageView;
}
我找到了一些解决方法。一种是这样做:.resize(185*2,278*2),但如果可能的话,我想避免放大图像。
另一种方法是从提供图像的 API 中调用更大的图像,但我觉得这效率较低,因为它需要更多数据。
四处搜索我没有找到其他人遇到这个问题,所以也许我只是在做一些愚蠢的事情,但我很难过:(
我想这里主要是我试图理解为什么imageView.setImageResource() 和Picasso {...} 显示相同的图像不同。
谢谢
【问题讨论】:
-
很不清楚你说
displaying half their original size是什么意思。它看起来更小吗?@drawable/dummyimage的大小是多少? -
只是为了确保:您知道在 Android 中我们不处理像素,而是处理 dp(与密度无关的像素)吗?
-
@Foxinsocks 我会附上截图,但我没有足够的声誉。基本上,当我在文件的本地副本上使用 setImageResource() 时,它会按预期显示。当我使用毕加索时,它看起来比预期的要小(预期大小的一半)
-
@Foxinsocks 我在这个线程上有一些截图,我也问过这个问题。谢谢discussions.udacity.com/t/…
-
@Foxinsocks
@drawable/dummyimage的大小为 185x278