【发布时间】:2016-07-18 03:32:48
【问题描述】:
我有一个片段,它使用 Picasso 下载图像并将其显示在 ImageView 中。问题是图像处于纵向模式,如果手机更改为横向模式,相同的图像会被拉伸。我寻找解决方案,但我得到的一般意义是简单地将 旋转到 90 度。但这不是我想要的。我想加载两个不同的图像,即一个图像 url 将用于纵向模式,另一个将用于横向模式。我尝试检测方向变化,然后相应地加载图像。这没有奏效。在横向模式下,纵向图像也在加载。有什么建议吗?
public class FragmentOne extends Fragment{
Button next, previous;
ProportionalImageView imageView;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragmentone, container, false);
}
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
next = (Button)view.findViewById(R.id.next);
previous = (Button)view.findViewById(R.id.previous);
imageView = (ProportionalImageView)view.findViewById(R.id.image);
Picasso.with(getActivity())
.load("http://i.imgur.com/h5iwVmh.jpg")
.placeholder(R.drawable.placeholder)
.into(imageView);
next.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
((ViewPager) ((MainActivity)getActivity()).findViewById(R.id.pager)).setCurrentItem(1);
}
});
previous.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
((ViewPager) ((MainActivity)getActivity()).findViewById(R.id.pager)).setCurrentItem(-1);
}
});
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
// Checks the orientation of the screen
if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
Picasso.with(getActivity())
.load("http://i.imgur.com/H0IXUy0.jpg")
.placeholder(R.drawable.placeholder)
.into(imageView);
} else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){
Picasso.with(getActivity())
.load("http://i.imgur.com/h5iwVmh.jpg")
.placeholder(R.drawable.placeholder)
.into(imageView);
}
}
}
【问题讨论】:
-
你检查过你的 onConfigurationChanged 是否被解雇了吗?并且代码流程正确
-
纵向效果很好。当我尝试将模式更改为横向时,它仍会加载纵向图像 url。
-
你能不能在
onConfigurationChanged里面的if else写一些logcat来检查应用检测到正确的方向 -
是的。我使用 Toast 进行了检查。它被解雇了。
-
请试试我的回答
标签: android screen-orientation picasso