当前位置: 首页 > 知识库问答 >
问题:

不同屏幕上的Android ImageView大小

丁鸿信
2023-03-14

我正在尝试以编程方式添加ImageView,但不要在不同的屏幕上制作相同的大小。我尝试了许多比例代码,但没有任何好的结果。

屏幕:屏幕图像

这是我的代码:

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个答案

庄阿苏
2023-03-14

看起来问题不在于ImageView,而在于您添加的图像的大小。您观察到相同的图像会根据显示它的屏幕的属性而显示不同,这是正确的。然而,目标是正确显示或缩放图像位图本身,独立于ImageView的大小。

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

该属性也可以通过编程设置:

imageView.setScaleType(ImageView.SCALE_TYPE);

你应该考虑查看不同的刻度类型,看看是否适合你的需要。如果没有,在设置图像视图之前,还有其他方法可以创建缩略图或其他大小的图像

 类似资料:
  • 嘿,伙计们,我只是想问一下,当我们显示一个背景图片在我们的活动,我们把图片放在可绘制的文件夹与子不同的文件夹,像 并且每个文件夹都有一个特定的密度和尺寸,这样它就可以支持多个设备等。 我想问一下,如果我的图片尺寸是3000*3000,我是否需要为每个文件夹修改我的图片 首先,我必须修改它为720*1280的xhdpi,然后把它放在layout_xhdpi文件夹,然后我修改它为hdpi,即400*8

  • 我一直在我的5.2英寸设备(LG G2)上开发和测试我的应用程序。 我刚刚在一个更大的5.5英寸设备(OnePlus 3T)上启动了该应用程序,它看起来不太好,如下所示: 这是主要活动: 这是子项的布局xml: 我在这里做错了什么? 编辑: 我搜索了一点,找到了一个解决方案,使用以下代码动态设置GridView的最小高度: 此外,我在适配器中添加了以下代码行: 在我的例子中,我必须将屏幕高度除以2

  • 我有一个JFrame,其中包含一个面板。我还向面板添加了。到目前为止,我所做的是在我的框架上使用来对调整窗口大小做出反应。 下面是我的代码片段: 当更改框架的大小时,的大小可以完全调整。但是当我最大化我的框架,图表面板不会改变它的大小!它保持在最大化之前的时刻。因此,当我再次“取消最大化”我的框架时,图表面板被最大化,这导致了问题,图表将不再适合图表面板。所有这些调整尺寸的事情似乎都“落后一步”.

  • 我试图用swXXXdp布局文件为不同的屏幕大小创建不同的布局。不幸的是,我仍然不能分开5,0“和6,3”作为可见的附上的图像。两种大小仍然使用相同的文件:layout-sw412dp。对此有什么想法吗?

  • 简介 本文将介绍 Weex 适配不同尺寸屏幕的方法以及横竖屏动态切换时如何自适应。 Weex 如何将前端样式值转换为系统坐标值 以 iOS 为例,在应用启动时,Weex 获取当前屏幕宽度作为全局默认值。在 iOS 系统上该宽度为实际像素/屏幕比例后的 UIKit 宽度。比如 iPhone6 为 375。 @implementation WXCoreBridge + (void)install

  • 主要内容:实例,实例本章将讲解 Bootstrap 支持的另一个特性,超大屏幕(Jumbotron)。顾名思义该组件可以增加标题的大小,并为登陆页面内容添加更多的外边距(margin)。使用超大屏幕(Jumbotron)的步骤如下: 创建一个带有 class .jumbotron. 的容器 <div>。 除了更大的 <h1>,字体粗细 font-weight 被减为 200。 下面的实例演示了这点: 实例 <div