Android开发随手指移动view
随手指移动view,就效果好玩,往往一些作业上用的上
一、思路
自定义组件,关键处理onTouchEvent
二、效果图:
三、关键代码:
public class MyFingerView extends androidx.appcompat.widget.AppCompatImageView {
public MyFingerView(Context context) {
super(context);
}
public MyFingerView(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
}
public MyFingerView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
private int mLastX;
private int mLastY;
@Override
public boolean onTouchEvent(MotionEvent event) {
int x = (int) event.getRawX();
int y = (int) event.getRawY();
//获取屏幕宽高
WindowManager manager = (WindowManager) getContext().getSystemService(Context.WINDOW_SERVICE);
int screenWidth = manager.getDefaultDisplay().getWidth();
int screenHeight = manager.getDefaultDisplay().getHeight();
//layout方法实现
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
break;
case MotionEvent.ACTION_MOVE:
//计算偏移量
int offsetX = x - mLastX;
int offsetY = y - mLastY;
Log.i("offset",offsetX+"\t"+offsetY+"\t"+x+"\t"+y+"\t"+screenWidth+"\t"+screenHeight);
//重新布局
if (getLeft() + offsetX >= 0 && getTop() + offsetY >= 0 && getRight() + offsetX <= screenWidth && getBottom() + offsetY <= screenHeight &&
getTop() + offsetY <= screenHeight - getHeight()){
四、项目demo源码结构图:
有问题或者需要完整源码demo的可以看简介联系我,也可以私信我,我每天都看私信的