欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  技术分享

仿今日头条Android App源码_高仿类似今日头条源码下载

程序员文章站 2022-02-07 12:24:56
...

分享的项目是头条新闻客户端、应用相对来说是很完整的、引用了开源库pulltoRefresh、上拉下拉刷新、并附带第三方登录、qq和微博、不过得自己为应用申请一个key、同时使用slideMenu fragment的组合方式、可以有侧拉菜单

新闻数据、为json数据、并带有评论功能、项目中代码层次分明、大部分方法都加了详细的注释、对于想学习侧拉菜单和fragment viewpager的开发人员来说、简直是福音、上图

仿今日头条Android App源码_高仿类似今日头条源码下载


单例模式NewFragment()、不能使用默认构造器创建对象、外部只能下面的来创建、创建一个fragment类型、通过传入类型id产生多个不同的fragment实例对象

public static NewFragment newInastance(int category_id)
{
    NewFragment nf = new NewFragment();
    Bundle bundle = new Bundle();
    bundle.putInt("category_id", category_id);
    nf.setArguments(bundle);//绑定数据最早执行
    return nf;  
}


PullToRefreshListView初始化、自定义上拉下拉的参数

private void initPlv() {
    plv.setMode(Mode.BOTH);
    ILoadingLayout start =plv.getLoadingLayoutProxy(true, false);
    start.setLastUpdatedLabel(StringUtils.getTime(System.currentTimeMillis())); 
    start.setPullLabel("下拉刷新");
    start.setRefreshingLabel("刷新中...");
    start.setReleaseLabel("释放刷新");    
    ILoadingLayout end = plv.getLoadingLayoutProxy(false, true);
    end.setLastUpdatedLabel(StringUtils.getTime(System.currentTimeMillis()));
    end.setPullLabel("上拉加载更多");
    end.setRefreshingLabel("加载中...");
    end.setReleaseLabel("释放加载");
    //给plv设置点击plv显示背景
    //要使用PullToReFreshListView里面的listView来操作设置
    ListView lv = plv.getRefreshableView();
    lv.setBackgroundColor(Color.WHITE);
    lv.setSelector(R.drawable.sel_newfragment_plv);
    lv.setCacheColorHint(Color.parseColor("#00000000"));
    lv.setDividerHeight(DimenUtils.dp2px(1, act));
    Drawable divider = act.getResources().getDrawable(R.drawable.shape_newfragment_divider);
    lv.setDivider(divider);
    plv.setOnRefreshListener(listener);
    plv.setOnItemClickListener(this);
    //当点击某个类别时,plv出现,必须做自动刷新
    //这时没有给plv绑定适配器
    //而里头做了判断adapter为空就会return,要对源码做修改才能做到自动刷新
    plv.setRefreshing();
    //第一次刷新是没有适配器的,第一次刷新完后才会有
}


因为plv的item角标是1开始的、刷新头占的是0、咱们点击的item的新闻数据源对应的位置position-1、再携带跳转至新闻详情
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
    Intent intent = new Intent();
    intent.setClass(act, NewsAcitvity.class);
    intent.putExtra("news", datas.get(position-1)); //需要携带显示的新闻
    startActivity(intent);
}


android 类似今日头条源代码下载链接: android 高仿今日头条 密码: hjpn