Итак, если я вас правильно понял, вы хотите переместить ImageView по экрану, перетащить его, а когда вы попадаете в определенное место, вы хотите начать другое занятие?
Если это так, выможно попробовать использовать приведенный ниже код ... который позволяет перетаскивать изображение на экран
Просто добавьте onTouchListener к изображению, которое вы пытаетесь скользить (перемещать / перетаскивать)
yourSlideImageViewObject.setOnTouchListener(new View.OnTouchListener()
{
@Override
public boolean onTouch(View v, MotionEvent event)
{
onSlideTouch(v, event);
return false;
}
});
Затем добавьте этот код для обработки событий касания
public void onSlideTouch( View view, MotionEvent event )
{
//When the user pushes down on an ImageView
if ( event.getAction() == MotionEvent.ACTION_DOWN )
{
inDragMode = true; //Set a variable so we know we started draggin the imageView
//Set the selected ImageView X and Y exact position
selectedImageViewX = Math.abs((int)event.getRawX()-((ImageView)view).getLeft());
selectedImageViewY = Math.abs((int)event.getRawY()-((ImageView)view).getTop());
//Bring the imageView in front
((ImageView)view).bringToFront();
}
//When the user let's the ImageView go (raises finger)
if ( event.getAction() == MotionEvent.ACTION_UP )
{
inDragMode = false; //Reset the variable which let's us know we're not in drag mode anymore
}
//When the user keeps his finger on te screen and drags it (slides it)
if ( event.getAction() == MotionEvent.ACTION_MOVE )
{
//If we've started draggin the imageView
if ( inDragMode )
{
//Get the imageView object
ImageView slide = (ImageView)findViewById(R.id.slide);
//Get a parameters object (THIS EXAMPLE IS FOR A RELATIVE LAYOUT)
RelativeLayout.LayoutParams params = RelativeLayout.LayoutParams)slide.getLayoutParams();
//Change the position of the imageview accordingly
params.setMargins((int)event.getRawX()-selectedImageViewX, (int)event.getRawY()-selectedImageViewY, 0, 0);
//Set the new params
slide.setLayoutParams(params);
//If we hit a limit with our imageView position
if( slideImageView_position is inside an interval )
{
//Open another activity
Intent it = new Intent(Slide.this,NextActivity.class);
startActivity(it);
}
}
}
}
Приведенное выше должно перетащить ваше изображение через экран.
Вы можететакже реализовать в событии MotionEvent.ACTION_MOVE .... чтобы ограничить перемещение ImageView по экрану.Поэтому проверьте новые координаты пальца по экрану и убедитесь, что они выходят за пределы.Если так, то ничего не делай.Если они не выходят за пределы, измените левое и верхнее поля ImaveView.
Кроме того, в событии MotionEvent.ACTION_UP проверьте, не превышает ли левое поле ImaveView предопределенный предел (что означает, что пользователь переместил imageView над вашей предполагаемой позицией).Если это так, вы можете продолжать делать все, что вы хотите, что означает начало деятельности.ИЛИ, если вы не хотите открывать действие во время перетаскивания пользователя, не только после того, как он убрал палец из imageView, то просто сделайте это, если () я написал в событии MotionEvent.ACTION_MOVE.Вставьте туда нужный интервал, чтобы при перетаскивании изображения в этот интервал началось действие.
Если вы в замешательстве, пожалуйста, спросите :) Здесь очень поздно, и я устал, поэтому, возможно, я не объяснил это должным образом: D