首页 > 其他分享 >每日总结

每日总结

时间:2023-02-25 20:23:16浏览次数:28  
标签:总结 findViewById fragment 每日 BlankFragment public position id

学习fragment和viewpage的联合开发。

业务逻辑:

1:在main.xml里设置viewpage和button的布局,button的布局单独报开一个xml文件做出来,做完后需要将button的布局加入到main.xml之中。

2:初始化viewpage,使得viewpage适配一个或多个fragment,用到fragment里面的实例化函数

public class MyFragmenPageAdapter extends FragmentStateAdapter {
    List<Fragment> fragmentList=new ArrayList<>();
    //构造器
    public MyFragmenPageAdapter(@NonNull FragmentManager fragmentManager, @NonNull Lifecycle lifecycle, List<Fragment> fragments) {
        super(fragmentManager, lifecycle);
        fragmentList=fragments;
    }

    @NonNull
    @Override
    public Fragment createFragment(int position) {
        return fragmentList.get(position);
    }

    @Override
    public int getItemCount() {
        return fragmentList.size();
    }
}

 

 private void initPage() {
        viewPager2=findViewById(R.id.viewpage);

        ArrayList<Fragment> fragments=new ArrayList<>();
        //创建了四个Fragment的对象,调用BlankFragment里面的newInstance()函数将
        fragments.add(BlankFragment.newInstance("微信聊天"));
        fragments.add(BlankFragment.newInstance("通讯录"));
        fragments.add(BlankFragment.newInstance("朋友圈"));
        fragments.add(BlankFragment.newInstance("我"));
        //创建自定义的 viewpager的适配器
        MyFragmenPageAdapter myFragmenPageAdapter=new MyFragmenPageAdapter(getSupportFragmentManager(),getLifecycle(),fragments);
        //将fragment和viewpage进行适配
        viewPager2.setAdapter(myFragmenPageAdapter);
        //一次性响应fragment和按钮,滑动监听接口
        viewPager2.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
                super.onPageScrolled(position, positionOffset, positionOffsetPixels);
            }
            //获取选择的当前fragment的页面位置,获取位置后改变成按钮被按下的状态,调用函数改变
            @Override
            public void onPageSelected(int position) {
                super.onPageSelected(position);
                changeTab(position);
            }

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

3:初始化按钮,对按钮的监听,按下后改变状态

private void initTableaView() {
        llchat=findViewById(R.id.id_weixin);
        llchat.setOnClickListener(this);

        llcontact=findViewById(R.id.id_contact);
        llcontact.setOnClickListener(this);

        llfind=findViewById(R.id.id_find);
        llfind.setOnClickListener(this);

        llprofil=findViewById(R.id.id_profil);
        llprofil.setOnClickListener(this);

        ivchat=findViewById(R.id.table__tv_wexin);
        ivcontact=findViewById(R.id.table__tv_contact);
        ivfind=findViewById(R.id.table__tv_find);
        ivprofil=findViewById(R.id.table__tv_profil);
        //设置界面按钮的初始点亮状态
        ivchat.setSelected(true);
        //图片类型的标记变量,找到当前的按钮位置,当页面滑动时,先将标记变量(即上一的按钮)只为你FALSE,当页面滑动后先将新的按钮设置为点亮,再重新赋值标记变量
        ivcurrent=ivchat;
    }

 

  private void changeTab(int position) {
        //上一次的按钮置为熄灭
        ivcurrent.setSelected(false);
        switch (position){
            //点击响应后联动相应的viewpage
            case R.id.id_weixin:
               viewPager2.setCurrentItem(0,false);
            case 0:
                ivchat.setSelected(true);
                ivcurrent=ivchat;
                break;

            case R.id.id_contact:
                viewPager2.setCurrentItem(1,false);
            case 1:
                ivcontact.setSelected(true);
                ivcurrent=ivcontact;
                break;

            case R.id.id_find:
                viewPager2.setCurrentItem(2,false);
            case 2:
                ivfind.setSelected(true);
                ivcurrent=ivfind;
                break;

            case R.id.id_profil:
                viewPager2.setCurrentItem(3,false);
            case 3:
                ivprofil.setSelected(true);
                ivcurrent=ivprofil;
                break;

        }
    }

