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

View간 이동 질문입니다~

0 추천
하나의 Activity안에 두개의 뷰가 있습니다.

 

linearlayout에다가 addView해서 만든 Myview와

R,layout.main에서 만든 여러개의 이미지 뷰가 있습니다.

 

배치는 MyView다음에 imageview들이 있는데요.

 

이 imageview들을 움직이고, 움직여서 myView자리에 끌어다 놓으면 그 자리에 해당 글자가 써지게 하고싶습니다.

 

혹시 가능할까요?
피읍 (160 포인트) 님이 2013년 3월 19일 질문

2개의 답변

0 추천
Drag and Drop을 하고 싶으시다는 말씀이신가요?

그런거라면 가능합니다.

Drag and Drop으로 검색하시면 예제가 많이 나오니 참고하세요.
appa (3,380 포인트) 님이 2013년 3월 19일 답변
0 추천

이동 될 (imageview)를 상속받아 확장하여 새로운 사용자 뷰를 만듭니다.

터치 이벤트를 오버로딩하시어 다운 이벤트시에 뷰를 안보이게 하고 그전에 뷰의 이미지를 캡쳐합니다.

이 캡쳐된 이미지를 윈도우 영역에 넣고 , 터치이벤트 무브 이벤트가 발생하면 이 캡쳐 이미지를 윈도우 영역에 그립니다. 터치이벤트 업 부분에서는 미리보기 이미지를 지워 주시고 imageview 를 다시 보이게 하시고, 드랍 된 부분이 원하시는 영역인지를 체크하시어 원하시는 영역이라면  해당 imageview의 글자를 표시하시면 됩니다.

 구글링이 답이라 생각합니다.

참고 소스

윈도우 영역에 이미지 뷰 넣기

 WindowManager.LayoutParams mWindowParams;
 WindowManager mWindowManager;

     WindowManager.LayoutParams   mWindowParams = new WindowManager.LayoutParams();
        mWindowParams.gravity = Gravity.TOP;
        mWindowParams.x = dragImageX ;
        mWindowParams.y = y - mDragPoint + mCoordOffset ;

        mWindowParams.height = WindowManager.LayoutParams.WRAP_CONTENT;
        mWindowParams.width = WindowManager.LayoutParams.WRAP_CONTENT;
        mWindowParams.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
                | WindowManager.LayoutParams. FLAG_NOT_TOUCHABLE
                | WindowManager.LayoutParams. FLAG_KEEP_SCREEN_ON
                | WindowManager.LayoutParams. FLAG_LAYOUT_IN_SCREEN;
        mWindowParams.format = PixelFormat.TRANSLUCENT;
        mWindowParams.windowAnimations = 0;
       
        ImageView v = new ImageView(mContext );
        int backGroundColor = Color.parseColor( "#e0103010");
        v.setBackgroundColor(backGroundColor);
        v.setImageBitmap(bm);
        mDragBitmap = bm;

       WindowManager mWindowManager = (WindowManager)mContext .getSystemService("window");
        mWindowManager.addView(v, mWindowParams );
        mDragView = v;

이동시 이벤트시 받아서 위도우 영역에 표시

private void dragView(int x, int y) {
  wlp.x = x - (width/2);
  wlp.y = y - (height/2);
  wm.updateViewLayout(iv_drag, wlp);
 }
 

 

 

헤브리아 (360 포인트) 님이 2013년 3월 19일 답변
...