클릭 할 때 이미지 버튼의 위치를 이동하려고합니다. 나는 다음과 같은 시도했지만 "rlOut.addView (imgP, p);에서 충돌" onCreate()에서 실행할 때 아무런 문제가 없습니다.onClick 일 때 imageButton의 위치를 변경하는 방법
공용 클래스 Delet3Activity는 활동 {
RelativeLayout rlOut;
ImageButton imbBtn;
EditText et1, et2;
ImageView ivB;
ImageButton imgP;
RelativeLayout.LayoutParams p;
RelativeLayout.LayoutParams params;
int mX, mY;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.main);
et1 = (EditText)findViewById(R.id.et1);
et2 = (EditText)findViewById(R.id.et2);
imbBtn = (ImageButton)findViewById(R.id.imgBtn);
rlOut = (RelativeLayout)findViewById(R.id.rlOut);
imgP = (ImageButton)findViewById(R.id.imgP);
ivB = new ImageView(this);
ivB.setBackgroundColor(Color.RED);
Display display = getWindowManager().getDefaultDisplay();
int width = display.getWidth();
int height = display.getHeight();
width = width/2-62;
height = height/2-62;
p = new RelativeLayout.LayoutParams(62, 62);
imbBtn.setOnTouchListener(new View.OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
LayoutParams par = (LayoutParams)imbBtn.getLayoutParams();
if(event.getAction()==MotionEvent.ACTION_DOWN)
{
Log.d("ok","down");
mX = (int) event.getX() - imbBtn.getWidth()/2;
mY = (int) event.getY() - imbBtn.getHeight()/2;
et1.setText("mX down: "+String.valueOf(mX));
et2.setText("mY down: "+String.valueOf(mY));
}
else if (event.getAction()==MotionEvent.ACTION_UP)
{
Log.d("ok","up");
rlOut.addView(ivB, params);
p.leftMargin=4;
params.leftMargin = 60;
params.topMargin = 20;
rlOut.addView(imgP, p);
Log.d("ok","p");
}
else if (event.getAction()==MotionEvent.ACTION_MOVE)
{
Log.d("ok","move");
mX = (int) event.getX() - imbBtn.getWidth()/2;
mY = (int) event.getY() - imbBtn.getHeight()/2;
et1.setText("mX move: "+String.valueOf(mX));
et2.setText("mY move: "+String.valueOf(mY));
}
return false;
}
});
@Override
} }
보기를 사용하기 전에 팽창시켜야합니다. 레이아웃 인플레이터와 같은 것을 사용하십시오. – user1092042
앱이 충돌 할 때 logcat에 어떤 오류가 표시되고 'rlOut'보기 변수를 정확히 선언 했습니까? –
msgid : threadid = 1 : catch되지 않은 예외 (그룹 = 0x4001e578)로 스레드가 종료 됨 경고 메시지 중요 예외 : 주 – Amblll