Blankfragment的代码(删减后)

public class BlankFragment extends Fragment {
    private static final String ARG_TEXT = "param1";
   View root;
    private String mTextString;
    public BlankFragment() {
        // Required empty public constructor
    }


    public static BlankFragment newInstance(String param1) {
        //创建fragment对象
        BlankFragment fragment = new BlankFragment();
        //创建bundle对象
        Bundle args = new Bundle();
        //将传入的参数设置成string
        args.putString(ARG_TEXT, param1);
        //创建这个fragment.xml的格式
        fragment.setArguments(args);
        return fragment;
    }
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        if (getArguments() != null) {
            mTextString = getArguments().getString(ARG_TEXT);

        }
    }
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
       if(root==null){
           root=inflater.inflate(R.layout.fragment_blank,container,false);
       }
       initView();
       return  root;
    }
    private void initView() {
        TextView textView =root.findViewById(R.id.text);
        textView.setText(mTextString);
    }
}

 

标签:总结,findViewById,fragment,每日,BlankFragment,public,position,id
From: https://www.cnblogs.com/copyjames/p/17155272.html

相关文章

  • 2.25每日总结
    今天是周六,没有课。所以时间相对比较充裕。首先下载,安装并配置AndroidStudio,之后在进行编译器的配置时碰到了些许问题,通过查阅资料解决。之后通过在网上学习,学会了部分A......
  • 2.25今日总结
    Android程序库这个类别包括了专门为Android开发的基于Java的程序库。这个类别程序库的示例包括应用程序框架库,如用户界面构建,图形绘制和数据库访问。一些Android开......
  • 第二周学习总结
    本周一老师把我们留下来了我什么都不会但后来我决定开始学了每天学习了一点点。特别是今天我已经可以写出周一的那个作业了虽然是改的结构但我发现很多都是相似的。......
  • 2023.2.25AcWing蓝桥杯集训·每日一题
    今日复习的知识点为并查集。AcWing1249.亲戚题目描述或许你并不知道,你的某个朋友是你的亲戚。他可能是你的曾祖父的外公的女婿的外甥女的表姐的孙子。如果能得到完整......
  • ssrf漏洞整理总结
    SSRF漏洞整理总结ssrf漏洞描述SSRF(Server-SideRequestForgery:服务器端请求伪造)是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。一般情况下,SSRF攻击的目标......
  • 每日打卡
    一,介绍自己:本人性格热情开朗,待人友好,勤奋学习,在学校踏踏实实认真利用好每分每秒。二,现状、经验和计划:现在对于一些课程内容还是不太理解,有些内容有点复杂,老师也给与了我们......
  • Vue3 + Vite +TS 项目问题总结
    最近做的几个Vue项目基本都收尾了,总结一下在项目中遇到的问题,希望能帮助遇到同样问题的小伙伴项目情况:我做的项目都是Vue3.2(setup语法)+Vite+TS,一个H5项目,一个PC前......
  • 每日总结2/25
    在今天我学习了安卓的界面的代码如下:<?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"andro......
  • test20230225考试总结
    前言Ihatequestionsthatalreadyexist!!我讨厌原题!!赛时得分明细:ABCDEFTotalRank10010010560443106A.P1993小K的农场题面给定长度为......
  • [专题总结]Gridea快速免费搭建个人博客
    介绍或许你很想把你所知道的问题写出来,或许你文思泉涌,想给大家分享。我相信,你一定能写好博客,只要坚持,就可以了。或许大家会不理解,为什么不用大平台的博客呢?或许你稍微了......