ViewPager+Fragment实现应用框架
来源:互联网 发布:php程序设计徐辉答案 编辑:程序博客网 时间:2024/05/06 00:38
ViewPager+Fragment实现应用框架
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.moliying.fragmentviewpagerdemo.MainActivity">
<android.support.v4.view.ViewPager
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:id="@+id/viewPager"/>
<RadioGroup
android:gravity="center"
android:id="@+id/tab_group"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/tab_bg"
android:orientation="horizontal">
<RadioButton
android:gravity="center"
android:button="@null"
android:drawableTop="@drawable/tab_home_selector_bg"
android:textColor="@drawable/tab_selector_bg"
android:layout_weight="1"
android:tag="0"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:text="主页"/>
<RadioButton
android:gravity="center"
android:button="@null"
android:drawableTop="@drawable/tab_discover_selector_bg"
android:textColor="@drawable/tab_selector_bg"
android:layout_weight="1"
android:tag="1"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:text="发现"/>
<RadioButton
android:gravity="center"
android:button="@null"
android:drawableTop="@drawable/tab_personal_selector_bg"
android:textColor="@drawable/tab_selector_bg"
android:layout_weight="1"
android:tag="2"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:text="我"/>
</RadioGroup>
</LinearLayout>
IndexFragment类:
public class IndexFragment extends Fragment {
public static IndexFragment getInstance(){
IndexFragment indexFragment = new IndexFragment();
return indexFragment;
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.index_fragment_layout,null);
return view;
}
}
IndexFragment对应的布局文件:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#ff5b5b">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="index layout"
android:id="@+id/textView"
android:layout_gravity="center_horizontal"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true" />
</RelativeLayout>
DiscoverFragment类
public class DiscoverFragment extends Fragment {
public static DiscoverFragment getInstance(){
DiscoverFragment discoverFragment = new DiscoverFragment();
return discoverFragment;
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.discover_fragment_layout,null);
return view;
}
}
DiscoverFragment布局文件:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#f109c6">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="discover layout"
android:id="@+id/textView"
android:layout_gravity="center_horizontal"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true" />
</RelativeLayout>
PersonalFragment类
public class PersonalFragment extends Fragment {
public static PersonalFragment getInstance(){
PersonalFragment personalFragment = new PersonalFragment();
return personalFragment;
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.personal_fragment_layout,null);
return view;
}
}
PersonalFragment的布局文件:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#53ba03">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="personal layout"
android:id="@+id/textView"
android:layout_gravity="center_horizontal"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true" />
</RelativeLayout>
fragments.add(IndexFragment.getInstance());
fragments.add(DiscoverFragment.getInstance());
fragments.add(PersonalFragment.getInstance());
MyViewPagerAdapter myViewPagerAdapter = new MyViewPagerAdapter(getSupportFragmentManager(), fragments);
viewPager.setAdapter(myViewPagerAdapter);
MyViewPagerAdapter类:
static class MyViewPagerAdapter extends FragmentPagerAdapter {
private ArrayList<Fragment> fragments;
public MyViewPagerAdapter(FragmentManager fm, ArrayList<Fragment> fragments) {
super(fm);
this.fragments = fragments;
}
@Override
public Fragment getItem(int position) {
return fragments.get(position);
}
@Override
public int getCount() {
return fragments.size();
}
}
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {}
@Override
public void onPageSelected(int position) {
radioButtons.get(position).setChecked(true);
}
@Override
public void onPageScrollStateChanged(int state) {}
RadioGroup的单击事件:
在Activity类实现事件接口:RadioGroup.OnCheckedChangeListener
初始化时调用:
private ArrayList<RadioButton> radioButtons = new ArrayList<>();
tab_group.setOnCheckedChangeListener(this);
for (int i = 0; i < tab_group.getChildCount(); i++) {
radioButtons.add((RadioButton) tab_group.getChildAt(i));
}
事件方法:
public void onCheckedChanged(RadioGroup group, int checkedId) {
RadioButton rb = (RadioButton) group.findViewById(checkedId);
int index = Integer.parseInt(rb.getTag().toString());
viewPager.setCurrentItem(index);
}
<1>Activity类的布局文件:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.moliying.fragmentviewpagerdemo.MainActivity">
<android.support.v4.view.ViewPager
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:id="@+id/viewPager"/>
<RadioGroup
android:gravity="center"
android:id="@+id/tab_group"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/tab_bg"
android:orientation="horizontal">
<RadioButton
android:gravity="center"
android:button="@null"
android:drawableTop="@drawable/tab_home_selector_bg"
android:textColor="@drawable/tab_selector_bg"
android:layout_weight="1"
android:tag="0"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:text="主页"/>
<RadioButton
android:gravity="center"
android:button="@null"
android:drawableTop="@drawable/tab_discover_selector_bg"
android:textColor="@drawable/tab_selector_bg"
android:layout_weight="1"
android:tag="1"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:text="发现"/>
<RadioButton
android:gravity="center"
android:button="@null"
android:drawableTop="@drawable/tab_personal_selector_bg"
android:textColor="@drawable/tab_selector_bg"
android:layout_weight="1"
android:tag="2"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:text="我"/>
</RadioGroup>
</LinearLayout>
<2>创建三个Fragment及其布局文件
IndexFragment类:
public class IndexFragment extends Fragment {
public static IndexFragment getInstance(){
IndexFragment indexFragment = new IndexFragment();
return indexFragment;
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.index_fragment_layout,null);
return view;
}
}
IndexFragment对应的布局文件:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#ff5b5b">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="index layout"
android:id="@+id/textView"
android:layout_gravity="center_horizontal"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true" />
</RelativeLayout>
DiscoverFragment类
public class DiscoverFragment extends Fragment {
public static DiscoverFragment getInstance(){
DiscoverFragment discoverFragment = new DiscoverFragment();
return discoverFragment;
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.discover_fragment_layout,null);
return view;
}
}
DiscoverFragment布局文件:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#f109c6">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="discover layout"
android:id="@+id/textView"
android:layout_gravity="center_horizontal"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true" />
</RelativeLayout>
PersonalFragment类
public class PersonalFragment extends Fragment {
public static PersonalFragment getInstance(){
PersonalFragment personalFragment = new PersonalFragment();
return personalFragment;
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.personal_fragment_layout,null);
return view;
}
}
PersonalFragment的布局文件:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#53ba03">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="personal layout"
android:id="@+id/textView"
android:layout_gravity="center_horizontal"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true" />
</RelativeLayout>
<3>在Activity中初始化Fragment
private ArrayList<Fragment> fragments = new ArrayList<>();fragments.add(IndexFragment.getInstance());
fragments.add(DiscoverFragment.getInstance());
fragments.add(PersonalFragment.getInstance());
<4>初始化ViewPager组件,及适配器
viewPager = (ViewPager) findViewById(R.id.viewPager);MyViewPagerAdapter myViewPagerAdapter = new MyViewPagerAdapter(getSupportFragmentManager(), fragments);
viewPager.setAdapter(myViewPagerAdapter);
MyViewPagerAdapter类:
static class MyViewPagerAdapter extends FragmentPagerAdapter {
private ArrayList<Fragment> fragments;
public MyViewPagerAdapter(FragmentManager fm, ArrayList<Fragment> fragments) {
super(fm);
this.fragments = fragments;
}
@Override
public Fragment getItem(int position) {
return fragments.get(position);
}
@Override
public int getCount() {
return fragments.size();
}
}
<5>viewPager的事件处理及RadioGroup的单击事件
viewPager事件处理:在Activity类实现事件接口:ViewPager.OnPageChangeListenerpublic void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {}
@Override
public void onPageSelected(int position) {
radioButtons.get(position).setChecked(true);
}
@Override
public void onPageScrollStateChanged(int state) {}
RadioGroup的单击事件:
在Activity类实现事件接口:RadioGroup.OnCheckedChangeListener
初始化时调用:
private ArrayList<RadioButton> radioButtons = new ArrayList<>();
tab_group.setOnCheckedChangeListener(this);
for (int i = 0; i < tab_group.getChildCount(); i++) {
radioButtons.add((RadioButton) tab_group.getChildAt(i));
}
事件方法:
public void onCheckedChanged(RadioGroup group, int checkedId) {
RadioButton rb = (RadioButton) group.findViewById(checkedId);
int index = Integer.parseInt(rb.getTag().toString());
viewPager.setCurrentItem(index);
}
0 0
- ViewPager+Fragment实现应用框架
- 第二篇--viewpager+fragment打造应用框架
- TabLayout + ViewPager + Fragment 实现动态框架
- ViewPager+Fragment布局框架
- Fragment+TabPageIndicator+ViewPager实现蜜淘主体框架
- TabPageIndicator + ViewPager + FragmentPagerAdapter + Fragment分析APP主框架实现
- ViewPager+Fragment实现TabHost
- Android实现ViewPager+Fragment
- TabLayout 实现ViewPager+fragment
- ViewPager+Fragment实现
- Fragment+ViewPager 实现仿微信
- fragment+viewpager实现布局
- ViewPager实现Fragment切换
- Android ViewPager Fragment 简单应用
- ViewPager -----使用Fragment实现ViewPager滑动
- ViewPager + Fragment组合实现局部刷新Fragment
- ViewPager+Fragment实现滑动标签
- ViewPager+Fragment实现滑动页面
- Sublime Text 2/3 常用快捷键
- Eclipse转Android Studio
- 记录一次java优化过程
- 图解VC++版PE文件解析器源码分析
- html scrip src
- ViewPager+Fragment实现应用框架
- 垃圾收集器与内存分配策略
- 手机网站自适应的方法2
- 手机网站自适应的方法2
- javascript中对象写在函数外面,函数内部不能使用
- 硬件设计规范
- 2016.7.13 读书
- codeforces 630H. Benches
- 高并发网络编程epoll