目录
github地址 :欢迎star!
GitHub - TsuandaoNewone/Motion-Track-App: java 移动开发作业,拖动组件移动,记录轨迹,播放轨迹,速率调整,支持倒放
一、控件之间的逻辑。
- Button_login
登录按钮。获取用户名和密码,检查其合法性,并与密码本SharedPreference进行比对,通过则跳转到MainActivity页面。
- Button_register
注册按钮。通过AlertDialog生成注册界面,检查用户名密码的合法性,通过后存储到SharedPreference密码本中。
- button_play、button_playback
点击后开始播放录制的触摸数据。如果正在录制或正在播放,则禁止开始新的播放,并提示用户相应状态。两个按钮共用一个OnClick方法,传入不同参数。
- button_record:
调用timer_capture记录当前控件位置。调用timer_time记录录制时间。
- RadioGroup
用于选择播放速度。包含三个 RadioButton:分别代表正常速度、0.5 倍速和 2 倍速。通过监听选择的 RadioButton 来确定播放的速度。
- SeekBar (seekBar)
用于显示播放的进度。最大值为录制的触摸数据点的数量。在回放过程中,随着播放进度的变化,SeekBar 的进度也会相应更新。
- ArrayList<Point> (pointsList)
用于存储录制的触摸数据点的坐标信息。在录制过程中,会持续向 pointsList 中添加新的坐标点。在回放过程中,根据 pointsList 中的数据来控制 textView 的位置。
timer_capture 用于定时捕获当前 textView 的位置坐标,并将坐标数据存储到 pointsList 中。
二、移动模块的绘制,实现回放,回放速度的控制
移动模块的绘制
可以在布局文件中添加一个 TextView 控件(如 textView),注册触摸事件(MotionEvent)监听用户的触摸操作。在 MotionEvent.ACTION_MOVE 中获取手指移动的坐标,并根据坐标更新 textView 控件的位置(使用 textView.setX() 和 textView.setY() 方法)。
记录移动轨迹
使用timer_capture 定时捕获当前 textView 的位置坐标,并将坐标数据存储到 pointsList 中。
播放:
设置定时器 timer_capture,按照一定的时间间隔,从 pointsList 中读取坐标数据,并将 textView 控件移动到相应位置(setX(),setY()方法)
播放速度:
textView位置的捕获在Timer的run()方法中按照默认速度speed进行。textView位置的播放则根据所选的播放速度(0.5x、1x、2x),乘以speed进行播放。
反向播放:
实现回放只需反向读取pointsList中的数据。