TabLayout+ViewPager实现Android底部滑动

        • 项目介绍
        • 软件架构
        • 代码实现介绍

项目介绍

通过Tablayout+ViewPager实现底部滑动的tab,让你快速脱坑
源码地址:https://gitee.com/maxiaodong1996/Tablayout_viewPager_Demo.git

软件架构

软件架构说明

TabLayout+ViewPager实现Android底部滑动(附实现Demo)_第1张图片

代码实现介绍

我们首先要添加design的jar支持选择添加,和复制粘贴添加

复制粘贴添加 在app下的build.gradle中的dependencies中添加

版本号需要和你的下面这个一致

 implementation 'com.android.support:appcompat-v7:26.1.0'
implementation 'com.android.support:design:26.1.0'

下面介绍的是从工具中手动操作视图添加流程 不过上面的我既然告诉你了那就是很简单的 下面的流程也是为了 上面那句话使用工具添加

1、在app上右键

TabLayout+ViewPager实现Android底部滑动(附实现Demo)_第2张图片

2、选择

粗体

3、点击

TabLayout+ViewPager实现Android底部滑动(附实现Demo)_第3张图片

4、选择加号选择弹出框中的第一个

TabLayout+ViewPager实现Android底部滑动(附实现Demo)_第4张图片

5、选择

TabLayout+ViewPager实现Android底部滑动(附实现Demo)_第5张图片

6、检查选择正确点击OK

TabLayout+ViewPager实现Android底部滑动(附实现Demo)_第6张图片

7、打开app下的build.gradle检查画圈的版本号一样不 不一样就修改

TabLayout+ViewPager实现Android底部滑动(附实现Demo)_第7张图片

8、创建布局

<?xml version="1.0" encoding="utf-8"?>            

上面看到的android.support.design.widget.TabLayout 这个就是我们添加jar后才可以用的

9、创建Fragment

package com.maxd.demo;import android.os.Bundle;import android.support.v4.app.Fragment;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.TextView;/** * A simple {@link Fragment} subclass. * Activities that contain this fragment must implement the * to handle interaction events. * Use the {@link OneFragment#newInstance} factory method to * create an instance of this fragment. */public class OneFragment extends Fragment {    // TODO: Rename parameter arguments, choose names that match    // the fragment initialization parameters, e.g. ARG_ITEM_NUMBER    private static final String ARG_PARAM1 = "param1";    // TODO: Rename and change types of parameters    private String mParam1;    public OneFragment() {        // Required empty public constructor    }    /**     * Use this factory method to create a new instance of     * this fragment using the provided parameters.     *     * @param param1 Parameter 1.     * @param param2 Parameter 2.     * @return A new instance of fragment OneFragment.     */    // TODO: Rename and change types and number of parameters    public static OneFragment newInstance(String param1, String param2) {        OneFragment fragment = new OneFragment();        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) {        View inflate = inflater.inflate(R.layout.fragment_one, container, false);        TextView textView = inflate.findViewById(R.id.text10);        textView.setText(mParam1);        return inflate;    }}

10、实现Activity代码

package com.maxd.demo;import android.annotation.SuppressLint;import android.support.design.widget.TabLayout;import android.support.v4.app.Fragment;import android.support.v4.app.FragmentActivity;import android.support.v4.app.FragmentManager;import android.support.v4.app.FragmentPagerAdapter;import android.support.v4.view.ViewPager;import android.os.Bundle;import android.view.LayoutInflater;import android.view.View;import android.widget.ImageView;import android.widget.TextView;public class MainActivity extends FragmentActivity {    private ViewPager pager_parent;    private TabLayout tabLayout;    private final static String[] TITLE = {"首页", "我的"};    private final static int[] IMAGE = {R.drawable.nav_home, R.drawable.nav_my};    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        pager_parent = findViewById(R.id.pager_parent);        tabLayout = findViewById(R.id.tab_layout);        initView();    }    /**     * 主要方法     * IMAGE 中的是通过drawable实现 这个不难你要自己看看     */    private void initView() {        //创建ViewPagerAdapter        MyViewPagerAdapter myViewPagerAdapter = new MyViewPagerAdapter(getSupportFragmentManager());        //给viewPager赋值adapter        pager_parent.setAdapter(myViewPagerAdapter);        //设置预加载页面数量的方法        pager_parent.setOffscreenPageLimit(2);        //设置默认位于第一个        pager_parent.setCurrentItem(0);        //设置tabLayout关联viewPager        tabLayout.setupWithViewPager(pager_parent);        //循环标题        for (int i = 0; i < TITLE.length; i++) {            //创建tab            TabLayout.Tab tab = tabLayout.getTabAt(i);            //获取布局            LayoutInflater layoutInflater = LayoutInflater.from(this);            @SuppressLint("InflateParams") View view = layoutInflater.inflate(R.layout.tab_layout, null);            ImageView imageView = (ImageView) view.findViewById(R.id.image_view);            TextView textView = (TextView) view.findViewById(R.id.text_view);            textView.setText(TITLE[i]);            imageView.setImageResource(IMAGE[i]);            assert tab != null;            tab.setCustomView(view);            //设置第一个选中            if (tabLayout.getSelectedTabPosition() == 0) {                tabLayout.getTabAt(0).getCustomView().setSelected(true);                tab.setText(TITLE[i]);            }        }    }    /**     * ViewPager设置适配器     */    public class MyViewPagerAdapter extends FragmentPagerAdapter {        /**         * Instantiates a new My view pager adapter.         *         * @param fm the fm         */        MyViewPagerAdapter(FragmentManager fm) {            super(fm);        }        @Override        public Fragment getItem(int position) {            switch (position) {                case 0:                    return OneFragment.newInstance("one1", "");                case 1:                    return OneFragment.newInstance("one2", null);            }            return null;        }        @Override        public int getCount() {            return 2;        }    }}

11、实现资源文件代码

**在layout下创建tab_layout.xml 这个主要底部中单个的布局文件显示图片和文字的 **
`

        

`

在drawable下 创建nav_home.xml nav_my.xml 主要负责底部的图片切换颜色

<?xml version="1.0" encoding="utf-8"?>            
<?xml version="1.0" encoding="utf-8"?>            

在drawable下 创建nav_text.xml主要负责底部的字体切换颜色

<?xml version="1.0" encoding="utf-8"?>            

基本就是上面这些 其他的就是颜色图片什么 具体你自己看项目吧 这个主要的业务还是activity中的代码我已经写了备注了

更多相关文章

  1. Android: android自适应屏幕方向和大小
  2. Android获取相册中图片的路径 4.4版本前后的变化
  3. Android屏幕方向的改变
  4. Android点亮屏幕
  5. Android-屏幕元素层次结构
  6. android图片特效,图片过滤
  7. 不支持gif动态图片
  8. Android进阶2之检索Android的图片库并显示图片详细信息
  9. Android保存图片到系统图库

随机推荐

  1. android 模拟器启动报错:Failed to open
  2. 获取数字签名(.keystore)SHA1、MD5值
  3. Android(安卓)View体系(三)--实现 View 的
  4. Android(安卓)USB调试开关设置
  5. android播放网络或者本地视频(截取某帧做
  6. Android(安卓)Bitmap Api总结和使用方法
  7. android alertdialog布局 dialog布局
  8. Android(安卓)Intent的几种用法全面总结
  9. Android之GridView与ListView
  10. android NDK 之C调java属性及方法