自动轮询
viewPager.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
runTask.stop();
break;
case MotionEvent.ACTION_CANCEL: // 事件的取消
case MotionEvent.ACTION_UP:
runTask.start();
break;
}
return false; // viewPager 触摸事件 返回值要是false
}
});
动画
1 ValueAnimator 值动画
animator.addUpdateListener(new AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
int value=(Integer) animation.getAnimatedValue(); // 当前时间点变化后的值
System.out.println(value);
}
});
animator.setDuration(500);
animator.start();
2 测量
/**
* 获取控件实际的高度
*/
public int getMeasureHeight(){
int width = safe_content.getMeasuredWidth(); // 由于宽度不会发生变化 宽度的值取出来
safe_content.getLayoutParams().height = ViewGroup.LayoutParams.WRAP_CONTENT;// 让高度包裹内容
// 参数1 测量控件mode 参数2 大小
int widthMeasureSpec=MeasureSpec.makeMeasureSpec(MeasureSpec.EXACTLY, width); // mode+size
int heightMeasureSpec=MeasureSpec.makeMeasureSpec(MeasureSpec.AT_MOST, 1000);// 我的高度 最大是1000
// 测量规则 宽度是一个精确的值width, 高度最大是1000,以实际为准
safe_content.measure(widthMeasureSpec, heightMeasureSpec); // 通过该方法重新测量控件
return safe_content.getMeasuredHeight();
}
描述Holder
3 获取ScollView
/**
* 获取到界面的ScollView
*/
public ScrollView getScrollView(View view){
ViewParent parent = view.getParent();
if(parent instanceof ViewGroup){
ViewGroup group=(ViewGroup) parent;
if(group instanceof ScrollView){
return (ScrollView)group;
}else{
return getScrollView(group);
}
}else{
return null;
}
}
scrollView.scrollTo(0, scrollView.getMeasuredHeight());// 让scrollView 移动到最下面