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