Android开发技巧――ViewPager衍生出来的2个类
来源:程序员人生 发布时间:2014-09-08 11:36:39 阅读次数:2341次
1、不能左右滑动的ViewPager
/*
* Date: 14-7-28
* Project: Access-Control-V2
*/
package cn.irains.access.v2.common;
import android.content.Context;
import android.support.v4.view.ViewPager;
import android.util.AttributeSet;
import android.view.MotionEvent;
/**
* Author: msdx (645079761@qq.com)
* Time: 14-7-28 上午10:20
*/
public class StaticViewPager extends ViewPager {
public StaticViewPager(Context context) {
super(context);
}
public StaticViewPager(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
return false;
}
@Override
public boolean onTouchEvent(MotionEvent ev) {
return false;
}
@Override
public void setCurrentItem(int item) {
this.setCurrentItem(item, false);
}
}
2、高度可以为WrapContent的ViewPager
/*
* Date: 14-8-18
* Project: Access-Control-V2
*/
package cn.irains.access.v2.common;
import android.content.Context;
import android.support.v4.view.ViewPager;
import android.util.AttributeSet;
import android.view.View;
/**
* Author: msdx (645079761@qq.com)
* Time: 14-8-18 上午11:22
*/
public class WrapHeightViewPager extends ViewPager {
public WrapHeightViewPager(Context context) {
super(context);
}
public WrapHeightViewPager(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int height = 0;
for (int i = 0; i < getChildCount(); i++) {
View child = getChildAt(i);
child.measure(widthMeasureSpec, MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
int h = child.getMeasuredHeight();
if (h > height) height = h;
}
heightMeasureSpec = MeasureSpec.makeMeasureSpec(height, MeasureSpec.EXACTLY);
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
/**
* Determines the height of this view
*
* @param measureSpec A measureSpec packed into an int
* @param view the base view with already measured height
* @return The height of the view, honoring constraints from measureSpec
*/
private int measureHeight(int measureSpec, View view) {
int result = 0;
int specMode = MeasureSpec.getMode(measureSpec);
int specSize = MeasureSpec.getSize(measureSpec);
if (specMode == MeasureSpec.EXACTLY) {
result = specSize;
} else {
// set the height from the base view if available
if (view != null) {
result = view.getMeasuredHeight();
}
if (specMode == MeasureSpec.AT_MOST) {
result = Math.min(result, specSize);
}
}
return result;
}
}
生活不易,码农辛苦
如果您觉得本网站对您的学习有所帮助,可以手机扫描二维码进行捐赠