利用com.graphics.Camera 模拟ViewPager布局3D效果

本文介绍了如何使用自定义View和com.graphics.Camera实现ViewPager的3D布局效果。通过学习坐标系、View绘制、Matrix及Camera原理,开发者可以创建一个具备3D翻转效果的ViewGroup。在AndroidManifest.xml中禁用硬件加速是关键步骤之一。文中推荐了一个学习自定义View的网站,并提供了详细的实现代码和注释。
摘要由CSDN通过智能技术生成

学习了很多自定义View的知识,终于有勇气自己写一个Demo的勇气了,还是要多实践啊!!!!!!!!!

记得在AndroidManifest.xml中关闭硬件加速!!!!!!!

android:hardwareAccelerated="false"
  • 需要掌握的内容:坐标系等基础知识,View的绘制过程,画布的操作,Matrix原理,Matrix Camera原理,事件分发机制等。
    这里我推荐一个网站,里面的内容很丰富也很有趣
    http://www.gcssloop.com/customview/CustomViewIndex

  • 下面介绍如何开始下笔!!!
    首先我们要创建一个类,并继承ViewGroup,规定一些变量,用途都在注释里写了,还有构造函数

    public enum State {
        ToPre, ToNext
    }

    private State state;//标记滚动的状态
    private int mWidth, mHeight;//ViewGroup的宽高
    private float mDownX, mMoveX = 0;//按下的坐标和移动时的坐标
    private VelocityTracker mVelocityTracker;//测速
    private float mAngle = 90;//两个item间的夹角

    private int standerSpeed = 200;//规定的手指移动速率

    private int a = -2500;//阻力

    private Scroller mScroller;
    private Camera mCamera;
    private Matrix mMatrix;

    private boolean flag = false;//标记是否在增加view

    public MyView(Context context){
        this(context, null);
    }

    public MyView(Context context, AttributeSet attributeSet){
        super(context, attributeSet);
        //这是一个滚动计算器,可以计算出滚动一段距离的中间过程
        mScroller = new Scroller(context);
        mCamera = new Camera();
        mMatrix = new Matrix();
    }

然后就是onLayout onMeasure方法

@Override
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值