我正在以编程方式创建多个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;
}
答案 0 :(得分:0)
您可以引入派生自ImageView的新类,并在该类中进行所有这些调整。然后将ImageView替换为布局等中的类实现
答案 1 :(得分:0)
您的问题有多种解释。
ImageView
在所有设备上的大小均应相同-请使用dp
。您正在pixels
中使用LayoutParams
。ImageView
应该在所有屏幕上都具有相同的大小-找到屏幕的宽度和高度,设置长宽比,例如。 0.33,并在LayoutParams
中使用该因子的宽度和高度。MATCH_PARENT
来设置宽度和高度,ImageView会采用(父级的)完整尺寸。这个问题对dp
,px
,sp
可能有很多有用的解释-What is the difference between "px", "dip", "dp" and "sp"?
答案 2 :(得分:0)
查找屏幕尺寸
public boolean mazeRunner(x, y) {
if (!isValidDirection) {
//TODO: output the attempt
}
maze[x][y] = 'x';
//add (x,y) to current attempt
//we need to count attempt length
if (isSolution(x, y)) {
//TODO: output the successful attempt
} else if ((
(mazeRunner(x - 1, y)) ||
(mazeRunner(x + 1, y)) ||
(mazeRunner(x, y - 1)) ||
(mazeRunner(x, y + 1))
) == false) {
//TODO: Output the current failed attempt
}
maze[x][y] = '.';
//TODO: remove (x, y) from the current attempt
}
public void startMazeRunning(char[][] maze, x, y) {
this.maze = maze;
}
然后,您可以使用此
ALLOWED_HOSTS = ["my domain", "my ip", "localhost", "127.0.0.1"]
有关所有ScaleType值,请参见此链接