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