android 指针根据手势转动
来源:互联网 发布:java参数&传递 编辑:程序博客网 时间:2024/04/25 16:28
enum _Quadrant{
eQ_NONE,
eQ_ONE,
eQ_TWO,
eQ_THREE,
eQ_FOUR
}
设置变量组
canvas.rotate(mRotate,120 ,122);
画布 根据得到的数值转动
设置触摸
public boolean onTouchEvent(MotionEvent event) {
// TODO Auto-generated method stub
switch (event.getAction() & MotionEvent.ACTION_MASK) {
case MotionEvent.ACTION_DOWN:
calcDegree((int)event.getX(), (int)event.getY(), false);
postInvalidate();
break;
case MotionEvent.ACTION_MOVE:
calcDegree((int)event.getX(), (int)event.getY(), false);
postInvalidate();
break;
case MotionEvent.ACTION_UP:
break;
}
invalidate();
return true;
}
public void calcDegree(int x, int y, boolean flag){
int rx = -(x - (int)xx);
int ry = y - (int)yy;
Point point = new Point(rx, ry);
mRotate = ZhuanpanTestActivity.GetRadianByPos(point);
}
}
public static int GetRadianByPos(Point point) {
// TODO Auto-generated method stub
double dAngle = GetRadianByPosEx(point);
return (int) (dAngle * (360 / (2 * Math.PI)));
}
private static double GetRadianByPosEx(Point point) {
// TODO Auto-generated method stub
if (point.x == 0 && point.y == 0)
{
return 0;
}
//通过算法获得角度值
double Sin = point.x / Math.sqrt(point.x * point.x + point.y * point.y);
double dAngle = Math.asin(Sin);
//通过变量判断角度
switch(GetQuadrant(point))
{
case eQ_NONE:
{
if (point.x == 0 && point.y == 0)
{
return 0;
}
if (point.x == 0)
{
if (point.y > 0)
{
return 0;
}
else
{
return Math.PI;
}
}
if (point.y == 0)
{
if (point.x > 0)
{
return Math.PI/2;
}
else
{
return (float) (1.5*Math.PI);
}
}
}
break;
case eQ_ONE:
{
return dAngle;
}
case eQ_TWO:
{
dAngle = Math.PI - dAngle;
}
break;
case eQ_THREE:
{
dAngle = Math.PI - dAngle;
}
break;
case eQ_FOUR:
{
dAngle += 2*Math.PI;
}
break;
}
return dAngle;
}
private static _Quadrant GetQuadrant(Point point) {
// TODO Auto-generated method stub
if (point.x == 0 || point.y == 0)
{
return _Quadrant.eQ_NONE;
}
if (point.x > 0)
{
if (point.y > 0)
{
return _Quadrant.eQ_ONE;
}
else
{
return _Quadrant.eQ_TWO;
}
}
else
{
if (point.y < 0)
{
return _Quadrant.eQ_THREE;
}
else
{
return _Quadrant.eQ_FOUR;
}
}
}
- android 指针根据手势转动
- Android自定义View:另一种实现手表指针转动的方法
- android中图片根据手势移动案例
- RotateAnimation 实现表盘指针转动
- 根据时间转动的圆形progressbar
- Unity 物体根据鼠标移动而转动
- android 上下左右手势判断 根据别人的改的
- android 上下左右手势判断 根据别人的改的
- android 上下左右手势判断 根据别人的改的
- Android 实现根据手势进行缩放的View
- Android之——根据手势简单缩放图片
- android的Popupwindow根据手势来贴边划出
- 根据手势移动布局
- 根据手势拿到superview
- android实现光盘转动效果
- Android简易老虎机(转动式)
- android手势
- android 手势
- TortoiseSVN官方使用手册(中文)
- oracle获取字符串长度函数length()和hengthb()
- posix 多线程小结
- Apple Store 的翻新机怎样?
- error LNK2001: unresolved external symbol
- android 指针根据手势转动
- 【9-14】C笔记
- 标准C库和unbuffered I/O
- Poj 2096 (dp求期望)
- 计算矩形旋转角度(不精确)
- Something about html
- 如何使用SetTimer MFC 够详细
- 实时向客户端输出数据(例如1秒输出一行) 要注意的两个问题
- java.lang.OutOfMemoryError: Java heap space 解决方法