
안녕하세요.
안드로이드 공부를 하고 있는 왕초보 학생입니다.
SlidingDrawer 을 열면 나오는 LinearLayout 2 공간에 ImageView가 하나 있습니다.
ImageView를 드래그하면 RelativeLayout 공간 안에서 자유롭게 이동하게끔 하고 싶습니다.
드래그 관련 하여 아래 소스를 참고 하였는데
package com.example.draggingtest1; import android.app.Activity; import android.os.Bundle; import android.view.MotionEvent; import android.view.View; import android.view.View.OnTouchListener; import android.widget.FrameLayout; import android.widget.FrameLayout.LayoutParams; public class MainActivity extends Activity { public FrameLayout board; public View pawn; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); board = new FrameLayout(this); pawn = new View(this); setContentView(R.layout.activity_main); board = (FrameLayout)findViewById(R.id.Board); pawn = findViewById(R.id.Pawn); pawn.setOnTouchListener(dragt); }//onCreate OnTouchListener dragt = new OnTouchListener() { public boolean onTouch(View v, MotionEvent event) { FrameLayout.LayoutParams par = (LayoutParams) v.getLayoutParams(); switch(v.getId()) {//What is being touched case R.id.Pawn: {//Which action is being taken switch(event.getAction()) { case MotionEvent.ACTION_MOVE: { par.topMargin = (int)event.getRawY() - (v.getHeight()); par.leftMargin = (int)event.getRawX() - (v.getWidth()/2); v.setLayoutParams(par); break; }//inner case MOVE case MotionEvent.ACTION_UP: { par.height = 200; par.width = 200; par.topMargin = (int)event.getRawY() - (v.getHeight()); par.leftMargin = (int)event.getRawX() - (v.getWidth()/2); v.setLayoutParams(par); break; }//inner case UP case MotionEvent.ACTION_DOWN: { par.height = 200; par.width = 200; v.setLayoutParams(par); break; }//inner case UP }//inner switch break; }//case pawn }//switch return true; }//onTouch };//dragt }
|
이 예제같은 경우에는 FrameLayout 하나만 있어서 제대로 동작하는 듯합니다.
LinearLayout2에 있는 것을 끄집어내서 RelativeLayout에서 움직이도록 어떻게 하면 좋을지 조언 부탁드리겠습니다.
감사합니다.




일단 님이 원하는 기능은 불가능 합니다...
아래의 레이아웃이 여러개의 이미지를 넣기위한 것 같은데.... 소스처럼 프레임 레이아웃 안에서 눈속임을 하셔야지 레이아웃을 따로 정의해서는 원하는 기능을 구현할 수 가 업스습니다.