안녕하세요 초보개발자입니다.
뷰를 드레그해서 움직이는 동작을 구현중인데요
전체 뷰 구조는
relative > webview, button 입니다.
webview는 가득 차있고 button 은 웹뷰의 우측 하단에 위치하고 싶습니다.
button을 기본적으로 좌측상단에 두거나 마진을 줘서 위치를 선정해두면 드레그가 잘 되는데요
parent_bottom 같은 alignment 속성을 주면 드레그가 먹질 않네요..
제 소스입니다.
java
public class MainActivity extends AppCompatActivity {
private ViewGroup mRoot = null;
private Button mBtnEmergency = null;
private int mXDelta = 0;
private int mYDelta = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mRoot = (RelativeLayout)findViewById(R.id.root);
mBtnEmergency = (Button)findViewById(R.id.btn_emergency);
mBtnEmergency.setOnTouchListener(mOnTouchListener);
}
private View.OnTouchListener mOnTouchListener = new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
final int x = (int) event.getRawX();
final int y = (int) event.getRawY();
switch (event.getAction() & MotionEvent.ACTION_MASK) {
case MotionEvent.ACTION_DOWN:
RelativeLayout.LayoutParams lParams1 = (RelativeLayout.LayoutParams) mBtnEmergency.getLayoutParams();
mXDelta = x - lParams1.leftMargin;
mYDelta = y - lParams1.topMargin;
break;
case MotionEvent.ACTION_UP:
case MotionEvent.ACTION_POINTER_DOWN:
case MotionEvent.ACTION_POINTER_UP:
break;
case MotionEvent.ACTION_MOVE:
RelativeLayout.LayoutParams lParams2 = (RelativeLayout.LayoutParams) mBtnEmergency.getLayoutParams();
lParams2.leftMargin = x - mXDelta;
lParams2.topMargin = y - mYDelta;
mBtnEmergency.setLayoutParams(lParams2);
break;
}
mRoot.invalidate();
return true;
}
};
}
고수님들 조언 부탁드립니다!