资讯项目

咨讯项目
1.搭建xml
1.1主界面 ViewPager+BottomNavigationView
1.2创建五个Fragment,五个底部导航
1.3创建适配器集成FragmentPagerAdapter
1.4把Fragment集合传给FragmentPagerAdapter中

public class MymainAdapter extends FragmentPagerAdapter{
	List<Fragment>  list;
    public MymainAdapter(FragmentManager fm, List<Fragment> list) {
        super(fm);
        this.list = list;
    }
@Override
public Fragment getItem(int i) {
    return list.get(i);
}

@Override
public int getCount() {
    return list.size();
}

}
1.5添加底部导航和viewPager点击事件

//todo  底部导航的监听事件
	注:myBottomView 为底部空间的ID名字,viewpager即可
    myBottomView.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
        @Override
        public boolean onNavigationItemSelected(@NonNull MenuItem item) {
            switch (item.getItemId()) {
                case R.id.main_btn:
                    viewpager.setCurrentItem(0);
                    return true;
                case R.id.know_btn:
                    viewpager.setCurrentItem(1);
                    return true;
                case R.id.pub_btn:
                    viewpager.setCurrentItem(2);
                    return true;
                case R.id.item_btn:
                    viewpager.setCurrentItem(3);
                    return true;
                case R.id.my_btn:
                    viewpager.setCurrentItem(4);
                    return true;
                default:
                    break;
            }
            return false;
        }
    });

//todo  viewPager的监听事件
viewpager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
//页面滚动时
    @Override
    public void onPageScrolled(int i, float v, int i1) {

    }
//页面选中时
    @Override
    public void onPageSelected(int i) {
        myBottomView.getMenu().getItem(i).setChecked(true);
    }

//页面的滚动状态
@Override
public void onPageScrollStateChanged(int i) {

    }
});

1.6设置改变底部的图片颜色和文字颜色
//todo 设置小图标为添加颜色

myElecBottomView.setItemIconTintList(null);
    ColorStateList colorlist = getResources().getColorStateList(R.color.navigation_textcolor);
    myElecBottomView.setItemTextColor(colorlist);
   //todo  默认当前选中 
   myElecBottomView.getMenu().getItem(0).setChecked(true);

1.7对其进行添加搜索框
在这里插入图片描述
2.第一个Fragment的页面逻辑
2.1.1界面分为两大模块:Banner和Recyclerview
2.1.2第一个Banner:通过retrofit中get请求获取到Banner的数据源,然后填充到Banner中。

//todo  下载Banner的数据
  List<BanerBean.DataBean> banerdata = new ArrayList<>();//banner数据源
List<String> pic = new ArrayList<>(); //图片
List<String> title = new ArrayList<>();//标题
    public void initBaner() {
        Retrofit retrofit = new Retrofit.Builder()
                .baseUrl("https://www.wanandroid.com/")
                .addConverterFactory(GsonConverterFactory.create())
                .build();
        Myservice myservice = retrofit.create(Myservice.class);
        Call<BanerBean> banerBean = myservice.getBanerBean();
        banerBean.enqueue(new Callback<BanerBean>() {
            @Override
            public void onResponse(Call<BanerBean> call, Response<BanerBean> response) {
               banerdata = response.body().getData();
            }

            @Override
            public void onFailure(Call<BanerBean> call, Throwable t) {
                System.out.println(t.getMessage());
            }
        });
          pic.clear();
        title.clear();
        for (int i = 0; i <banerdata.size(); i++) {
            pic.add(banerdata.get(i).getImagePath());
            title.add(banerdata.get(i).getTitle());
        }
          myBaner.setImages(pic);
        myBaner.setBannerStyle(BannerConfig.CIRCLE_INDICATOR_TITLE_INSIDE);
        myBaner.setDelayTime(2000);
        myBaner.setImageLoader(new MyImagealoader());
        创建MyImageLoader类进行加载图片
        myBaner.setBannerTitles(title);
        myBaner.isAutoPlay(true);
        myBaner.start();

2.2.1RecyclerView的展示流程:
搭建子布局xml

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"
    android:layout_height="120dp"
    android:orientation="vertical">
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1">
        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent">
            <TextView
                android:id="@+id/text_name"
                android:layout_alignParentLeft="true"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"/>
            <TextView
                android:id="@+id/text_time"
                android:layout_alignParentRight="true"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"/>
        </RelativeLayout>
    </LinearLayout>
    <TextView
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:id="@+id/text_content">
    </TextView>
    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:orientation="horizontal">
        <TextView
            android:id="@+id/text_require"
            android:layout_alignParentLeft="true"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>
        <ImageView
            android:id="@+id/oneheart"
            android:background="@drawable/heart"
            android:layout_alignParentRight="true"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>
    </RelativeLayout>
</LinearLayout>

创建适配器

public class MyRecyclerAdapter extends RecyclerView.Adapter<MyRecyclerAdapter.MyViewHolder> {
    List<RecycBean.DataBean.DatasBean> recycdatalist = new ArrayList<>();
    Context context;
    private ImageView oneheart;

    public void refresh(List<RecycBean.DataBean.DatasBean> recycdatalist) {
        this.recycdatalist.addAll(recycdatalist);
    }

    @NonNull
    @Override
    public MyViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
        context = viewGroup.getContext();
        View inflate = LayoutInflater.from(context).inflate(R.layout.item_recyclerview, viewGroup, false);
        oneheart = inflate.findViewById(R.id.oneheart);
        oneheart.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(context, LoginActivity.class);
                context.startActivity(intent);
            }
        });
        return new MyViewHolder(inflate);
    }

    @Override
    public void onBindViewHolder(@NonNull MyViewHolder myViewHolder, final int i) {
        myViewHolder.name.setText(recycdatalist.get(i).getSuperChapterName());
        myViewHolder.content.setText(recycdatalist.get(i).getTitle());
        myViewHolder.require.setText(recycdatalist.get(i).getChapterName());
        myViewHolder.time.setText(recycdatalist.get(i).getVisible() + "天前");
        myViewHolder.content.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(context, TwoWebActivity.class);
                intent.putExtra("url", recycdatalist.get(i).getLink());
                intent.putExtra("title", recycdatalist.get(i).getTitle());
                context.startActivity(intent);
            }
        });
    }

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


    class MyViewHolder extends RecyclerView.ViewHolder {
        TextView name, time, content, require;

        public MyViewHolder(@NonNull View itemView) {
            super(itemView);
            name = itemView.findViewById(R.id.text_name);
            time = itemView.findViewById(R.id.text_time);
            content = itemView.findViewById(R.id.text_content);
            require = itemView.findViewById(R.id.text_require);
        }
    }
}

