마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

view drag 질문입니다. (초반 뷰 위치 선정)

0 추천

안녕하세요 초보개발자입니다.

 

뷰를 드레그해서 움직이는 동작을 구현중인데요

 

전체 뷰 구조는

 

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;
        }
    };
}

 

 

고수님들 조언 부탁드립니다!

윤둥이 (4,560 포인트) 님이 2017년 12월 11일 질문

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...