Android基于widget组件实现物体移动/控件拖动功能示例
本文实例讲述了Android基于widget组件实现物体移动/控件拖动功能。分享给大家供大家参考,具体如下:
packagecom.sky;
importandroid.app.Activity;
importandroid.os.Bundle;
importandroid.view.KeyEvent;
importandroid.view.MotionEvent;
importandroid.view.View;
importandroid.view.View.OnClickListener;
importandroid.widget.AbsoluteLayout;
importandroid.widget.Button;
@SuppressWarnings("deprecation")
publicclassAbosoluteMoveextendsActivityimplementsOnClickListener
{
/**Calledwhentheactivityisfirstcreated.*/
publicButtonbutton1;
publicButtonbutton2;
publicButtonbutton3;
publicButtonbutton4;
Buttontmp;//临时保存,选择的BUTTON
intx;
inty;
intflag;//用于标志选择哪个BUTTON
@Override
publicvoidonCreate(BundlesavedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
button1=(Button)findViewById(R.id.widget27);
button2=(Button)findViewById(R.id.widget28);
button3=(Button)findViewById(R.id.widget29);
button4=(Button)findViewById(R.id.widget30);
button1.setOnClickListener(this);
button2.setOnClickListener(this);
button3.setOnClickListener(this);
button4.setOnClickListener(this);
}
@Override
publicvoidonClick(Viewv)
{
//TODOAuto-generatedmethodstub
switch(v.getId())
{
caseR.id.widget27:
flag=R.id.widget27;
setTitle("button1");
break;
caseR.id.widget28:
flag=R.id.widget28;
setTitle("button2");
break;
caseR.id.widget29:
flag=R.id.widget29;
setTitle("button3");
break;
caseR.id.widget30:
flag=R.id.widget30;
setTitle("button4");
break;
}
}
@Override
publicbooleanonKeyDown(intkeyCode,KeyEventevent)
{
//TODOAuto-generatedmethodstub
returnsuper.onKeyDown(keyCode,event);
}
@Override
publicbooleanonTouchEvent(MotionEventevent)
{
//TODOAuto-generatedmethodstub
x=(int)event.getX();
y=(int)event.getY();
tmp=(Button)findViewById(flag);//获取所选中的BUTTON
AbsoluteLayout.LayoutParamsparams1=newAbsoluteLayout.LayoutParams(50,50,x-25,y-50);
tmp.setLayoutParams(params1);//设置BUTTON的新位置
switch(event.getAction())
{
caseMotionEvent.ACTION_DOWN:
tmp.invalidate();
tmp.setText("选中down");
break;
caseMotionEvent.ACTION_UP:
tmp.invalidate();
tmp.setText("选中UP");
break;
caseMotionEvent.ACTION_MOVE:
tmp.invalidate();
tmp.setText("选中move");
break;
}
returnsuper.onTouchEvent(event);
}
}
更多关于Android相关内容感兴趣的读者可查看本站专题:《Android基本组件用法总结》、《Android开发入门与进阶教程》、《Android资源操作技巧汇总》、《Android视图View技巧总结》及《Android控件用法总结》
希望本文所述对大家Android程序设计有所帮助。