学习了很多自定义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