您的位置:首页 > 其它

TabLayout + ViewPager + Fragment 实现动态框架

2016-11-22 21:16 621 查看

TabLayout + ViewPager + Fragment 实现动态框架

先看一下效果图



相信大家RadioGroup+ViewPager或者FragmentTabHost+ViewPager

的实现方式大家都知道了,关于这个TabLayout+ViewPager

我只想说太他妈容易实现我们想要的效果了

使用之前要说的:需要导入依赖,

compile 'com.android.support:appcompat-v7:24.2.0'
compile 'com.android.support:design:24.2.0'
compile files('libs/butterknife-7.0.0.jar')


三个Fragment 格式一样,这里我就放一个吧

package com.oblivion.tablayout.fragment;

import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

/**
* github : https://github.com/oblivion0001/AndroidStudioProjects * Blog : http://blog.csdn.net/qq_16666847 * Created by oblivion on 2016/11/22.
*/
public class HomeFragment extends Fragment {
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
TextView tv = new TextView(getContext());
tv.setText(getClass().getSimpleName());
tv.setGravity(Gravity.CENTER);
return tv;
}
}


为了方便使用Fragment我创建了简单的Fragment工厂

package com.oblivion.tablayout.fragmentfactory;

import android.support.v4.app.Fragment;

import com.oblivion.tablayout.fragment.AppFragment;
import com.oblivion.tablayout.fragment.HomeFragment;
import com.oblivion.tablayout.fragment.PlayFragment;

/**
* github : https://github.com/oblivion0001/AndroidStudioProjects * Blog : http://blog.csdn.net/qq_16666847 * Created by oblivion on 2016/11/22.
*/
public class FragmentFactory {
public static Fragment getFragment(int position) {
Fragment fragment = null;
switch (position) {
case 0:
fragment = new HomeFragment();
break;
case 1:
fragment = new AppFragment();
break;
case 2:
fragment = new PlayFragment();
break;
}
return fragment;
}
}


接下来就是我们的实现拉

package com.oblivion.tablayout;

import android.os.Bundle;
import android.support.design.widget.TabLayout;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;

import com.oblivion.tablayout.fragmentfactory.FragmentFactory;

import butterknife.Bind;
import butterknife.ButterKnife;

public class MainActivity extends FragmentActivity {

@Bind(R.id.tab)
TabLayout tab;
@Bind(R.id.viewpager)
ViewPager viewpager;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ButterKnife.bind(this);
viewpager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tab));
tab.setupWithViewPager(viewpager);
setAdapter();
}

private void setAdapter() {
viewpager.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()) {
@Override
public Fragment getItem(int position) {
return FragmentFactory.getFragment(position);
}

@Override
public int getCount() {
return 3;
}

@Override
public CharSequence getPageTitle(int position) {
String[] str = new String[]{"首页", "应用",
c125
"游戏"};
return str[position];
}
});
}
}


是不是很简单源码地址
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息