图片可以拖到任意位置

来源:互联网 发布:2016网络购物发展趋势 编辑:程序博客网 时间:2024/05/20 03:41

下面为Activity的代码:

01public class DraftTest extends Activity {
02 /** Called when the activity is first created. */ 
03 @Override 
04 public voidonCreate(Bundle savedInstanceState) {  
05  super.onCreate(savedInstanceState);  
06  setContentView(R.layout.sign);
07  DisplayMetrics dm = getResources().getDisplayMetrics();
08  final intscreenWidth = dm.widthPixels;  
09  final intscreenHeight = dm.heightPixels - 50;  
10  //拖动的按钮
11  finalButton b=(Button)findViewById(R.id.startBtn); 
12 
13  //添加触摸事件
14 
15  b.setOnTouchListener(new OnTouchListener(){
16   int lastX, lastY; //记录移动的最后的位置
17   public booleanonTouch(View v, MotionEvent event) {  
18    //获取Action
19 
20    intea=event.getAction(); 
21 
22    Log.i("TAG""Touch:"+ea);
23    switch(ea){  
24    case MotionEvent.ACTION_DOWN:   //按下
25     lastX = (int) event.getRawX();  
26     lastY = (int) event.getRawY();  
27     break;  
28     /** 
29      * layout(l,t,r,b) 
30      * l  Left position, relative to parent  
31                    t  Top position, relative to parent  
32                    r  Right position, relative to parent  
33                    b  Bottom position, relative to parent   
34      * */ 
35    case MotionEvent.ACTION_MOVE:  //移动
36     //移动中动态设置位置
37     intdx =(int)event.getRawX() - lastX;  
38     intdy =(int)event.getRawY() - lastY;  
39     intleft = v.getLeft() + dx;  
40     inttop = v.getTop() + dy;  
41     intright = v.getRight() + dx;  
42     intbottom = v.getBottom() + dy;  
43     if(left < 0){  
44      left = 0;  
45      right = left + v.getWidth();  
46     }  
47     if(right > screenWidth){  
48      right = screenWidth;  
49      left = right - v.getWidth();  
50     }  
51     if(top < 0){  
52      top = 0;  
53      bottom = top + v.getHeight();  
54     }  
55     if(bottom > screenHeight){  
56      bottom = screenHeight;  
57      top = bottom - v.getHeight();  
58     }  
59     v.layout(left, top, right, bottom);  
60     Log.i("""position:" + left +", " + top + ", " + right + ", " + bottom);
61     //将当前的位置再次设置
62     lastX = (int) event.getRawX();  
63     lastY = (int) event.getRawY();  
64     break;  
65    case MotionEvent.ACTION_UP:   //脱离
66     break;                
67    }  
68    returnfalse;  
69   }});  
70 }
71}

XML配置文件Sign.xml的代码:

01<?xml version="1.0" encoding="utf-8"?>
02<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
03 android:id="@+id/layoutRacingNeedForSpeed" android:padding="0px"
04 android:layout_width="fill_parent" android:layout_height="fill_parent">
05 <Button
06  android:id="@+id/startBtn"
07  android:text="tuodongdeanniu"
08  android:layout_centerInParent="true"
09  android:layout_width="wrap_content" android:layout_height="wrap_content"/>
10</RelativeLayout>

这样就可以实现了~