栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Android- fragment结合ViewPager实现左右滑动

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Android- fragment结合ViewPager实现左右滑动

定义底部导航栏xml


     
         
         
     
    
        
        
    
    
        
        
    
    
        
        
    
导航按钮选中不选中切换xml

 



    
    
    
    
创建fragment类 会自动生成 xml
package com.example.myapplication;

import android.os.Bundle;

import androidx.fragment.app.Fragment;
import androidx.viewpager2.widget.ViewPager2;

import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;


public class BlankFragment extends Fragment {

    private static final String ARG_PARAM1 = "param1";

    private String mParam1;
    private View view;

    public BlankFragment() {
        // Required empty public constructor
    }
    
    public static BlankFragment newInstance(String param1) {
        BlankFragment fragment = new BlankFragment();
        Bundle args = new Bundle();
        args.putString(ARG_PARAM1, param1);
        fragment.setArguments(args);
        return fragment;
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        if (getArguments() != null) {
            mParam1 = getArguments().getString(ARG_PARAM1);

        }
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        if (view == null) {
            view = inflater.inflate(R.layout.fragment_blank, container, false);
        }
        initView();
        return view;
    }

    private void initView() {
        TextView textView = view.findViewById(R.id.test01);
        textView.setText(mParam1);

    }
}
生成定义 fragment xml



    

viewPager2 需要的适配器
package com.example.myapplication;
import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.lifecycle.Lifecycle;
import androidx.viewpager2.adapter.FragmentStateAdapter;

import java.util.ArrayList;
import java.util.List;

public class MyFragmentAdapter extends FragmentStateAdapter {
    private List fragmentList = new ArrayList<>();
    public MyFragmentAdapter(@NonNull FragmentManager fragmentManager, @NonNull Lifecycle lifecycle,List fragments) {
        super(fragmentManager, lifecycle);
        this.fragmentList = fragments;
    }

    @NonNull
    @Override
    public Fragment createFragment(int position) {
       //获取fragment
        return fragmentList.get(position);
    }
    //总页数
    @Override
    public int getItemCount() {
        return fragmentList.size();
    }
}
mianActivity
package com.example.myapplication;

import android.os.Bundle;
import android.text.Layout;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Button;
import android.widget.frameLayout;
import android.widget.ImageView;
import android.widget.LinearLayout;

import com.google.android.material.bottomnavigation.BottomNavigationView;

import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.Fragment;
import androidx.navigation.NavController;
import androidx.navigation.Navigation;
import androidx.navigation.ui.AppBarConfiguration;
import androidx.navigation.ui.NavigationUI;
import androidx.recyclerview.widget.RecyclerView;
import androidx.viewpager2.widget.ViewPager2;

import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;

 
public class MainActivity extends AppCompatActivity implements View.onClickListener {
    ViewPager2 viewPager2;
    private LinearLayout l1, l2, l3, l4;
    private ImageView i1, i2, i3, i4, iCurrent;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initPager();
        initTableView();

    }

    private void initTableView() {
        l1 = findViewById(R.id.but1);
        //监听组件点击事件
        l1.setonClickListener(this);
        l2 = findViewById(R.id.but2);
        l2.setonClickListener(this);
        l3 = findViewById(R.id.but3);
        l3.setonClickListener(this);
        l4 = findViewById(R.id.but4);
        l4.setonClickListener(this);

        i1 = findViewById(R.id.img1);
        i2 = findViewById(R.id.img2);
        i3 = findViewById(R.id.img3);
        i4 = findViewById(R.id.img4);
        //默认第一个选中
        i1.setSelected(true);
        //记录当前选中按钮
        iCurrent = i1;
        
    }

    private void initPager() {
        viewPager2 = findViewById(R.id.view_page1);
        List fragments = new ArrayList<>();
        
        fragments.add(BlankFragment.newInstance("第一页"));
        fragments.add(BlankFragment.newInstance("第二页"));
        fragments.add(BlankFragment.newInstance("第三页"));
        fragments.add(BlankFragment.newInstance("第四页"));
        fragments.add(BlankFragment.newInstance("第五页"));
        fragments.add(BlankFragment.newInstance("第六页"));

        MyFragmentAdapter fragmentAdapter = new MyFragmentAdapter(getSupportFragmentManager(), getLifecycle(), fragments);
        viewPager2.setAdapter(fragmentAdapter);
        //回调函数,详情百度
        viewPager2.registeronPageChangeCallback(new ViewPager2.onPageChangeCallback() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
                super.onPageScrolled(position, positionOffset, positionOffsetPixels);
            }
            //每次滑动会调用
            @Override
            public void onPageSelected(int position) {
                super.onPageSelected(position);
                changeTable(position);
            }


            @Override
            public void onPageScrollStateChanged(int state) {
                super.onPageScrollStateChanged(state);
            }
        });

    }

    private void changeTable(int position) {
        iCurrent.setSelected(false);
        switch (position) {
            //跳转到指定pageView
            case R.id.but1:
                viewPager2.setCurrentItem(0);
                break;
            case R.id.but2:
                viewPager2.setCurrentItem(1);
                break;
            case R.id.but3:
                viewPager2.setCurrentItem(2);
                break;
            case R.id.but4:
                viewPager2.setCurrentItem(3);
                break;
                //按钮变色
            case 0:
                i1.setSelected(true);
                iCurrent = i1;
                break;
            case 1:
                i2.setSelected(true);
                iCurrent = i2;
                break;
            case 2:
                i3.setSelected(true);
                iCurrent = i3;
                break;
            case 3:
                i4.setSelected(true);
                iCurrent = i4;
                break;
            default:

        }
    }

    //点击事件
    @Override
    public void onClick(View v) {
        changeTable(v.getId());
    }
}
activity_main.xml



    
     
    


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/691783.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号