我正在尝试动态地重新定位视图(包含canvas元素)。想法是让用户触摸框并能够在屏幕上拖动它。我打算抓住触摸motion_events以重新定位用户拖动的块。这是我目前拥有的代码,我认为它可以工作但到目前为止还没有取得任何成功。
int[] coords = getLastLocations();
setContentView(R.layout.activity_main);
View mainv = findViewById(R.id.mainRelativeLayout);
BoxView bvr = (BoxView) findViewById(R.id.BoxViewRed);
BoxView bvb = (BoxView) findViewById(R.id.BoxViewBlue);
bvr.setColor(255, 0, 0);
bvr.layout(coords[0], coords[1], 60, 60);
bvb.setColor(0, 0, 255);
bvb.layout(coords[2], coords[3], 60, 60);
mainv.invalidate();
有关如何使用此代码或其他方法的任何提示都是完美的。
P.S。针对ICS +(API 14-19)
答案 0 :(得分:0)
找到答案,
您可以在View上使用setX和setY动态定位视图。例如,固定代码如下所示:
int[] coords = getLastLocations();
setContentView(R.layout.activity_main);
View mainv = findViewById(R.id.mainRelativeLayout);
BoxView bvr = (BoxView) findViewById(R.id.BoxViewRed);
BoxView bvb = (BoxView) findViewById(R.id.BoxViewBlue);
bvr.setColor(255, 0, 0);
bvr.setX(coords[0]);
bvr.setY(coords[1]);
bvb.setColor(0, 0, 255);
bvb.setX(coords[2]);
bvb.setY(coords[3]);
请记住,这会将元素放在像素值中,如果您使用DIP作为视图等,则可能需要进行单位转换才能使所有内容看起来正确。