크기변환_1.gif


안녕하세요.


안드로이드 공부를 하고 있는 왕초보 학생입니다. 


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에서 움직이도록 어떻게 하면 좋을지 조언 부탁드리겠습니다.

감사합니다.