繁体   English   中英

Android以编程方式添加imageview修复所有屏幕的大小

[英]Android add imageview programmatically fix size all screen

我正在以编程方式创建多个ImageView,但我遇到了一个问题,即在不同的显示器上有不同的ImageView大小。 我希望在所有屏幕上修复ImageView大小。 以下是我生成这些ImageView的方法:

for (int i = 0; i < myImageList.size(); i++) {
    ImageView iv = new ImageView(this);
    iv.setImageResource(myImageList.get(i));
    FrameLayout.LayoutParams lp = new FrameLayout.LayoutParams(420, 210);
    lp.gravity = Gravity.CENTER;
    iv.setLayoutParams(lp);
    float angleDeg = i * 360.0f / myImageList.size() - 70.0f;
    float angleRad = (float) (angleDeg * Math.PI / 180.0f);
    iv.setTranslationX(320 * (float) Math.cos(angleRad));
    iv.setTranslationY(320 * (float) Math.sin(angleRad));
    iv.setRotation(angleDeg + 80.0f);
    main.addView(iv);
    final int finalI = i;
}

您可以引入从ImageView派生的新类,并在该类中进行所有这些调整。 然后只需将ImageView替换为布局等中的类实现

您的问题有多种解释。

  1. ImageView在所有设备上应该具有相同的大小 - 使用dp 您现在正在LayoutParams中使用pixels
  2. ImageView应该看起来在所有屏幕上都有相同的大小 - 找到屏幕的宽度和高度,设置一个宽高比例,例如。 0.33并在LayoutParams使用该因式宽度和高度。
  3. 在LayoutParams中使用MATCH_PARENT获取宽度和高度,ImageView将采用(父级)的完整大小。

这个问题对dppxsp有很多很好的解释,这可能有用 - “px”,“dip”,“dp”和“sp”之间有什么区别?

查找屏幕尺寸

    DisplayMetrics metrics = new DisplayMetrics();
    getWindowManager().getDefaultDisplay().getMetrics(metrics);
    // these are sizes in pixels
    metrics.widthPixels, metric.heightPixels

然后,你可以使用它

iv.setScaleType(ImageView.ScaleType.FIT_XY);

有关所有ScaleType值,请参阅此链接

Android ImageView ScaleType:可视指南

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM