android matrix camera处理图片绕X轴Y轴翻转(类似3D效果)
16lz
2021-01-26
android中实现图片绕X轴、Y轴、Z轴翻转可以使用matrix和camera,类似3D效果
具体参见代码:
[java] view plain copy print ?- publicclassFlipImgEffectViewextendsView{
- privateContextcontext;
- privateBitmapshowBmp;
- privateMatrixmatrix;//作用矩阵
- privateCameracamera;
- privateintdeltaX,deltaY;//翻转角度差值
- privateintcenterX,centerY;//图片中心点
- publicFlipImgEffectView(Contextcontext){
- super(context);
- this.context=context;
- initData();
- }
- privatevoidinitData(){
- showBmp=BitmapFactory.decodeResource(context.getResources(),R.drawable.flower);
- centerX=showBmp.getWidth()/2;
- centerY=showBmp.getHeight()/2;
- matrix=newMatrix();
- camera=newCamera();
- }
- intlastMouseX;
- intlastMouseY;
- @Override
- publicbooleandispatchTouchEvent(MotionEventevent){
- intx=(int)event.getX();
- inty=(int)event.getY();
- switch(event.getAction()){
- caseMotionEvent.ACTION_DOWN:
- lastMouseX=x;
- lastMouseY=y;
- break;
- caseMotionEvent.ACTION_MOVE:
- intdx=x-lastMouseX;
- intdy=y-lastMouseY;
- deltaX+=dx;
- deltaY+=dy;
- break;
- }
- invalidate();
- returntrue;
- }
- @Override
- protectedvoidonDraw(Canvascanvas){
- camera.save();
- //绕X轴翻转
- camera.rotateX(-deltaY);
- //绕Y轴翻转
- camera.rotateY(deltaX);
- //设置camera作用矩阵
- camera.getMatrix(matrix);
- camera.restore();
- //设置翻转中心点
- matrix.preTranslate(-this.centerX,-this.centerY);
- matrix.postTranslate(this.centerX,this.centerY);
- canvas.drawBitmap(showBmp,matrix,null);
- }
- }
更多相关文章
- 利用OpenGL ES、手机传感器、相机和调用百度语音包服务,实现AR+语
- Android(安卓)手机翻转实现技术
- Android实现随机圆形云标签效果
- OpenGL ES2.0实现手指滑动平移、双指缩放Android
- Android实现镜花水月的效果
- 关于Android(安卓)traslateAnimation的坐标系
- Android(安卓)背景颜色处理[使用 Drawable.setColorFilter(),或
- Android(安卓)多点触摸接口
- android opengles 实现翻牌效果