• Android主页导航:fragment+viewpager


    简单实现Fragment+ViewPager实现主页导航控制,效果如下:

    一、activity_main.xml布局文件:

     1 <?xml version="1.0" encoding="utf-8"?>
     2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     3     android:layout_width="match_parent"
     4     android:layout_height="match_parent"
     5     android:orientation="vertical" >
     6 
     7     <android.support.v4.view.ViewPager
     8         android:id="@+id/viewpager_main"
     9         android:layout_width="match_parent"
    10         android:layout_height="0dp"
    11         android:layout_weight="7" />
    12 
    13     <LinearLayout
    14         android:layout_width="match_parent"
    15         android:layout_height="0dp"
    16         android:layout_weight="1"
    17         android:orientation="horizontal" >
    18 
    19         <RelativeLayout
    20             android:id="@+id/rel_signin"
    21             android:layout_width="0dp"
    22             android:layout_height="match_parent"
    23             android:background="@color/tab_select_bg"
    24             android:layout_weight="1" >
    25 
    26             <Button
    27                 style="@style/tab_style"
    28                 android:id="@+id/tab_signin"
    29                 android:drawableTop="@drawable/my"
    30                 android:text="@string/signin"/>
    31         </RelativeLayout>
    32 
    33         <RelativeLayout
    34              android:id="@+id/rel_contact"
    35             android:layout_width="0dp"
    36             android:layout_height="match_parent"
    37             android:layout_weight="1" >
    38 
    39             <Button
    40                 android:id="@+id/tab_contact"
    41                 style="@style/tab_style"
    42                 android:drawableTop="@drawable/my"
    43                 android:text="@string/contact"></Button>
    44         </RelativeLayout>
    45 
    46         <RelativeLayout
    47              android:id="@+id/rel_search"
    48             android:layout_width="0dp"
    49             android:layout_height="match_parent"
    50             android:layout_weight="1" >
    51 
    52             <Button
    53                 android:id="@+id/tab_search"
    54                 style="@style/tab_style"
    55                 android:drawableTop="@drawable/my"
    56                 android:text="@string/searrch"></Button>
    57         </RelativeLayout>
    58 
    59         <RelativeLayout
    60              android:id="@+id/rel_earning"
    61             android:layout_width="0dp"
    62             android:layout_height="match_parent"
    63             android:layout_weight="1" >
    64 
    65             <Button
    66                 android:id="@+id/tab_earning"
    67                 style="@style/tab_style"
    68                 android:drawableTop="@drawable/my"
    69                 android:text="@string/earning"
    70                  />
    71         </RelativeLayout>
    72 
    73         <RelativeLayout
    74             android:id="@+id/rel_my"
    75             android:layout_width="0dp"
    76             android:layout_height="match_parent"
    77             android:layout_weight="1" >
    78 
    79             <Button
    80                  android:id="@+id/tab_my"
    81                  style="@style/tab_style"
    82                 android:drawableTop="@drawable/my"
    83                 android:text="@string/my"
    84                  />
    85         </RelativeLayout>
    86     </LinearLayout>
    87 
    88 </LinearLayout>

    二、MainActivity主文件:

      1 package com.fragmentviewpagerdemo;
      2 
      3 import java.util.ArrayList;
      4 import java.util.List;
      5 
      6 import android.os.Bundle;
      7 import android.support.v4.app.Fragment;
      8 import android.support.v4.app.FragmentActivity;
      9 import android.support.v4.app.FragmentManager;
     10 import android.support.v4.app.FragmentPagerAdapter;
     11 import android.support.v4.view.ViewPager;
     12 import android.view.View;
     13 import android.widget.Button;
     14 import android.widget.RelativeLayout;
     15 
     16 import com.fragmentviewpagerdemo.fragment.MyFragment;
     17 
     18 public class MainActivity extends FragmentActivity {
     19     ViewPager viewpager_main;
     20     RelativeLayout rel_signin;
     21     RelativeLayout rel_contact;
     22     RelativeLayout rel_search;
     23     RelativeLayout rel_earning;
     24     RelativeLayout rel_my;
     25     Button tab_signin;
     26     Button tab_contact;
     27     Button tab_search;
     28     Button tab_earning;
     29     Button tab_my;
     30 
     31     private int currentPage = 0;
     32     private MyFragment signInFragment;
     33     private MyFragment searchFragment;
     34     private MyFragment contactFragment;
     35     private MyFragment earningFragment;
     36     private MyFragment myFragment;
     37 
     38     private List<RelativeLayout> mRelTabs;
     39     private List<Fragment> fragments;
     40     private List<Button> mTabs;// 按钮
     41 
     42     @Override
     43     protected void onCreate(Bundle savedInstanceState) {
     44         super.onCreate(savedInstanceState);
     45         setContentView(R.layout.activity_main);
     46         init();
     47         controlViewPager();
     48     }
     49 
     50     // 控制viewpager
     51     private void controlViewPager() {
     52         FragmentManager fm = getSupportFragmentManager();
     53         viewpager_main.setAdapter(new ViewPagerAdapter(fm));
     54         viewpager_main.setOnPageChangeListener(new pageChangeListener());
     55         for (int i = 0; i < mTabs.size(); i++) {
     56             final int index = i;
     57             mTabs.get(i).setOnClickListener(new View.OnClickListener() {
     58 
     59                 @Override
     60                 public void onClick(View v) {
     61                     setcurrent(index);
     62                     viewpager_main.setCurrentItem(index);
     63                 }
     64             });
     65         }
     66     }
     67 
     68     private void init() {
     69         viewpager_main = (ViewPager) findViewById(R.id.viewpager_main);
     70         rel_signin = (RelativeLayout) findViewById(R.id.rel_signin);
     71         rel_contact = (RelativeLayout) findViewById(R.id.rel_contact);
     72         rel_search = (RelativeLayout) findViewById(R.id.rel_search);
     73         rel_earning = (RelativeLayout) findViewById(R.id.rel_earning);
     74         rel_my = (RelativeLayout) findViewById(R.id.rel_my);
     75         tab_signin = (Button) findViewById(R.id.tab_signin);
     76         tab_contact = (Button) findViewById(R.id.tab_contact);
     77         tab_search = (Button) findViewById(R.id.tab_search);
     78         tab_earning = (Button) findViewById(R.id.tab_earning);
     79         tab_my = (Button) findViewById(R.id.tab_my);
     80 
     81         currentPage = 0;
     82         mTabs = new ArrayList<Button>();
     83         mTabs.add(tab_signin);
     84         mTabs.add(tab_contact);
     85         mTabs.add(tab_search);
     86         mTabs.add(tab_earning);
     87         mTabs.add(tab_my);
     88         mRelTabs = new ArrayList<RelativeLayout>();
     89         mRelTabs.add(rel_signin);
     90         mRelTabs.add(rel_contact);
     91         mRelTabs.add(rel_search);
     92         mRelTabs.add(rel_earning);
     93         mRelTabs.add(rel_my);
     94 
     95         signInFragment = new MyFragment("考勤", getResources().getColor(
     96                 R.color.fragment_1));
     97         searchFragment = new MyFragment("通讯录", getResources().getColor(
     98                 R.color.fragment_2));
     99         contactFragment = new MyFragment("查单", getResources().getColor(
    100                 R.color.fragment_3));
    101         earningFragment = new MyFragment("收入", getResources().getColor(
    102                 R.color.fragment_4));
    103         myFragment = new MyFragment("我的", getResources().getColor(
    104                 R.color.fragment_5));
    105         fragments = new ArrayList<Fragment>();
    106         fragments.add(signInFragment);
    107         fragments.add(contactFragment);
    108         fragments.add(searchFragment);
    109         fragments.add(earningFragment);
    110         fragments.add(myFragment);
    111 
    112     }
    113 
    114     /**
    115      * 设置导航图标均为未选中
    116      */
    117     private void setTabNotSelect() {
    118         rel_signin.setBackgroundColor(getResources().getColor(R.color.white));
    119         rel_contact.setBackgroundColor(getResources().getColor(R.color.white));
    120         rel_search.setBackgroundColor(getResources().getColor(R.color.white));
    121         rel_earning.setBackgroundColor(getResources().getColor(R.color.white));
    122         rel_my.setBackgroundColor(getResources().getColor(R.color.white));
    123 
    124     }
    125 
    126     // viewpager适配器
    127     class ViewPagerAdapter extends FragmentPagerAdapter {
    128 
    129         public ViewPagerAdapter(FragmentManager fm) {
    130             super(fm);
    131         }
    132 
    133         @Override
    134         public Fragment getItem(int arg0) {
    135             return fragments.get(arg0);
    136         }
    137 
    138         @Override
    139         public int getCount() {
    140             return fragments.size();
    141         }
    142 
    143     }
    144 
    145     // viewpager监听器
    146     class pageChangeListener implements ViewPager.OnPageChangeListener {
    147 
    148         @Override
    149         public void onPageScrollStateChanged(int arg0) {
    150         }
    151 
    152         @Override
    153         public void onPageScrolled(int arg0, float arg1, int arg2) {
    154         }
    155 
    156         @Override
    157         public void onPageSelected(int arg0) {
    158             setcurrent(arg0);
    159 
    160         }
    161     }
    162 
    163     // viewpager改变后更改其他控件
    164     private void setcurrent(int position) {
    165         currentPage = position;
    166         setTabNotSelect();
    167         mRelTabs.get(position).setBackgroundColor(
    168                 getResources().getColor(R.color.tab_select_bg));
    169     }
    170 }

    三、百度云下载地址:http://pan.baidu.com/s/1gdyFGKb

  • 相关阅读:
    go请求第三方接口(这种方法借助了第三方的依赖实现的)
    go接收前端传过来的方式
    mysql.connector.errors.OperationalError: MySQL Connection not available.
    celery服务
    spring之lookup-method、replaced-method
    spring源码解析(3)-BeanDefinition
    spring源码解析(2)-XmlBeanFactory
    spring源码解析(1)Resource
    Springboot动态装载卸载Bean
    java设计模式之中介者
  • 原文地址:https://www.cnblogs.com/sonyi/p/4730229.html
Copyright © 2020-2023  润新知