在原公司待着没什么成长性,基本上每天都是坐等下班的状况,所以我决定辞职找一份具有挑战性的工作,由于8月份这个季节属于淡季,我拿到8份offer但是 由于这些公司做的产品 基本技术要求不高都是差不多的,所以我放弃了,接着找。然后闲来无事,看到boss直聘里面的一个ui效果,感觉还不错就撸了一个。
现在我们回归话题 话不多说直接上代码
布局文件
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.admin.bossdemo.MainActivity"
>
<RelativeLayout
android:id="@+id/ll"
android:layout_width="match_parent"
android:layout_height="60dp"
android:background="@android:color/holo_blue_bright"
>
<android.support.design.widget.TabLayout
android:id="@+id/tb"
android:layout_width="200dp"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
app:tabBackground="@drawable/shap"
app:tabIndicatorHeight="0dp"
app:tabSelectedTextColor="@android:color/holo_blue_bright"
app:tabTextColor="@android:color/white"
>
</android.support.design.widget.TabLayout>
</RelativeLayout>
<android.support.v4.view.ViewPager
android:id="@+id/vp"
android:layout_below="@id/ll"
android:layout_width="match_parent"
android:layout_height="match_parent">
</android.support.v4.view.ViewPager>
</RelativeLayout>
核心代码 主要是对子viewpager进行分发处理
public class MyViewPager extends ViewPager {
private int currentX;
private int currentY;
public MyViewPager(Context context) {
super(context);
}
public MyViewPager(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
getParent().requestDisallowInterceptTouchEvent(true);
switch (ev.getAction()){
case MotionEvent.ACTION_DOWN:
currentX = (int) ev.getX();
currentY = (int) ev.getY();
break;
case MotionEvent.ACTION_MOVE:
int moveX = (int) ev.getX();
int moveY = (int) ev.getX();
//做是向上下移动还是左右移动操作处理
int mx = moveX - currentX;
int my = moveY - currentY;
if(Math.abs(mx) >Math.abs(my)){ //如果大于表示是左右移动 否则的话是上下移动
int currentItem = getCurrentItem();
if(mx>0) {
if (currentItem == 0) { //如果是第一个让父view处理
getParent().requestDisallowInterceptTouchEvent(false);
}
}else{
int itemCount = getAdapter().getCount();
if(currentItem == itemCount-1){ //如果是最后一个让父view处理
getParent().requestDisallowInterceptTouchEvent(false);
}
}
}else{
getParent().requestDisallowInterceptTouchEvent(false);//让父view处理
}
break;
default:
break;
}
return super.dispatchTouchEvent(ev);
}
}
adapter
public class TabAdapter extends FragmentPagerAdapter {
List<BaseFramgnet> list ;
List<String> titles;
public TabAdapter(FragmentManager fm, List<BaseFramgnet> t, List<String> title) {
super(fm);
list = t;
titles = title;
}
@Override
public BaseFramgnet getItem(int position) {
return list.get(position);
}
@Override
public int getCount() {
return list.size();
}
@Override
public CharSequence getPageTitle(int position) {
return titles.get(position);
}
}
最后使用
List<BaseFramgnet> list = new ArrayList<>();
list.add(new FragmentOne());
list.add(new FragmentW());
List<String> strings = new ArrayList<>();
strings.add("聊天");
strings.add("互动");
TabAdapter tabAdapter = new TabAdapter(getSupportFragmentManager(),list,strings);
vp.setAdapter(tabAdapter);
tb.setupWithViewPager(vp);
最后奉上demo地址
https://download.youkuaiyun.com/download/cly19940419/10635908