前两天在看Behavior的是时候,最开始一个小demo需要控件随手指移动。本人较懒,想网上复制粘贴吧,随便一搜,代码一大篇。
程序员对大篇的代码心存抵触心理。心想那么简单的功能真需要这么多代码么?所以讲下自己实现思路:
控件的移动就是控件本身的位置+手指移动的位移量代码so easy:
public class MainActivity extends AppCompatActivity { private float lastX; private float lastY; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); findViewById(R.id.btn).setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { switch (event.getAction()){ case MotionEvent.ACTION_DOWN: lastX=event.getRawX(); lastY=event.getRawY(); break; case MotionEvent.ACTION_MOVE: v.setX(v.getX()+event.getRawX()-lastX); v.setY(v.getY()+event.getRawY()-lastY); lastX=event.getRawX(); lastY=event.getRawY(); break; } return false; } }); } }
关键代码也就几句。在手指按下时记录手指最初位置,以及每次改变位置后吧当前位置设为手指最初位置。
乀(ˉεˉ乀) --The End