【发布时间】:2018-01-07 02:40:32
【问题描述】:
【问题讨论】:
-
你好阿米特你可以试试这个。 stackoverflow.com/questions/22144690/…
-
您好 Deepak,感谢您的回答,但我需要在一个布局内我已经尝试过,但它对我没有帮助,谢谢您的帮助
标签: android android-relativelayout
【问题讨论】:
标签: android android-relativelayout
在这种情况下,您应该考虑使用AbsoluteLayout,它会更有意义。由于这种方式,您可以为每个孩子随机生成 x 和 y 位置。
网络上有大量示例,here 是通过 Google 搜索找到的第一个示例。要点是这样的:
在屏幕上绘制这样的东西:
您可以在您的活动xml 文件中像这样声明AbsoluteLayout:
<AbsoluteLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<!-- Declare your shapes -->
</AbsoluteLayout>
然后在您的Activity 或Fragment 中,您将在随机位置添加您的Shape 对象,例如:
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// ...
// Establish the working area
DisplayMetrics displayMetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
int widthArea = displayMetrics.widthPixels;
int heightArea = displayMetrics.heightPixels;
//Init the random generator
Random r = new Random();
// Then for each Shape
// ...
AbsoluteLayout.LayoutParams pos =
(AbsoluteLayout.LayoutParams)shape.getLayoutParams();
pos.x = r.nextInt(widthArea);
pos.y = r.nextInt(heightArea);
shape.setLayoutParams(pos);
// ...
}
}
【讨论】:
xml中声明,这是一种选择,你可以在Activity 中以编程方式声明它们并使用addView(shape, pos); 方法在运行时添加它们。