仿QQ主界面侧滑
来源:互联网 发布:百胜软件工资怎么样 编辑:程序博客网 时间:2024/06/05 10:22
PointF point; //上一次触摸的位置
PointF firstPoint; //第一次触摸的位置
@Override
public boolean onTouchEvent(MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN: //记录第一次接触的位置
point = new PointF(event.getX(), event.getY());
firstPoint = new PointF(event.getX(), event.getY());
if (mian.getWidth() * SCALE - mian.getLeft() < 1) { //判断位置在最右侧
toTran(mian.getLeft() * -1); //移动到最左侧
}
break;
case MotionEvent.ACTION_UP: //计算抬起时的操作,判断应该在左侧还是右侧
if (event.getX() > firstPoint.x + TRAN) {
toTran((int) (mian.getWidth() * SCALE) - (mian.getLeft()));
} else if (event.getX() < firstPoint.x - TRAN) {
toTran(mian.getLeft() * -1);
} else if (event.getX() > firstPoint.x) {
toTran(mian.getLeft() * -1);
} else if (event.getX() < firstPoint.x) {
toTran((int) (mian.getWidth() * SCALE) - (mian.getLeft()));
}
break;
case MotionEvent.ACTION_MOVE: //计算移动时的操作
float x = event.getX() - point.x; //将要偏移量
if (mian.getLeft() + x >= mian.getWidth() * SCALE && x >= 0) //查看是否达到最大边界
x = (mian.getWidth() * SCALE) - (mian.getLeft());
if (mian.getLeft() + x <= 0 && x <= 0) //查看是否达到最小边界
x = mian.getLeft() * -1;
point = new PointF(event.getX(), event.getY()); //记录本次触摸的位置
mian.offsetLeftAndRight((int) (x)); //移动view视图
break;
}
return true;
}
/**
* @param r 将要移动的距离
*/
private void toTran(final int r) {
double duration = Math.abs(r * 3); //计算动画持续时间
TranslateAnimation animation = new TranslateAnimation(0, r, 0, 0);
animation.setDuration((long) duration);
animation.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationRepeat(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
mian.clearAnimation();
mian.offsetLeftAndRight(r); //动画完成移动view
}
});
mian.startAnimation(animation); //启动动画
}
PointF firstPoint; //第一次触摸的位置
@Override
public boolean onTouchEvent(MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN: //记录第一次接触的位置
point = new PointF(event.getX(), event.getY());
firstPoint = new PointF(event.getX(), event.getY());
if (mian.getWidth() * SCALE - mian.getLeft() < 1) { //判断位置在最右侧
toTran(mian.getLeft() * -1); //移动到最左侧
}
break;
case MotionEvent.ACTION_UP: //计算抬起时的操作,判断应该在左侧还是右侧
if (event.getX() > firstPoint.x + TRAN) {
toTran((int) (mian.getWidth() * SCALE) - (mian.getLeft()));
} else if (event.getX() < firstPoint.x - TRAN) {
toTran(mian.getLeft() * -1);
} else if (event.getX() > firstPoint.x) {
toTran(mian.getLeft() * -1);
} else if (event.getX() < firstPoint.x) {
toTran((int) (mian.getWidth() * SCALE) - (mian.getLeft()));
}
break;
case MotionEvent.ACTION_MOVE: //计算移动时的操作
float x = event.getX() - point.x; //将要偏移量
if (mian.getLeft() + x >= mian.getWidth() * SCALE && x >= 0) //查看是否达到最大边界
x = (mian.getWidth() * SCALE) - (mian.getLeft());
if (mian.getLeft() + x <= 0 && x <= 0) //查看是否达到最小边界
x = mian.getLeft() * -1;
point = new PointF(event.getX(), event.getY()); //记录本次触摸的位置
mian.offsetLeftAndRight((int) (x)); //移动view视图
break;
}
return true;
}
/**
* @param r 将要移动的距离
*/
private void toTran(final int r) {
double duration = Math.abs(r * 3); //计算动画持续时间
TranslateAnimation animation = new TranslateAnimation(0, r, 0, 0);
animation.setDuration((long) duration);
animation.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationRepeat(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
mian.clearAnimation();
mian.offsetLeftAndRight(r); //动画完成移动view
}
});
mian.startAnimation(animation); //启动动画
}
0 0
- 仿QQ主界面侧滑
- 仿QQ主界面侧滑
- 仿QQ聊天界面侧滑
- 高仿QQ(主界面)
- Android仿QQ主界面
- Android仿QQ主界面
- 高仿QQ主界面
- Qt仿QQ界面,主界面、聊天界面、表情界面
- 点击头像 侧滑菜单出现 仿QQ界面
- Android仿QQ主界面-------完善篇
- Android仿QQ主界面-------完善篇
- Android仿QQ主界面-------完善篇
- Viewpaper Fragment RadioButton 仿QQ主界面
- Fragment应用实战:仿qq主界面
- 仿QQ主界面Fragment简单应用
- Android 仿QQ主界面 Fragment + FrameLayout
- Android仿QQ主界面-------完善篇
- 自定义仿QQ主界面选项卡
- 占位17
- group by分组、having() 筛选组的用法
- 占位18
- 圣杯布局&&双飞翼布局
- 占位19
- 仿QQ主界面侧滑
- 占位20
- Android常用控件
- spark mllib 归一化
- html5页面下拉刷新
- hdu 1133 Buy the Ticket (dp)
- 初试Spring3 MVC REST
- 某集团公司“科技情报收集、分析与应用 ”内训圆满结束!
- RE:从零开始学gradle(三)