【发布时间】:2017-01-05 15:30:55
【问题描述】:
编辑:我想要完成的内容的 Cliffnote 开门见山, 我的 XML 设置有 2 个线性视图(顶部,底部) 1.我希望我的img在移动时留在屏幕内 2. 连续随机移动 3.让它可点击/可拖动 4. 让 img 得到它的新位置并移动到它掉落的任何地方(顶部或底部) 谢谢。
您好,为自闭症儿童制作应用程序 (Android Studio)(灵感来自我的自闭症儿子)。在我的活动中,我有 2 个线性布局:顶部和底部。顶部是我屏幕 3/4 的位置,有 4 张图像。底部是应放置“答案”或 img 的目标放置点。
我在 a 中随机创建了 4 个 img(通过 databaseFP 迭代),但现在我希望这些 img 在屏幕(顶部屏幕)内随机移动并将它们拖到目标拖动框(底部屏幕)中。四个 img 中只有 1 个是正确的“答案”,所以如果它的“不正确”,我希望这个 img 返回到其在屏幕内一直移动的位置,直到将“正确”的 img 选择到目标下拉框。仅此而已...请帮助我,我已经阅读了很多书,而不是特别喜欢涉及 onTouch/onDrag 侦听器的地方,并且如果拖动,img 会返回位置。
到目前为止,我所做的只是让 img 移动(它保留了点击和拖动,但当它不正确时它会离开屏幕)请参阅下面的代码
DisplayMetrics displaymetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
int width = displaymetrics.widthPixels;
int height = displaymetrics.heightPixels;
Random r = new Random();
int distance = 100; //the distance to move in pixels
int duration = 500; //the duration of the animation in ms
double direction = Math.random() * 2 * Math.PI;
int translationX = (int) (Math.cos(direction) * distance);
int translationY = (int) (Math.sin(direction) * distance);
int id2 = getResources().getIdentifier(myShuffledArray[0], "drawable", getPackageName());
image.setImageResource(id2);
image.animate().translationX(translationX - width).translationY(translationY - height).setDuration(duration).start();
我是新手,但这会帮助我患有自闭症的儿子,这是我大学的论文项目。
编辑这是我的 ontouch/drag
public boolean onDrag(View v, DragEvent event) {
// TODO Auto-generated method stub
if(event.getAction()==DragEvent.ACTION_DROP){
//we want to make sure it is dropped only to left and right parent view
View view = (View)event.getLocalState();
//if(v.getId() == R.id.left_view || v.getId() == R.id.right_view){
if(view.getId() == R.id.box_view1){
ViewGroup source = (ViewGroup) view.getParent();
source.removeView(view);
LinearLayout target = (LinearLayout) v;
target.addView(view);
}
//make view visible as we set visibility to invisible while starting drag
view.setVisibility(View.VISIBLE);
}
return true;
}
@Override
public boolean onTouch(View view, MotionEvent event) {
// TODO Auto-generated method stub
if(event.getAction() == MotionEvent.ACTION_DOWN){
DragShadowBuilder shadowBuilder = new View.DragShadowBuilder(view);
view.startDrag(null, shadowBuilder, view, 0);
view.setVisibility(View.INVISIBLE);
return true;
}
return false;
}
【问题讨论】:
-
那么您遇到了哪些问题?你的问题有点啰嗦
-
我只是无法让 img 在屏幕内连续移动....加上当它被触摸并且 img 不正确时,我希望它保持其位置以继续移动。目前 img 完全消失了......我从刚刚实施到我的项目的其他问题中得到的这段代码。
标签: android random drag-and-drop onclick imageview