android中ViewPager 与fragment 的一个应用
16lz
2021-01-26
过几秒自己滑动fragment,按立即体验跳入下面的页面
这个里面还有一个ViewPager。可以滑动,上面有一个横杆,可以跟着走
App类来确定fragment之间的加载
public class App extends AppCompatActivity implements RadioGroup.OnCheckedChangeListener { Fragment[] fragments = new Fragment[5]; RadioGroup rg; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.app_layout); rg = (RadioGroup) findViewById(R.id.rg); rg.setOnCheckedChangeListener(this); showFragment(0); rg.check(R.id.rb1); } @Override public void onCheckedChanged(RadioGroup group, int checkedId) { switch (checkedId) { case R.id.rb1: showFragment(0); break; case R.id.rb2: showFragment(1); break; case R.id.rb3: showFragment(2); break; case R.id.rb4: showFragment(3); break; case R.id.rb5: showFragment(4); break; } } //上一次界面上显示的哪一个Fragment int currIndex = -1; //代表第一次进来 //展示Fragment public void showFragment(int index) { if (index == currIndex) return; FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); if (currIndex != -1) { ft.hide(fragments[currIndex]); } if (fragments[index] == null) { createFragment(index); ft.add(R.id.fl_content, fragments[index]); } else { ft.show(fragments[index]); } currIndex = index; ft.commit(); } //新建一个Fragment private void createFragment(int index) { switch (index) { case 0: fragments[0] = new CollectFragment(); break; case 1: fragments[1] = new OrderFragment(); break; case 2: fragments[2] = new HomePageFragment(); break; case 3: fragments[3] = new PersonalCenterFragment(); break; case 4: fragments[4] = new SettingFragment(); break; } }}
MainActivity 类
public class MainActivity extends AppCompatActivity implements View.OnClickListener { ViewPager vp; Timer timer; Button btn; LinearLayout rl; public void start() { timer = new Timer(); timer.schedule(new TimerTask() { @Override public void run() { runOnUiThread(new Runnable() { @Override public void run() { vp.setCurrentItem(vp.getCurrentItem() + 1); } }); } }, 3000, 2000); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); vp = (ViewPager) findViewById(R.id.vp); btn = (Button) findViewById(R.id.btn); vp.setAdapter(new myPagerAdapter()); start(); btn.setOnClickListener(this); vp.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } int index;//一开始是第0页 已经被选中 @Override public void onPageSelected(int position) { //Intent intent = new Intent(getBaseContext(), App.class); //startActivity(intent); rl.getChildAt(index).setSelected(false); rl.getChildAt(position).setSelected(true); index = position; } @Override public void onPageScrollStateChanged(int state) { } }); initPiont(); } private void initPiont() { rl = (LinearLayout) findViewById(R.id.rl); for (int i = 0; i <3 ; i++) { View v = new View(this); LinearLayout.LayoutParams parames = new LinearLayout.LayoutParams(20,20); v.setBackgroundResource(R.drawable.point_select); parames.setMargins(10,10,10,10); v.setLayoutParams(parames); rl.addView(v); } rl.getChildAt(0).setSelected(true); } @Override public void onClick(View v) { Intent intent = new Intent(MainActivity.this, App.class); startActivity(intent); } class myPagerAdapter extends PagerAdapter { int[] imgId = {R.mipmap.a, R.mipmap.b, R.mipmap.c}; List viewList = new ArrayList<>(); public myPagerAdapter() { for (int i = 0; i < 3; i++) { ImageView iv = new ImageView(getBaseContext()); iv.setImageResource(imgId[i]); iv.setScaleType(ImageView.ScaleType.FIT_XY); viewList.add(iv); } } @Override public int getCount() { return viewList.size(); } @Override public boolean isViewFromObject(View view, Object object) { return view == object; } @Override public Object instantiateItem(ViewGroup container, int position) { container.addView(viewList.get(position)); return viewList.get(position); } @Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView(viewList.get(position)); } }}
AttractionFragment 类,景点门票类
public class AttractionFragment 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); }}
CollectFragment 类收藏界面的fragment
public class CollectFragment extends Fragment { @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { TextView tv = new TextView(getActivity()); tv.setText("这是收藏的界面"); tv.setTextSize(50); return tv; }}
HomePageFragment 首页fragment的界面
public class HomePageFragment 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.home_fragment, null); } List 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 TourismFragment()); mList.add(new AttractionFragment()); } @Override public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); home_rg = (RadioGroup) view.findViewById(R.id.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 MyFragmentAdapter(getChildFragmentManager(), mList)); home_rg.setOnCheckedChangeListener(this); home_vp.addOnPageChangeListener(this); home_rg.check(R.id.home_rg_rb1); indicator(); } //将他做成 1半 int width; public void indicator() { 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_rg_rb1 ? 0 : 1); } @Override public void onPageScrolled(int position, float positionOffset, int 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_rg_rb1 : R.id.home_rg_rb2); } @Override public void onPageScrollStateChanged(int state) { }}
MyFragmentAdapter 类
public class MyFragmentAdapter extends FragmentPagerAdapter { List mList; public MyFragmentAdapter(FragmentManager fm, List list) { super(fm); this.mList = list; } @Override public Fragment getItem(int position) { return mList.get(position); } @Override public int getCount() { return mList.size(); }}
OrderFragment 类,订单的fragment
public class OrderFragment extends Fragment { @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { TextView tv = new TextView(getActivity()); tv.setText("这是订单的界面"); tv.setTextSize(50); return tv; }}
PersonalCenterFragment 类 ,个人中心
public class PersonalCenterFragment extends Fragment { @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { TextView tv = new TextView(getActivity()); tv.setText("这是个人中心的界面"); tv.setTextSize(50); return tv; }}
SettingFragment 类,设置
public class SettingFragment extends Fragment { @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { TextView tv = new TextView(getActivity()); tv.setText("这是设置的界面"); tv.setTextSize(50); return tv; }}
TourismFragment 类,旅游度假页面
public class TourismFragment 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); }}
activity_mian.xml,设置的是ViewPager
<?xml version="1.0" encoding="utf-8"?><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.work10_1_10_20.MainActivity"><android.support.v4.view.ViewPager android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/vp" /> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:orientation="horizontal" android:layout_margin="50dp" android:layout_centerHorizontal="true" android:id="@+id/rl" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal" android:layout_above="@id/rl" android:layout_centerHorizontal="true" android:background="@drawable/shape1" android:text="立即体验 > " android:id="@+id/btn" android:textColor="@android:color/white" />RelativeLayout>
app_layout.xml
<?xml version="1.0" encoding="utf-8"?><RelativeLayout 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/rg" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:background="#004E89" android:gravity="center" android:orientation="horizontal"> <RadioButton android:id="@+id/rb1" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:drawableTop="@drawable/favor" android:button="@null" android:gravity="center" android:text="收藏" /> <View android:layout_width="1dp" android:layout_height="50dp" android:background="#171717" /> <RadioButton android:id="@+id/rb2" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:drawableTop="@drawable/order" android:button="@null" android:gravity="center" android:text="订单" /> <View android:layout_width="1dp" android:layout_height="50dp" android:background="#171717" /> <RadioButton android:id="@+id/rb3" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:drawableTop="@drawable/home" android:button="@null" android:gravity="center" android:text="首页" /> <View android:layout_width="1dp" android:layout_height="50dp" android:background="#171717" /> <RadioButton android:id="@+id/rb4" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:drawableTop="@drawable/uc" android:button="@null" android:gravity="center" android:text="个人中心" /> <View android:layout_width="1dp" android:layout_height="50dp" android:background="#171717" /> <RadioButton android:id="@+id/rb5" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:drawableTop="@drawable/setting" android:button="@null" android:gravity="center" android:text="设置" /> RadioGroup> <FrameLayout android:id="@+id/fl_content" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_above="@id/rg" />RelativeLayout>
home_fragment.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/rg" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <RadioButton android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="1" android:button="@null" android:id="@+id/home_rg_rb1" android:background="@drawable/back" android:textColor="@android:color/white" android:padding="10dp" android:gravity="center" android:text="旅游度假" /> <RadioButton android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="1" android:background="@drawable/back" android:id="@+id/home_rg_rb2" android:button="@null" android:textColor="@android:color/white" android:padding="10dp" android:gravity="center" android:text="景点门票" /> 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:layout_width="match_parent" android:id="@+id/home_vp" android:layout_height="wrap_content"/>LinearLayout>
colors的配置
<?xml version="1.0" encoding="utf-8"?><resources> <color name="colorPrimary">#3F51B5color> <color name="colorPrimaryDark">#303F9Fcolor> <color name="colorAccent">#FF4081color> <color name="back_check">#1b207ccolor> <color name="back_check_nor">#80437be2color>resources>
更多相关文章
- Android(安卓)5.0系统 style 默认窗口控件颜色值设置
- Android(安卓)Video简述
- ANDROID PERMISSION ALL
- Android(安卓)Studio 安装使用教程
- android(8) ViewPager页面滑动切换
- android webView 的 webSettings 最全的说明
- android轮播图Banner的使用及详解
- android 布局相关
- android实现滑动解锁