Fragment应用实例
来源:互联网 发布:恩华三唑仑片淘宝 编辑:程序博客网 时间:2024/06/04 18:07
- MainActivity中:
package com.example.administrator.lesson10_framework;import android.os.Bundle;import android.support.v4.app.Fragment;import android.support.v4.app.FragmentTransaction;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.widget.RadioGroup;public class MainActivity extends AppCompatActivity implements RadioGroup.OnCheckedChangeListener { RadioGroup tab_rg; Fragment[] fragments = new Fragment[5]; int currIndex = -1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tab_rg = (RadioGroup) findViewById(R.id.tab_rg); tab_rg.setOnCheckedChangeListener(this); showFragment(2); tab_rg.check(R.id.tab_rb_home); } //显示Fragment private void showFragment(int index) { //在ImageView的框架中使用 if (index == currIndex) return; FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); if (currIndex != -1) { //隐藏上一个页面 ft.hide(fragments[currIndex]); } if (fragments[index] == null) { //创建 fragments[index] = FragmentUtils.getInstance(index); //添加进去 ft.add(R.id.fl_content, fragments[index]); } else { ft.show(fragments[index]); } ft.commit(); currIndex = index; } @Override public void onCheckedChanged(RadioGroup group, int checkedId) { View rg = tab_rg.findViewById(checkedId);//R.id.tab_rb_home; String tag = rg.getTag().toString(); showFragment(Integer.parseInt(tag)); }}
- 新建FragmentUtils 类:
import android.support.v4.app.Fragment;public class FragmentUtils { //工厂模式 public static final Fragment newInstance(int type) { switch (type) { case 0: return new FavorFragment(); case 1: return new OrderFragment(); case 2: return new HomeFragment(); case 3: return new UCFragment(); case 4: return new SettingFragment(); } return null; } //反射方式 public static final String[] className = {"Favor", "Order", "Home", "UC", "Setting"}; public static final Fragment getInstance(int type) { try { //通过一个类的字符串对象,转换成一个Class 类类型 Class clasName = Class.forName("com.example.administrator.lesson10_framework." + className[type] + "Fragment"); //通过类的类型去创建实例 必须有无参构造方法 并且是公开的 return (Fragment) clasName.newInstance(); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (InstantiationException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } return null; }}
- 收藏FavorFragment
public class FavorFragment extends Fragment { @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { return View.inflate(getActivity(), android.R.layout.simple_list_item_1, null); } @Override public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); view.setBackgroundColor(Color.YELLOW); }}
- 订单OrderFragment
public class OrderFragment extends Fragment { @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { return View.inflate(getActivity(), android.R.layout.simple_list_item_1, null); } @Override public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); view.setBackgroundColor(Color.RED); }}
- 主页HomeFragment
import android.os.Bundle;import android.support.annotation.Nullable;import android.support.v4.app.Fragment;import android.support.v4.view.ViewPager;import android.util.Log;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.FrameLayout;import android.widget.RadioGroup;import java.util.ArrayList;import java.util.List;public class HomeFragment extends Fragment implements RadioGroup.OnCheckedChangeListener, ViewPager.OnPageChangeListener { @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { return View.inflate(getActivity(), R.layout.fragment_home, null); } List<Fragment> mList = new ArrayList<>(); RadioGroup home_rg; ViewPager home_vp; View view_indicator; @Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); mList.add(new LvyouFragment()); mList.add(new JingdianFragment()); } @Override public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); home_rg = (RadioGroup) view.findViewById(R.id.home_rg); home_vp = (ViewPager) view.findViewById(R.id.home_vp); view_indicator = view.findViewById(R.id.view_indicator); //在Fragment中设置FragmentPagerAdapter必须使用Child home_vp.setAdapter(new MyFragmentPagerAdapter(getChildFragmentManager(), mList)); home_rg.setOnCheckedChangeListener(this); home_vp.addOnPageChangeListener(this); home_rg.check(R.id.home_rb_lvyou); initIndicator(); } //将他做成 1半 int width; public void initIndicator() { width = getResources().getDisplayMetrics().widthPixels / 2; FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(width, ViewGroup.LayoutParams.MATCH_PARENT); view_indicator.setLayoutParams(params); } @Override public void onCheckedChanged(RadioGroup group, int checkedId) { home_vp.setCurrentItem(checkedId == R.id.home_rb_lvyou ? 0 : 1); } @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { Log.e("TAG", "页面:" + position + " offset偏移百分比" + positionOffset + " pix像素" + positionOffsetPixels); //拿到属性 FrameLayout.LayoutParams params = (FrameLayout.LayoutParams) view_indicator.getLayoutParams(); int left = (int) ((position + positionOffset) * width); params.setMargins(left, 0, 0, 0); view_indicator.setLayoutParams(params); } @Override public void onPageSelected(int position) { home_rg.check(position == 0 ? R.id.home_rb_lvyou : R.id.home_rb_jingdian); } @Override public void onPageScrollStateChanged(int state) { }}
- 个人中心UCFragment
public class UCFragment extends Fragment { @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { return View.inflate(getActivity(), android.R.layout.simple_list_item_1, null); } @Override public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); view.setBackgroundColor(Color.BLUE); }}
- 设置SettingFragment
public class SettingFragment extends Fragment { @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { return View.inflate(getActivity(), android.R.layout.simple_list_item_1, null); } @Override public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); view.setBackgroundColor(Color.GRAY); }}
- 旅游度假LvyouFragment
public class LvyouFragment extends Fragment { @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { return View.inflate(getActivity(), android.R.layout.simple_list_item_1, null); } @Override public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); view.setBackgroundColor(Color.MAGENTA); }}
- 景点门票JingdianFragment
public class JingdianFragment extends Fragment { @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { return View.inflate(getActivity(), android.R.layout.simple_list_item_1, null); } @Override public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); view.setBackgroundColor(Color.DKGRAY); }}
- 适配器MyFragmentPagerAdapter
import android.support.v4.app.Fragment;import android.support.v4.app.FragmentManager;import android.support.v4.app.FragmentPagerAdapter;import java.util.List;public class MyFragmentPagerAdapter extends FragmentPagerAdapter { List<Fragment> mList; public MyFragmentPagerAdapter(FragmentManager fm, List<Fragment> list) { super(fm); this.mList = list; } @Override public Fragment getItem(int position) { return mList.get(position); } @Override public int getCount() { return mList.size(); }}
- activity_main.xml:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.example.administrator.lesson10_framework.MainActivity"> <RadioGroup android:id="@+id/tab_rg" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:orientation="horizontal"> <RadioButton android:tag="0" android:id="@+id/tab_rb_favor" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:background="@drawable/back" android:button="@null" android:drawableTop="@drawable/tab_favor" android:gravity="center" android:padding="10dp" android:text="收藏" android:textColor="@android:color/white" /> <RadioButton android:tag="1" android:id="@+id/tab_rb_order" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:background="@drawable/back" android:button="@null" android:drawableTop="@drawable/tab_order" android:gravity="center" android:padding="10dp" android:text="订单" android:textColor="@android:color/white" /> <RadioButton android:tag="2" android:id="@+id/tab_rb_home" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:background="@drawable/back" android:button="@null" android:drawableTop="@drawable/tab_home" android:gravity="center" android:padding="10dp" android:text="主页" android:textColor="@android:color/white" /> <RadioButton android:tag="3" android:id="@+id/tab_rb_uc" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:background="@drawable/back" android:button="@null" android:drawableTop="@drawable/tab_uc" android:gravity="center" android:padding="10dp" android:singleLine="true" android:text="个人中心" android:textColor="@android:color/white" /> <RadioButton android:tag="4" android:id="@+id/tab_rb_setting" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:background="@drawable/back" android:button="@null" android:drawableTop="@drawable/tab_setting" android:gravity="center" android:padding="10dp" android:text="设置 " android:textColor="@android:color/white" /> </RadioGroup> <FrameLayout android:id="@+id/fl_content" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_above="@id/tab_rg" /></RelativeLayout>
- fragment_home.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <RadioGroup android:id="@+id/home_rg" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <RadioButton android:id="@+id/home_rb_lvyou" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:background="@drawable/back" android:button="@null" android:gravity="center" android:padding="10dp" android:text="旅游度假" android:textColor="@android:color/white" /> <RadioButton android:id="@+id/home_rb_jingdian" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:background="@drawable/back" android:button="@null" android:gravity="center" android:padding="10dp" android:text="景点门票 " android:textColor="@android:color/white" /> </RadioGroup> <!--自定义指示器 !--> <FrameLayout android:layout_width="match_parent" android:layout_height="10dp"> <View android:layout_width="match_parent" android:layout_height="match_parent" android:background="@android:color/darker_gray" /> <View android:id="@+id/view_indicator" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#16c742" /> </FrameLayout> <android.support.v4.view.ViewPager android:id="@+id/home_vp" android:layout_width="match_parent" android:layout_height="match_parent" /></LinearLayout>
drawable:
- tab_favor:
<selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@mipmap/icon_favor_press" android:state_checked="true" /> <item android:drawable="@mipmap/icon_favor_normal" android:state_checked="false" /></selector>
- back.xml
<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@color/back_check" android:state_checked="true" /> <item android:drawable="@color/back_check_nor" android:state_checked="false" /></selector>
0 0
- Fragment应用实例
- fragment应用实例二
- Fragment应用实例
- Android Fragment 全面详解+Fragment应用实例
- [Android]Fragment的应用/点击替换fragment应用实例
- fragment实例
- Fragment实例
- Android Fragment应用实战:点击底部栏不懂选项弹不同Fragment实例
- Fragment小实例
- Android Fragment 实例
- Android Fragment实例
- Fragment 实例(1234)
- Fragment 简单实例详解
- Android Fragment实例
- Android组件:Fragment实例
- Android Fragment 简单实例
- Android Fragment实例
- Android Fragment实例
- jquery驾驶手册----事件相关
- 遗传算法GA及其在旅行商问题TSP上的研究
- DataBinding的小应用
- bzoj 1022: [SHOI2008]小约翰的游戏John(anti-nim)
- nginx 安装(支持https 多域名证书)
- Fragment应用实例
- bzoj4052
- 【AJAX】readyState和status的值及解释
- 包管理与包安装
- BC#90 解题报告
- 4514: [Sdoi2016]数字配对
- 掌握VS2010调试 -- 入门指南
- Spring MVC 拦截器(1)-HandlerInterceptor
- chrome 原生promise 实现 promise.map