我有一个应用程序,可以使用Facebook和google。
在HomeActivity上,我获取用户配置文件图片,并将其作为标记在谷歌地图上绘制。
public void loadProfilePicture(String picUrl, final Location location) {
Picasso.with(getActivity()).load(picUrl).into(new Target() {
@Override
public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
drawCanvas(location, bitmap);
}
@Override
public void onBitmapFailed(Drawable errorDrawable) {
}
@Override
public void onPrepareLoad(Drawable placeHolderDrawable) {
}
});
}
private void drawCanvas(Location location, Bitmap bitmap) {
photoMarker = getMap().addMarker(new MarkerOptions().position(new LatLng(location.getLatitude(), location.getLongitude()))
.icon(BitmapDescriptorFactory.fromBitmap(bitmap))
.anchor(0.5f, 1));
}我的问题是-当我在不同的设备上运行应用程序(例如OnePlusOne和三星gt-18190 )时,它会在三星gt-18190E 211设备上绘制图像更大的(奇怪的是,更小)。
我在loadProfilePicture方法中检查了loadProfilePicture,它们在铬上看起来都是相同的大小,但是在不同的设备上,不同的大小。
我做错什么了?
发布于 2016-02-04 16:56:56
三星拥有OnePlusOne像素密度的一半(~233 pixel ~401 The ),所以如果你在这两部手机上加载的位图是相同的分辨率,那么它在三星上就会显示得更大。
您可以做的是获取从Picasso返回的位图,并创建一个带有Bitmap.createScaledBitmap函数的缩放版本和一个具有某些密度独立维度的资源文件。例如:
在资源dimen.xml文件中。(使用适用于应用程序的任何dp值)
<?xml version="1.0" encoding="utf-8"?>
<resources>
<dimen name="profile_width">200dp</dimen>
<dimen name="profile_height">200dp</dimen>
</resources>在你的家庭活动中。
@Override
public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
int width = (int) getResources().getDimension(R.dimen.profile_width);
int height = (int) getResources().getDimension(R.dimen.profile_height);
drawCanvas(location, Bitmap.createScaledBitmap(bitmap, width, height, false));
}https://stackoverflow.com/questions/35206608
复制相似问题