美文网首页
android下实现3d效果展示(学习)

android下实现3d效果展示(学习)

作者: 逐悦 | 来源:发表于2016-03-30 22:10 被阅读1245次

原文链接 : 一个炫字都不够??!!!手把手带你打造3D自定义view

在此学习了一下 并分析了一下API Demo 中的3d动画类
  • 首先继承一个View并绘出一个圆(控件加了一个背景颜色)


<code>ondraw方法中重写
centerX = getMeasuredWidth()/2.0f;
centerY = getMeasuredHeight()/2.0f;
canvas.drawCircle(centerX, centerY, 100, mPaint);

</code>

  • 然后使用Camera类先了解一下旋转效果

<code>
同样onDraw方法中加入 代码
//初始化单位矩阵
matrix.reset();
//camera保存状态,放入相应的栈中
camera.save();
//设置 绕x轴旋转度数
camera.rotateX(10f );
//设置绕y走旋转度数
camera.rotateY(20f );
//把camera的初始的matrix设置给matrix
camera.getMatrix(matrix);
//camera恢复保存的状态
camera.restore();
//总体效果是 以圆心为中心旋转
//在绘制前移动
matrix.preTranslate(-centerX, -centerY);
//在设置后移动
matrix.postTranslate(centerX, centerY);
//把canvas的对象与matrix联系
canvas.concat(matrix);
</code>

效果图

-然后就剩下处理touch事件了

<code>

//处理触摸事件
@Override
public boolean onTouchEvent(MotionEvent event) {
    
    float vX = event.getX();
    float vY = event.getY();

    if(event.getAction() == MotionEvent.ACTION_MOVE){
        //限制旋转度数
        rotateCanvasWhenMove(vX,vY);
        //重画
        invalidate();
    }else if(event.getAction() == MotionEvent.ACTION_UP){
        mCanvasRotateX = 0;
        mCanvasRotateY = 0;
        //重画
        invalidate();
    }
    
    //此处返回true  否则不能一直处理touch事件
    return true;
}

</code>

相关文章

网友评论

      本文标题:android下实现3d效果展示(学习)

      本文链接:https://www.haomeiwen.com/subject/xvpslttx.html