前兩天在看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