android学习之拖动Button显示效果
2011-06-24 15:11
399 查看
时间:2011年02月21日 10:46:20 来源:eoe Android开发者门户 作者:iwenxu
public class DraftTest extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
DisplayMetrics dm=getResources().getDisplayMetrics();
final int screenWidth=dm.widthPixels;
final int screenHeight=dm.heightPixels-50;
final Button b=(Button)findViewById(R.id.btn);
b.setOnTouchListener(new OnTouchListener(){
int lastX,lastY;
@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
int ea=event.getAction();
Log.i("TAG", "Touch:"+ea);
switch(ea){
case MotionEvent.ACTION_DOWN:
lastX=(int)event.getRawX();
lastY=(int)event.getRawY();
break;
/**
* layout(l,t,r,b)
* l Left position, relative to parent
t Top position, relative to parent
r Right position, relative to parent
b Bottom position, relative to parent
* */
case MotionEvent.ACTION_MOVE:
int dx=(int)event.getRawX()-lastX;
int dy=(int)event.getRawY()-lastY;
int l=v.getLeft()+dx;
int b=v.getBottom()+dy;
int r=v.getRight()+dx;
int t=v.getTop()+dy;
if(l<0){
l=0;
r=l+v.getWidth();
}
if(t<0){
t=0;
b=t+v.getHeight();
}
if(r>screenWidth){
r=screenWidth;
l=r-v.getWidth();
}
if(b>screenHeight){
b=screenHeight;
t=b-v.getHeight();
}
v.layout(l, t, r, b);
lastX=(int)event.getRawX();
lastY=(int)event.getRawY();
Toast.makeText(DraftTest.this,
"当前位置:"+l+","+t+","+r+","+b,
Toast.LENGTH_SHORT).show();
v.postInvalidate();
break;
case MotionEvent.ACTION_UP:
break;
}
return false;
}});
}
}
运行效果如下:
public class DraftTest extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
DisplayMetrics dm=getResources().getDisplayMetrics();
final int screenWidth=dm.widthPixels;
final int screenHeight=dm.heightPixels-50;
final Button b=(Button)findViewById(R.id.btn);
b.setOnTouchListener(new OnTouchListener(){
int lastX,lastY;
@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
int ea=event.getAction();
Log.i("TAG", "Touch:"+ea);
switch(ea){
case MotionEvent.ACTION_DOWN:
lastX=(int)event.getRawX();
lastY=(int)event.getRawY();
break;
/**
* layout(l,t,r,b)
* l Left position, relative to parent
t Top position, relative to parent
r Right position, relative to parent
b Bottom position, relative to parent
* */
case MotionEvent.ACTION_MOVE:
int dx=(int)event.getRawX()-lastX;
int dy=(int)event.getRawY()-lastY;
int l=v.getLeft()+dx;
int b=v.getBottom()+dy;
int r=v.getRight()+dx;
int t=v.getTop()+dy;
if(l<0){
l=0;
r=l+v.getWidth();
}
if(t<0){
t=0;
b=t+v.getHeight();
}
if(r>screenWidth){
r=screenWidth;
l=r-v.getWidth();
}
if(b>screenHeight){
b=screenHeight;
t=b-v.getHeight();
}
v.layout(l, t, r, b);
lastX=(int)event.getRawX();
lastY=(int)event.getRawY();
Toast.makeText(DraftTest.this,
"当前位置:"+l+","+t+","+r+","+b,
Toast.LENGTH_SHORT).show();
v.postInvalidate();
break;
case MotionEvent.ACTION_UP:
break;
}
return false;
}});
}
}
运行效果如下:
相关文章推荐
- Android客户端之“微服私访”App的系统学习(六)RecyclerView 展现复杂数据列表以及水波纹效果+CardView显示头像
- Android学习---解决Android Graphical Layout 界面效果不显示
- Android问题集(二)——TextView在点击时显示不同颜色,Button点击效果
- Android学习总结(二)---拖动效果(Gallery)
- 【Android开发学习08】SurfaceView显示动画效果
- Android开发学习SurfaceView显示动画效果
- android 入门学习笔记 Button 常用的弹窗效果code
- android学习之ToggleButton实现开关效果
- Android 学习 =归属地显示 归属地空间拖动 activity透明
- 拖动Button显示效果
- Android学习---解决Android Graphical Layout 界面效果不显示
- Android学习——Button填充效果加圆角
- Android之UI学习篇二:TextVeiw显示表情和跑马灯效果
- Androidx学习笔记(35)---新闻客户端之ListView显示新闻内容&ViewHolder优化
- 【android控件学习笔记】GridView表格形式显示多张图片
- Android学习之Android 5.0分享动画实现微信点击全屏效果
- Android ViewPager内容部分随手势上下滑动隐藏与显示Indicator效果的实现
- android scrollview嵌套girdview显示效果不理想的问题解决
- 基于avd7181c解决视频输入效果差的问题<四>---android显示相关实现调试手记
- android游戏引擎andengine学习系列五:粒子发射器形成的超炫效果