RecyclerView绑定数据源与适配器

//todo  recyclerview的逻辑
    private void initRecyclerview() {
        LinearLayoutManager manager = new LinearLayoutManager(getContext());
        manager.setOrientation(LinearLayoutManager.VERTICAL);
        myRecycler.setLayoutManager(manager);
        Retrofit retrofits = new Retrofit.Builder()
                .baseUrl("https://www.wanandroid.com/")
                .addConverterFactory(GsonConverterFactory.create())
                .build();
        MyRecycService myRecycService = retrofits.create(MyRecycService.class);
        Map map = new HashMap();
        final Call<RecycBean> recycBean = myRecycService.getRecycBean(map);
        recycBean.enqueue(new Callback<RecycBean>() {
            @Override
            public void onResponse(Call<RecycBean> call, Response<RecycBean> response) {
                recycdata = response.body().getData().getDatas();
                myRecyclerAdapter = new MyRecyclerAdapter();
                myRecyclerAdapter.refresh(recycdata);
                myRecycler.setAdapter(myRecyclerAdapter);
            }

        @Override
        public void onFailure(Call<RecycBean> call, Throwable t) {
            System.out.println(t.getMessage());
        }
    });
    myRecycler.addItemDecoration(new DividerItemDecoration(getContext(), DividerItemDecoration.VERTICAL));
}
private void initView(View inflate) {
    myBaner = (Banner) inflate.findViewById(R.id.myBaner);
    myRecycler = (RecyclerView) inflate.findViewById(R.id.myRecycler);
}
2.2.3点击Recyclerview条目跳转到webview
把当前页面的值传给webview,然后通过加载跳转到webview页面。

在这里插入图片描述
3.第二个(知识体系)Fragment,RecyclerView页面,然后并跳转,不做过多解释。。。。。
在这里插入图片描述
4.第三个(公众号)的Fragment
Tablayout+RecyclerView,然后点击item 跳转到webview上
在这里插入图片描述
5.第四个(项目)的Fragment
Tablayout+RecyclerView,然后点击item 跳转到webview上
在这里插入图片描述
跳转
在这里插入图片描述
6.登录界面
点击登录,调到登录界面,然后返回,用户名出现在登录按钮上
,下面三个列表,第一个我的收藏,点击跳转到登录界面
第二个,设置,跳转到设置列表,有夜间模式,无图模式,自动模式,意见反馈,清空缓存,版本等等,点击对应的弹出相应的对话框。
在这里插入图片描述
点击搜索框,页面中有一个Recyclerview,用于存放搜索过的标签,还有搜索历史,和垃圾桶,
在这里插入图片描述
在这里插入图片描述
最后实现登录注册功能!不做过多详细介绍!!!
谢谢观看。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值