Android控件拖动

这里演示控件拖动的动画:

 

 

原理就是响应控件的Touch事件,在Touch事件中对移动进行处理,注意,一定要在布局文件中设置控件的

android:clickable="true"。

 

代码如下:

[java]  view plain copy
  1. package com.zhycheng.draftdemo;  
  2.   
  3.   
  4. import android.app.Activity;  
  5. import android.os.Bundle;  
  6. import android.view.Display;  
  7. import android.view.MotionEvent;  
  8. import android.view.View;  
  9. import android.view.View.OnTouchListener;  
  10. import android.widget.ImageView;  
  11.   
  12. public class DraftDemoActivity extends Activity implements OnTouchListener {  
  13.     ImageView iv;  
  14.     int screenWidth,screenHeight;  
  15.     int lastX,lastY;  
  16.     @Override  
  17.     public void onCreate(Bundle savedInstanceState) {  
  18.         super.onCreate(savedInstanceState);  
  19.         setContentView(R.layout.main);  
  20.         iv=(ImageView) findViewById(R.id.imageView1);  
  21.         iv.setOnTouchListener(this);  
  22.         Display dis=this.getWindowManager().getDefaultDisplay();  
  23.         screenWidth=dis.getWidth();  
  24.         screenHeight=dis.getHeight();  
  25.           
  26.     }  
  27.     @Override  
  28.     public boolean onTouch(View v, MotionEvent event) {  
  29.           
  30.         switch(event.getAction())  
  31.         {  
  32.         case MotionEvent.ACTION_DOWN:  
  33.             lastX=(int)event.getRawX();  
  34.             lastY=(int)event.getRawY();  
  35.               
  36.             break;  
  37.               
  38.         case MotionEvent.ACTION_MOVE:  
  39.             int dx=(int)event.getRawX()-lastX;  
  40.             int dy=(int)event.getRawY()-lastY;  
  41.               
  42.             int top=v.getTop()+dy;  
  43.               
  44.             int left=v.getLeft()+dx;  
  45.               
  46.               
  47.             if(top<=0)  
  48.             {  
  49.                 top=0;  
  50.             }  
  51.             if(top>=screenHeight-iv.getHeight())  
  52.             {  
  53.                 top=screenHeight-iv.getHeight();  
  54.             }  
  55.             if(left>=screenWidth-iv.getWidth())  
  56.             {  
  57.                 left=screenWidth-iv.getWidth();  
  58.             }  
  59.               
  60.             if(left<=0)  
  61.             {  
  62.                 left=0;  
  63.             }  
  64.               
  65.               
  66.             v.layout(left, top, left+iv.getWidth(), top+iv.getHeight());  
  67.             lastX=(int)event.getRawX();  
  68.             lastY=(int)event.getRawY();  
  69.               
  70.             break;  
  71.         case MotionEvent.ACTION_UP:  
  72.               
  73.             break;  
  74.           
  75.           
  76.           
  77.         }  
  78.           
  79.           
  80.         return false;  
  81.     }  
  82. }  


工程代码下载:Android控件拖动

转自:http://blog.csdn.net/zhy_cheng/article/details/8257246

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值