[英]Android: How to determine size of an ImageView on the screen in inches
[英]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替换为布局等中的类实现
您的问题有多种解释。
ImageView
在所有设备上应该具有相同的大小 - 使用dp
。 您现在正在LayoutParams
中使用pixels
。 ImageView
应该看起来在所有屏幕上都有相同的大小 - 找到屏幕的宽度和高度,设置一个宽高比例,例如。 0.33并在LayoutParams
使用该因式宽度和高度。 MATCH_PARENT
获取宽度和高度,ImageView将采用(父级)的完整大小。 这个问题对dp
, px
, sp
有很多很好的解释,这可能有用 - “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值,请参阅此链接
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.