• 实现标题栏联动Fragment


    效果图:

    首先实现布局文件的代码,代码中的colorBlue颜色代码"#039BE5",其他的不多说了,直接上代码:

     1 <?xml version="1.0" encoding="utf-8"?>
     2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     3     xmlns:app="http://schemas.android.com/apk/res-auto"
     4     xmlns:tools="http://schemas.android.com/tools"
     5     android:layout_width="match_parent"
     6     android:layout_height="match_parent"
     7     android:orientation="vertical"
     8     tools:context=".MainActivity">
     9 
    10     <RelativeLayout
    11         android:layout_width="match_parent"
    12         android:layout_height="50dp"
    13         android:background="@color/colorBlue">
    14 
    15         <ImageButton
    16             android:id="@+id/btn_Img_Ret"
    17             android:layout_width="wrap_content"
    18             android:layout_height="wrap_content"
    19             android:layout_centerVertical="true"
    20             android:layout_marginLeft="10dp"
    21             android:background="#0000"
    22             android:scaleType="fitXY"
    23             android:src="@mipmap/ret_left_white" />
    24 
    25         <TextView
    26             android:layout_width="wrap_content"
    27             android:layout_height="wrap_content"
    28             android:layout_centerHorizontal="true"
    29             android:layout_centerVertical="true"
    30             android:text="事件管理"
    31             android:textColor="#FFFFFF"
    32             android:textSize="18sp"
    33             android:textStyle="bold" />
    34     </RelativeLayout>
    35 
    36     <LinearLayout
    37         android:layout_width="match_parent"
    38         android:layout_height="40dp"
    39         android:gravity="center_vertical"
    40         android:orientation="horizontal">
    41 
    42         <TextView
    43             android:id="@+id/txt1"
    44             android:layout_width="0dp"
    45             android:layout_height="wrap_content"
    46             android:layout_weight="1"
    47             android:gravity="center"
    48             android:text="六一"
    49             android:textSize="14sp" />
    50 
    51         <TextView
    52             android:id="@+id/txt2"
    53             android:layout_width="0dp"
    54             android:layout_height="wrap_content"
    55             android:layout_weight="1"
    56             android:gravity="center"
    57             android:text="国庆"
    58             android:textSize="14sp" />
    59 
    60         <TextView
    61             android:id="@+id/txt3"
    62             android:layout_width="0dp"
    63             android:layout_height="wrap_content"
    64             android:layout_weight="1"
    65             android:gravity="center"
    66             android:text="中秋"
    67             android:textSize="14sp" />
    68     </LinearLayout>
    69 
    70     <View
    71         android:layout_width="match_parent"
    72         android:layout_height="1dp"
    73         android:background="@color/colorBlue" />
    74 
    75     <androidx.viewpager.widget.ViewPager
    76         android:id="@+id/viewPage"
    77         android:layout_width="match_parent"
    78         android:layout_height="match_parent" />
    79 
    80 </LinearLayout>

    然后新建fragment,我这里是3个,每个fragment的代码都是一样的,fragment和布局文件就贴一个就行了:

     1 public class TestFragment1 extends Fragment {
     2 
     3     private View view;
     4 
     5     @Nullable
     6     @Override
     7     public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
     8         view = inflater.inflate(R.layout.fragment_test1,null);
     9 
    10         return view;
    11     }
    12 }

    布局文件:

     1 <?xml version="1.0" encoding="utf-8"?>
     2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     3     android:orientation="vertical"
     4     android:gravity="center"
     5     android:layout_width="match_parent"
     6     android:layout_height="match_parent">
     7     <TextView
     8         android:text="六一"
     9         android:textSize="30sp"
    10         android:textStyle="bold"
    11         android:layout_width="wrap_content"
    12         android:layout_height="wrap_content" />
    13 
    14 </LinearLayout>

    建立好3个fragment和布局文件后就开始我们的fragment的适配器:

     1 public class FragmentAdapter extends FragmentPagerAdapter {
     2 
     3     private List<Fragment> fragmentList;
     4 
     5     public FragmentAdapter (FragmentManager fm,List<Fragment> list){
     6         super(fm);
     7         this.fragmentList = list;
     8     }
     9 
    10     @NonNull
    11     @Override
    12     public Fragment getItem(int position) {
    13         //显示第几个页面
    14         return fragmentList.get(position);
    15     }
    16 
    17     @Override
    18     public int getCount() {
    19         return fragmentList.size();
    20     }
    21 }

    最后就是实现代码了,直接上代码:

      1 public class MainActivity extends AppCompatActivity implements View.OnClickListener {
      2 
      3     //第一次点击与第二次点击的间隔时间
      4     private long exitTime;
      5 
      6     private List<Fragment> fragmentList;
      7     private ViewPager viewPager;
      8     private FragmentAdapter adapter;
      9     private ImageButton btnImg;
     10     private TextView textView1,textView2,textView3;
     11     private int num = 0;
     12 
     13     @Override
     14     protected void onCreate(Bundle savedInstanceState) {
     15         super.onCreate(savedInstanceState);
     16         setContentView(R.layout.activity_main);
     17         initView();
     18     }
     19 
     20     private void initView(){
     21         btnImg = (ImageButton)findViewById(R.id.btn_Img_Ret);
     22         textView1 = (TextView)findViewById(R.id.txt1);
     23         textView2 = (TextView)findViewById(R.id.txt2);
     24         textView3 = (TextView)findViewById(R.id.txt3);
     25 
     26         textView1.setOnClickListener(this);
     27         textView2.setOnClickListener(this);
     28         textView3.setOnClickListener(this);
     29         btnImg.setOnClickListener(this);
     30 
     31         viewPager = (ViewPager)findViewById(R.id.viewPage);
     32         viewPager.setOnPageChangeListener(new MyPagerChangeListener());
     33 
     34         fragmentList = new ArrayList<>();
     35         fragmentList.add(new TestFragment1());
     36         fragmentList.add(new TestFragment2());
     37         fragmentList.add(new TestFragment3());
     38 
     39         adapter = new FragmentAdapter(getSupportFragmentManager(),fragmentList);
     40         viewPager.setAdapter(adapter);
     41 
     42         //初始化显示第一个页面,以及更改选中的标题样式
     43         viewPager.setCurrentItem(0); //选中第一个页面
     44         textView1.setTextSize(16); //设置选中的标题字体16sp
     45         textView1.setTextColor(Color.parseColor("#039BE5")); //设置选中的标题字体颜色
     46     }
     47 
     48 
     49     @Override
     50     public void onClick(View view) {
     51         switch (view.getId()){
     52             case R.id.txt1:
     53                 viewPager.setCurrentItem(0);
     54                 break;
     55             case R.id.txt2:
     56                 viewPager.setCurrentItem(1);
     57                 break;
     58             case R.id.txt3:
     59                 viewPager.setCurrentItem(2);
     60                 break;
     61         }
     62     }
     63 
     64     //设置一个ViewPager的监听事件,当左右滑动ViewPager时菜单栏被选中状态跟着改变
     65     public class MyPagerChangeListener implements ViewPager.OnPageChangeListener{
     66 
     67         @Override
     68         public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
     69 
     70         }
     71 
     72         @Override
     73         public void onPageSelected(int position) {
     74             switch (position){
     75                 case 0:
     76                     textView1.setTextSize(16);
     77                     textView2.setTextSize(14);
     78                     textView3.setTextSize(14);
     79                     textView1.setTextColor(Color.parseColor("#039BE5"));
     80                     textView2.setTextColor(Color.GRAY);
     81                     textView3.setTextColor(Color.GRAY);
     82                     break;
     83                 case 1:
     84                     textView1.setTextSize(14);
     85                     textView2.setTextSize(16);
     86                     textView3.setTextSize(14);
     87                     textView1.setTextColor(Color.GRAY);
     88                     textView2.setTextColor(Color.parseColor("#039BE5"));
     89                     textView3.setTextColor(Color.GRAY);
     90                     break;
     91                 case 2:
     92                     textView1.setTextSize(14);
     93                     textView2.setTextSize(14);
     94                     textView3.setTextSize(16);
     95                     textView1.setTextColor(Color.GRAY);
     96                     textView2.setTextColor(Color.GRAY);
     97                     textView3.setTextColor(Color.parseColor("#039BE5"));
     98                     break;
     99             }
    100         }
    101 
    102         @Override
    103         public void onPageScrollStateChanged(int state) {
    104 
    105         }
    106     }
    107 
    108     /**
    109      * 实现点击两次系统返回键退出应用
    110      * @param keyCode
    111      * @param event
    112      * @return
    113      */
    114     @Override
    115     public boolean onKeyDown(int keyCode, KeyEvent event) {
    116         if(keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0){
    117             exit();
    118             return true;
    119         }
    120         return super.onKeyDown(keyCode, event);
    121     }
    122 
    123     private void exit(){
    124         if((System.currentTimeMillis() - exitTime) > 2000){
    125             Toast.makeText(this, "再次点击退出应用", Toast.LENGTH_SHORT).show();
    126             exitTime = System.currentTimeMillis();
    127         }else{
    128             finish();
    129             System.exit(0);
    130         }
    131     }
    132 }
  • 相关阅读:
    关于自学的又一点思考
    hdu 1176 免费馅饼
    AS400 Sequel View报表学习笔记 (一)
    AS400 QUERY中的Unmatched records探讨。
    AS400 SDA development Note (1)
    关于Actionscript 3.0中KeyboardEvent的调试需注意的问题
    iPhone开发的常用的API函数库
    Cocos2DiPhone编程中按钮的设置(MenueItem类系的介绍)
    维基网上公布的世界上的一些算法<希望能对寻找算法的一些朋友有帮助>
    关于面向对象编程与面向过程编程的介绍与解释
  • 原文地址:https://www.cnblogs.com/Mr-Deng/p/11655446.html
Copyright © 2020-2023  润新知