android:layout_height="wrap_content" //因为你将高度设置为包裹内容,那么图片有多高轮播图就有多高, //你可以设置为match_parent,这样就可以占满整个屏幕了
抄错了 不是children 而是childWidth 尴尬
//用户滑到了最右边图 else if (index > children - 1){ index = children - 1; }
看看你的这段代码是不是大于号写成了小于号
自定义View有问题
Invalidate同步处理ui,但是如果你绘制复杂,或者滑动过快等因素会导致Invalidate失效的。所以用postInvalidate
个人感觉imageview的layoutparams设置成match_parent是可以的,就不要去算那个屏幕宽度了
如果需要设置obtainStyledAttributes的第三个参数,即`defStyleAttr`,一般会使用第一种方式,会在两个参数的构造中,去调用三个参数的构造,同时传入`defStyleAttr `。如果没有此需求,两种写法没有什么区别
继承系统已有的控件去自定义View,比如你继承Button,去做一些事情,你这种方法会覆盖掉Button默认在theme里面设置的style,相对来说分别在构造方法里初始化的方式更为合适
case MotionEvent.ACTION_UP:// 手指立刻
int scrollX = getScrollX();// 获得滑动距离
index = (scrollX + childwidth / 2) / childwidth;// 获得索引值
if (index < 0) {
index = childcount - 1;// 说明已经滑到了最左边一张图片
} else if (index > childcount - 1) {
index = 0;// 说明已经滑到了最右边的一张图片
}
已经get到了!!!