我想随机在屏幕上的不同位置显示图像视图

时间:2015-08-12 05:54:04

标签: android performance android-layout android-activity

此处ImageView仅显示在一个位置,关闭活动后,下次活动开启时ImageView将位于另一个位置...我想显示{{1在相同活动本身的差异位置随机。图像视图应突然显示在一个点上,下一秒ImageView应从该位置消失并出现在下一个位置。我该怎么办?

ImageView

5 个答案:

答案 0 :(得分:1)

不要使用AbsoluteLayout,为什么不使用自定义视图绘制它?

答案 1 :(得分:0)

您可以通过在FrameLayout中使用Imageview来实现此目的。只需更改图像的layoutParams即可更改其位置。

答案 2 :(得分:0)

据我了解,您希望每次打开活动时,如果您不想实际查看用户ImageView移动,您为什么使用动画?您可以每次动态地将ImageView添加到活动中,并且每次都为其分配不同的Margin属性。

    LinearLayout layout = (LinearLayout) view.findViewById(R.id.linear);
    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
            LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT);
    params.setMargins(0, 0, 10, 0); //substitute parameters for left, top, right, bottom
    ImageView iv = new ImageView(getActivity());
    iv.setLayoutParams(params);
    iv.setImageResource(R.drawable.yourimage);
    layout.addView(iv);

答案 3 :(得分:0)

用于calucation

ContainerHeight = blinkerContainer.getHeight(); // total height of screen
        ContainerWidth = blinkerContainer.getWidth(); //total width
        blinkerHeight = blinkView.getHeight();
        blinkerWidth = blinkView.getWidth();
        minTopMargin = 30;
        minLeftMargin = 30;

        maxTopMargin = ContainerHeight - blinkerHeight - 30;
        maxLeftMargin = ContainerWidth - blinkerWidth - 30;

用于定位

LinearLayout.LayoutParams params = (android.widget.LinearLayout.LayoutParams) blinkView
                    .getLayoutParams();
            params.leftMargin = minLeftMargin
                    + new Random().nextInt(maxLeftMargin - minLeftMargin);
            params.topMargin = minTopMargin
                    + new Random().nextInt(maxTopMargin - minTopMargin);

您可以使用AlaramManager进行调度

答案 4 :(得分:0)

您的解决方案几乎是正确的。不幸的是,您似乎正在从计时器重新启动活动。相反,你应该只是触发重绘。

This question有几个关于如何创建定期计时器的解决方案。使用runOnUiThread()的解决方案应该允许您执行随机化并重新显示ImageView