1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110
| package cn.qssq666.main;
import android.os.SystemClock; import android.util.Log; import android.view.MotionEvent; import android.view.View;
import java.util.Random;
/** * Created by qssq on 2018/4/5 [email protected] */ public class UiClickUtil { private static final String TAG = "UiClickUtil";
public static void clickView(View paramX) { performViewOnTouchEvent(paramX, 0); }
public static void longPressView(View paramX) { longPressView(paramX, 2 * 1000); }
/** * @param paramX * @param actionUpTime 长按时间 */ public static void longPressView(View paramX, int actionUpTime) {
performViewOnTouchEvent(paramX, actionUpTime); }
public static void performViewOnTouchEvent(View paramX, int actionUpTime) { int[] actualRawX = getActualRawX(paramX); performViewOnTouchEvent(paramX, actualRawX[0], actualRawX[1], actionUpTime);
}
public static void performViewOnTouchEvent(View view, final int rawX, final int rawY, int actionUpTime) { final long downTime = SystemClock.uptimeMillis(); Log.w(TAG, "按下时间:"); MotionEvent obtain = MotionEvent.obtain(downTime, SystemClock.uptimeMillis(), MotionEvent.ACTION_DOWN, rawX, rawY, 0); view.onTouchEvent(obtain);
view.postDelayed(new Runnable() { @Override public void run() { final long upTime = SystemClock.uptimeMillis(); MotionEvent obtainUp = MotionEvent.obtain(upTime, upTime, MotionEvent.ACTION_UP, rawX, rawY, 0); view.onTouchEvent(obtainUp); Log.w(TAG, "长按完成,模拟抬起事件"); } }, actionUpTime);
}
public static void performClickChildView(View view, final int rawX, final int rawY, int actionUpTime) { final long downTime = SystemClock.uptimeMillis(); Log.w(TAG, "按下时间:"); MotionEvent obtain = MotionEvent.obtain(downTime, SystemClock.uptimeMillis(), MotionEvent.ACTION_DOWN, rawX, rawY, 0); view.dispatchTouchEvent(obtain);
view.postDelayed(new Runnable() { @Override public void run() { final long upTime = SystemClock.uptimeMillis(); MotionEvent obtainUp = MotionEvent.obtain(upTime, upTime, MotionEvent.ACTION_UP, rawX, rawY, 0); view.dispatchTouchEvent(obtainUp); Log.w(TAG, "长按完成,模拟抬起事件"); } }, actionUpTime);
}
public static int[] getActualRawX(View view) { int[] location = new int[2]; view.getLocationOnScreen(location); location[0] = location[0] + new Random().nextInt(view.getWidth()); location[1] = location[1] + new Random().nextInt(view.getHeight()); return location; }
public static void performUpEvent(View paramX) { int[] actualRawX = getActualRawX(paramX); performUpEvent(paramX, actualRawX[0], actualRawX[1]); }
public static void performUpEvent(View paramX, int rawX, int rawY) { MotionEvent obtain = MotionEvent.obtain(SystemClock.uptimeMillis(), SystemClock.uptimeMillis() + 5000, MotionEvent.ACTION_UP, rawX, rawY, 0); paramX.onTouchEvent(obtain);
}
public static void performMoveEvent(View paramX) { int[] actualRawX = getActualRawX(paramX); performMoveEvent(paramX, actualRawX[0], actualRawX[1]); }
public static void performMoveEvent(View paramX, int rawX, int rawY) { MotionEvent obtain = MotionEvent.obtain(SystemClock.uptimeMillis(), SystemClock.uptimeMillis() + 5000, MotionEvent.ACTION_MOVE, rawX, rawY, 0); paramX.onTouchEvent(obtain); }
}
|