在我的应用程序中,我想使用拖动来更改图像。以下是我的活动的屏幕截图。在这个屏幕上有4个图像。我想要改变整个图像。例如,当我触摸第一个图像(脸谱)并将图像拖到任何图像示例第二个图像(推特)然后相互交换图像,如第一个图像集到第二个位置和第二个图像设置到第一个位置。并且如上所述相互更改4个图像。并且首先是facebook和twitter图像,也是第二个位置,也是第三个地方和aso第四名。我在四处设置了8个图像。我完成了这个任务。我的问题是如何拖动图像并将图像设置为任意三个位置。“当我触摸第一个图像(facebook)并拖动时接近任何图像示例第二图像(推特)的图像然后将图像相互交换,如第一图像集到第二位,第二图像设置为第一位“。
我为完成这项任务做了很多尝试。这是我的代码:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main1);
ivFacebook1=(ImageView)findViewById(R.id.facebook1);
ivFacebook2=(ImageView)findViewById(R.id.facebook2);
ivFacebook3=(ImageView)findViewById(R.id.facebook3);
ivFacebook4=(ImageView)findViewById(R.id.facebook4);
ivTwitter1=(ImageView)findViewById(R.id.twitter1);
ivTwitter2=(ImageView)findViewById(R.id.twitter2);
ivTwitter3=(ImageView)findViewById(R.id.twitter3);
ivTwitter4=(ImageView)findViewById(R.id.twitter4);
ivFacebook1.setOnTouchListener(this);
ivFacebook2.setOnTouchListener(this);
ivFacebook3.setOnTouchListener(this);
ivFacebook4.setOnTouchListener(this);
ivTwitter1.setOnTouchListener(this);
ivTwitter2.setOnTouchListener(this);
ivTwitter3.setOnTouchListener(this);
ivTwitter4.setOnTouchListener(this);
}
这是我的ontouch:
@Override
public boolean onTouch(View v, MotionEvent event){
ImageView view = (ImageView) v;
Log.e("id",""+v.getId());
Log.e("ontouch","workkkkkkk");
float scale;
boolean moving = false;//stupid state
switch (event.getAction() & MotionEvent.ACTION_MASK){
case MotionEvent.ACTION_DOWN:
final int x = (int)event.getX();
final int y = (int)event.getY();
Log.e("x,y",""+x+","+y);
if((layout1.getLeft()<x)&&(x<layout1.getRight())&&((layout1.getTop()<y)&&(y<layout1.getBottom()))) {
viewnumber=1;
Log.e("View1","in View1");
}
if((layout2.getLeft()<x)&&(x<layout2.getRight())&&((layout2.getTop()<y)&&(y<layout2.getBottom()))){
viewnumber=2;
Log.e("View2","in View2");
}
if((layout3.getLeft()<x)&&(x<layout3.getRight())&&((layout3.getTop()<y)&&(y<layout3.getBottom()))){
viewnumber=3;
Log.e("View3","in View3");
}
if((layout4.getLeft()<x)&&(x<layout4.getRight())&&((layout4.getTop()<y)&&(y<layout4.getBottom()))) {
viewnumber=4;
Log.e("View4","in View4");
}
ClipData data = ClipData.newPlainText("", "");
DragShadowBuilder shadowBuilder = new View.DragShadowBuilder(view);
view.startDrag(data, shadowBuilder, view, 0);
view.setVisibility(View.INVISIBLE);
return true;
case MotionEvent.ACTION_MOVE:
Log.e("action move","moveeeeeeeeee");
case MotionEvent.ACTION_UP:
moving = false;
return true;
}
return true;
}//ontouch.
通过使用此代码,四个图像正在拖动。当我按下手指并拖动图像工作正常。但是在拖动之间,当我抬起手指时,图像就会消失。并且图像也没有设置。