2014-09-26 255 views
0

我有一个包含text并包装它的布局。我需要在屏幕上垂直移动这个layout移动后返回原来的位置

这就是我所做的。

​​

这将在屏幕上垂直移动布局。但是现在,当我退出屏幕的手指时,我需要这种布局返回到原来的位置。

当你得到ACTION_DOWN事件的任何代码将appriciated

回答

2

试试这个:

case MotionEvent.ACTION_UP: 
    params.topMargin = initialTopMargin; 
    v.setLayoutParams(params); 
1

存储初始POS。处理ACTION_UP事件,并在那里将其重新设置为最高。如果你想让它流畅,可以启动一个新线程来更新值并等待。

2

使用ACTION_UP移动布局回到它原来的位置。以下是代码。尝试一下。

View valuesContainer = view.findViewById(R.id.valuesContainer); 

valuesContainer.setOnTouchListener(new OnTouchListener() { 
     @Override 
     public boolean onTouch(View v, MotionEvent event) { 
      RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) v.getLayoutParams(); 
      switch (event.getAction()) { 
       case MotionEvent.ACTION_DOWN: 
        oldY = (int)event.getRawY(); 
        initialTopMargin = params.topMargin; 
        break; 
       case MotionEvent.ACTION_MOVE: 
        newY = (int)event.getY(); 
        params.topMargin = (int) (initialTopMargin - (oldY - newY)); 
        v.setLayoutParams(params); 
        break; 
       case MotionEvent.ACTION_UP: 
        params.topMargin = initialTopMargin; 
        v.setLayoutParams(params); 
        break; 
      } 
      return true; 
     } 
    }); 
相关问题