new OnTouchListener()这里是一个匿名内部类,
button.setX(event.getX());
button.setY(event.getY());
如果不加上final的话,这里的button是NullPointerException的
内部类只能用外部类的成员变量和final修饰的静态变量的

解决方案 »

  1.   

    第一个问题:因为坐标参照系不同。
    event.getX()和event.getY()是参照控件,获取的X、Y是相对控件左上角
     button.setX和button.setY是相对于屏幕。
    可以使用event.getRawX()和event.getRawY()
    那为什么用ViewGroup可以呢?
    因为用的ViewGroup刚好是填充屏幕的两个坐标系重合。第二个问题:与你用的是什么无关,楼上说得对。
    被匿名内部类访问的局部变量必须被final修饰
      

  2.   

    Y轴的高度要把titlebar的高度减出来,因为它是不能绘制的
      

  3.   

    试试 android.support.v4.widget.ViewDragHelper