int xSpan ;
int ySpan ;
final static int X_MODIFY = 4 ;
final static int Y_MODIFY = 52 ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.w4_02) ;
Button btn = (Button) findViewById(R.id.w4_02_btn1) ;
TextView tv = (TextView)findViewById(R.id.w4_02_tv1) ;
btn.setOnTouchListener(new OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
switch(event.getAction()){
case MotionEvent.ACTION_DOWN:
xSpan = (int)event.getX() ;
ySpan = (int)event.getY() ;
break ;
case MotionEvent.ACTION_MOVE:
Button btn = (Button) findViewById(R.id.w4_02_btn1) ;
ViewGroup.LayoutParams lp = new AbsoluteLayout.LayoutParams(-2, -2, (int)event.getX()-xSpan-X_MODIFY,(int)event.getY()-ySpan-Y_MODIFY ) ;
btn.setLayoutParams(lp) ;
break ;
}
return true;
}
}) ;
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
Button btn = (Button) findViewById(R.id.w4_02_btn1) ;
btn.setText(keyCode + "Down") ;
return true ;
}
@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
Button btn = (Button) findViewById(R.id.w4_02_btn1) ;
btn.setText(keyCode +"Up") ;
return true ;
}
@Override
public boolean onTouchEvent(MotionEvent event) {
Button btn = (Button) findViewById(R.id.w4_02_btn1) ;
ViewGroup.LayoutParams lp = new AbsoluteLayout.LayoutParams(-2, -2, (int)event.getX()-xSpan-X_MODIFY,(int)event.getY()-ySpan-Y_MODIFY ) ;
btn.setLayoutParams(lp) ;
return true ;
}
<?xml version="1.0" encoding="utf-8"?>
<AbsoluteLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<TextView
android:id="@+id/w4_02_tv1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_x="2dp"
android:layout_y="0dp"
android:text="TextView" />
<Button
android:id="@+id/w4_02_btn1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_x="126dp"
android:layout_y="78dp"
android:text="Button" />
</AbsoluteLayout>