这个是某一个公司上机面试题目~~
博主用了传统的做法发现竟然实现不了,真的坑爹了。(可能是博主技术不好吧) 于是就想到使用自定义的view
1:实现思路
(1)先获取view的整体宽度—>ViewWidth
(2)然后获取子view的宽度—>ChildWidth
核心代码:
childWidth=getWidth()/4;
System.out.println("getWidth "+getWidth());
System.out.println("getHeight "+getHeight());
System.out.println("childWidth "+childWidth);
int childCount = getChildCount();
for(int i=0;i<childCount;i++){
// measure(getChildAt(i).getWidth(), getChildAt(i).getHeight());
mchildWidth=getChildAt(i).getWidth();
System.out.println(mchildWidth);
}
System.out.println("childCount "+childCount);
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
public boolean onInterceptTouchEvent(MotionEvent e) {
switch (e.getAction()) {
case MotionEvent.ACTION_DOWN:
break;
case MotionEvent.ACTION_MOVE:
moveX= (int) e.getRawX();
if (moveX>0&&moveX<=childWidth) {
onListener.Listener1();
}
if (moveX>childWidth&&moveX<=childWidth*2) {
onListener.Listener2();
}
if (moveX>childWidth*2&&moveX<=childWidth*3) {
onListener.Listener3();
}
if (moveX>childWidth*3&&moveX<=childWidth*4) {
onListener.Listener4();
}
break;
case MotionEvent.ACTION_UP:
touchIndex = -1;
break;
}
return super.onInterceptTouchEvent(e);
}
由于是demo··所以有很多地方不是很规范~~