Android ImageView大小在不同的屏幕上

时间:2014-07-07 20:11:46

标签: android imageview

我正在尝试以编程方式添加imageView,但不要在不同的屏幕中使用相同的大小。我尝试了很多比例代码,但没有任何好的结果。

屏幕:screens' image

这是我的代码:

public class Explore extends Fragment {

  public View onCreateView(LayoutInflater inflater, ViewGroup container, 
                           Bundle savedInstanceState){
    View view = inflater.inflate(R.layout.tab, container, false);

    LinearLayout linearLayout= new LinearLayout(getActivity());
    linearLayout.setOrientation(LinearLayout.VERTICAL);

    linearLayout.setLayoutParams(new LayoutParams(
            LayoutParams.WRAP_CONTENT,
            LayoutParams.WRAP_CONTENT));

    final float scale = view.getContext().getResources().getDisplayMetrics().density;

    int width = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 250, getResources().getDisplayMetrics());
    int height = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 82, getResources().getDisplayMetrics());

    int lastWidth = (int) (width * scale + 0.5f);
    int lastHeight = (int) (height * scale + 0.5f);

    ImageView imageView = new ImageView(getActivity());
    UrlImageViewHelper.setUrlDrawable(imageView, "https://example.com/example.jpg");

    LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(lastWidth, lastHeight);
    imageView.setLayoutParams(lp);


    linearLayout.addView(imageView);

    return linearLayout;
  }

}

1 个答案:

答案 0 :(得分:0)

看起来问题不是ImageView,而是您要添加的图片的大小。您可以正确地观察到相同的图像将根据显示它的屏幕属性的不同而显示。然而,目标是正确显示或缩放图像位图本身,与ImageView的大小无关。

例如,如果您要使用XML添加此ImageView,则会有一个称为android:scaleType的属性,该属性控制图像在ImageView中的显示方式。根据此属性的设置方式,ImageView将保留所需的大小,但缩放内容以适合其范围。

此属性也可以是set programatically

imageView.setScaleType(ImageView.SCALE_TYPE);

您应该考虑查看不同的比例类型,看看是否符合您的需求。如果没有,在设置ImageView之前还有其他方法create thumbnail或替代尺寸的图片