我的编程空间,编程开发者的网络收藏夹
学习永远不晚

利用Android制作一个APP首页

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

利用Android制作一个APP首页

本篇文章给大家分享的是有关利用Android制作一个APP首页,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

首页展示

利用Android制作一个APP首页

LRecyclerView作为主框架,轮播图以及分类网格列表作为header放在index_header.xml布局文件下。

IndexFragment.java

package com.czhappy.commonindexdemo.fragment;import android.os.Bundle;import android.support.v4.app.Fragment;import android.support.v4.view.ViewPager;import android.support.v7.widget.LinearLayoutManager;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.AdapterView;import android.widget.ImageView;import android.widget.LinearLayout;import android.widget.TextView;import com.bigkoo.convenientbanner.ConvenientBanner;import com.bigkoo.convenientbanner.holder.CBViewHolderCreator;import com.czhappy.commonindexdemo.KuaiZhiApplication;import com.czhappy.commonindexdemo.R;import com.czhappy.commonindexdemo.adapter.CampaignListAdapter;import com.czhappy.commonindexdemo.adapter.ClassflyListAdapter;import com.czhappy.commonindexdemo.jsonparse.JSONObject;import com.czhappy.commonindexdemo.jsonparse.ReflectUtil;import com.czhappy.commonindexdemo.model.CampaignList;import com.czhappy.commonindexdemo.model.Classfly;import com.czhappy.commonindexdemo.model.IndexBanner;import com.czhappy.commonindexdemo.model.IndexBannerList;import com.czhappy.commonindexdemo.okhttp.LoadingDialogCallback;import com.czhappy.commonindexdemo.utils.AccordionTransformer;import com.czhappy.commonindexdemo.utils.Api;import com.czhappy.commonindexdemo.utils.NetworkImageHolderView;import com.czhappy.commonindexdemo.utils.ToastUtil;import com.czhappy.commonindexdemo.view.GridViewForScrollView;import com.github.jdsjlzx.interfaces.OnLoadMoreListener;import com.github.jdsjlzx.interfaces.OnRefreshListener;import com.github.jdsjlzx.recyclerview.LRecyclerView;import com.github.jdsjlzx.recyclerview.LRecyclerViewAdapter;import com.github.jdsjlzx.recyclerview.ProgressStyle;import com.lzy.okgo.OkGo;import java.util.ArrayList;import java.util.List;import butterknife.BindView;import butterknife.ButterKnife;import okhttp3.Call;import okhttp3.Response;public class IndexFragment extends Fragment implements ViewPager.OnPageChangeListener{ @BindView(R.id.back_iv) ImageView backIv; @BindView(R.id.layout_back) LinearLayout layoutBack; @BindView(R.id.title_tv) TextView titleTv; @BindView(R.id.right_tv) TextView rightTv; @BindView(R.id.layout_right) LinearLayout layoutRight; @BindView(R.id.campaign_recyclerview) LRecyclerView mRecyclerView; private View mView; private GridViewForScrollView classflyGridview; private LinearLayout pointGroup;; private ConvenientBanner convenientBanner; private TextView bannerTitleTv;; private List<String> networkImages = new ArrayList<String>(); private int lastPosition = 0; private CampaignListAdapter campaignListAdapter; private ClassflyListAdapter classflyListAdapter; private IndexBannerList indexBannerList; private CampaignList campaignList; private LRecyclerViewAdapter mLRecyclerViewAdapter; public int pageNum = 1; public int pageSize = 4; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container,    Bundle savedInstanceState) { mView = inflater.inflate(R.layout.fragment_index, container,  false); ButterKnife.bind(this, mView); initView(); initClassfly(); return mView; } private void initView() { backIv.setVisibility(View.GONE); titleTv.setText("快知网"); layoutRight.setVisibility(View.INVISIBLE); campaignListAdapter = new CampaignListAdapter(getActivity()); mLRecyclerViewAdapter = new LRecyclerViewAdapter(campaignListAdapter); mRecyclerView.setAdapter(mLRecyclerViewAdapter); mRecyclerView.setLayoutManager(new LinearLayoutManager(getActivity())); mRecyclerView.setRefreshProgressStyle(ProgressStyle.LineSpinFadeLoader); mRecyclerView.setArrowImageView(R.drawable.ic_pulltorefresh_arrow); mRecyclerView.setLoadingMoreProgressStyle(ProgressStyle.BallSpinFadeLoader); //add a HeaderView final View header = LayoutInflater.from(getActivity()).inflate(R.layout.index_header,(ViewGroup)mView.findViewById(android.R.id.content), false); classflyGridview = (GridViewForScrollView) header.findViewById(R.id.classfly_gridview); classflyGridview.setFocusable(false); pointGroup = (LinearLayout) header.findViewById(R.id.point_group); convenientBanner = (ConvenientBanner) header.findViewById(R.id.convenientBanner); bannerTitleTv = (TextView) header.findViewById(R.id.banner_title_tv); mLRecyclerViewAdapter.addHeaderView(header); mRecyclerView.setOnRefreshListener(new OnRefreshListener() {  @Override  public void onRefresh() {  pageNum = 1;  doRequest(pageNum, true);  requestBannerList();  } }); mRecyclerView.setOnLoadMoreListener(new OnLoadMoreListener() {  @Override  public void onLoadMore() {  pageNum++;  doRequest(pageNum, false);  } }); //设置头部加载颜色 mRecyclerView.setHeaderViewColor(R.color.colorAccent, R.color.dark ,android.R.color.white); //设置底部加载颜色 mRecyclerView.setFooterViewColor(R.color.colorAccent, R.color.dark ,android.R.color.white); //设置底部加载文字提示 mRecyclerView.setFooterViewHint("拼命加载中","已经全部为你呈现了","网络不给力啊,点击再试一次吧"); mRecyclerView.setRefreshing(true);// mLRecyclerViewAdapter.setOnItemClickListener(new OnItemClickListener() {//  @Override//  public void onItemClick(View view, int position) {////  }//// });//// mLRecyclerViewAdapter.setOnItemLongClickListener(new OnItemLongClickListener() {//  @Override//  public void onItemLongClick(View view, int position) {////  }// }); } private void initClassfly() { List<Classfly> list = new ArrayList<Classfly>(); Classfly c1 = new Classfly("3", "通知公告", R.mipmap.classfly_bg1); Classfly c2 = new Classfly("4", "教育学习", R.mipmap.classfly_bg2); Classfly c3 = new Classfly("5", "偶像明星", R.mipmap.classfly_bg3); Classfly c4 = new Classfly("6", "特价优惠", R.mipmap.classfly_bg4); Classfly c5 = new Classfly("7", "线下活动", R.mipmap.classfly_bg5); Classfly c6 = new Classfly("8", "其它", R.mipmap.classfly_bg6); list.add(c1); list.add(c2); list.add(c3); list.add(c4); list.add(c5); list.add(c6); classflyListAdapter = new ClassflyListAdapter(getActivity()); classflyGridview.setAdapter(classflyListAdapter); classflyListAdapter.setItems(list); classflyGridview.setOnItemClickListener(new AdapterView.OnItemClickListener() {  @Override  public void onItemClick(AdapterView<&#63;> parent, View view, int position, long id) {  } }); } private void doRequest(int page, final boolean isRefresh) { OkGo.post(Api.GET_CAMPAIGN_LIST)  .tag(this)  .params("currentPage", String.valueOf(page))  .params("pageSize", String.valueOf(pageSize))  .execute(new LoadingDialogCallback(getActivity()) {   @Override   public void onSuccess(String s, Call call, Response response) {   if(isRefresh){    mRecyclerView.refreshComplete();   }else {    mRecyclerView.loadMoreComplete();   }   try {    campaignList = (CampaignList) ReflectUtil     .copy(CampaignList.class,      new JSONObject(s));   } catch (Exception e) {    e.printStackTrace();   }   if (campaignList != null) {    String result = campaignList.getResult();    if (Api.SUCCESS.equals(result)) {    int j = campaignList.getData().size();    if (isRefresh) {     campaignListAdapter.clear();    }    if (j != pageSize) {     mRecyclerView.setNoMore(true);    }    campaignListAdapter.addAll(campaignList.getData());    }else{    ToastUtil.show(getActivity(), campaignList.getMsg());    }   }   }   @Override   public void onError(Call call, Response response, Exception e) {   super.onError(call, response, e);   if(isRefresh){    mRecyclerView.refreshComplete();   }else {    mRecyclerView.loadMoreComplete();   }   KuaiZhiApplication.showResultToast(getActivity(), call, e);   }  }); } private void requestBannerList() { OkGo.post(Api.GET_INDEX_BANNER_LIST)  .tag(this)  .cacheKey("cache_index_banner_list")  .execute(new LoadingDialogCallback(getActivity()) {   @Override   public void onCacheSuccess(String s, Call call) {   super.onCacheSuccess(s, call);   analysisIndexBannerRequest(s);   }   @Override   public void onSuccess(String s, Call call, Response response) {   analysisIndexBannerRequest(s);   }   @Override   public void onError(Call call, Response response, Exception e) {   super.onError(call, response, e);   KuaiZhiApplication.showResultToast(getActivity(), call, e);   }  }); } private void analysisIndexBannerRequest(String s){ try {  indexBannerList = (IndexBannerList) ReflectUtil   .copy(IndexBannerList.class,    new JSONObject(s)); } catch (Exception e) {  e.printStackTrace(); } if (indexBannerList != null) {  String result = indexBannerList.getResult();  if (Api.SUCCESS.equals(result)) {  networkImages.clear();  for (IndexBanner ib : indexBannerList.getData()) {   networkImages.add(ib.getBanner_url());  }  setRecommendInfo();  initBanner();  }else{  ToastUtil.show(getActivity(), indexBannerList.getMsg());  } } } private void initBanner() { convenientBanner.setPages(new CBViewHolderCreator<NetworkImageHolderView>() {  @Override  public NetworkImageHolderView createHolder() {  return new NetworkImageHolderView();  } }, networkImages)  .setOnPageChangeListener(this);//监听翻页事件 convenientBanner.setPageTransformer(new AccordionTransformer()); convenientBanner.startTurning(3000); convenientBanner.setOnItemClickListener(new com.bigkoo.convenientbanner.listener.OnItemClickListener() {  @Override  public void onItemClick(int position) {  } }); } private void setRecommendInfo() { pointGroup.removeAllViews(); for (int i = 0; i < indexBannerList.getData().size(); i++) {  // 添加指示点  ImageView point = new ImageView(getActivity());  LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(   LinearLayout.LayoutParams.WRAP_CONTENT,   LinearLayout.LayoutParams.WRAP_CONTENT);  if (i != indexBannerList.getData().size() - 1) {  params.rightMargin = 10;  }  point.setLayoutParams(params);  point.setBackgroundResource(R.drawable.point_bg);  if (i == 0) {  point.setEnabled(true);  } else {  point.setEnabled(false);  }  pointGroup.addView(point); } } @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override public void onPageSelected(int position) { // 改变指示点的状态 // 把当前点enbale 为true if (indexBannerList != null && indexBannerList.getData() != null && indexBannerList.getData().size() > 0) {  bannerTitleTv.setText(indexBannerList.getData().get(position).getBanner_title()); } pointGroup.getChildAt(position).setEnabled(true); // 把上一个点设为false pointGroup.getChildAt(lastPosition).setEnabled(false); lastPosition = position; } @Override public void onPageScrollStateChanged(int state) { }}

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

利用Android制作一个APP首页

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

利用Android制作一个APP首页

本篇文章给大家分享的是有关利用Android制作一个APP首页,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。1.首页展示LRecyclerView作为主框架,轮播图以及分类网格
2023-05-31

利用Android怎么制作一个APP登录界面

这期内容当中小编将会给大家带来有关利用Android怎么制作一个APP登录界面,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1.布局的xml文件2023-05-31

利用Android制作一个商品详情页

今天就跟大家聊聊有关利用Android制作一个商品详情页,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。效果: 项目结构分析首先我们来分析一下要实现上面的效果,我们需要怎么做。顶部是
2023-05-31

如何利用Flutter制作一个摸鱼桌面版App

这篇文章将为大家详细讲解有关如何利用Flutter制作一个摸鱼桌面版App,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。Win10商店上架了一款名为《摸鱼》的App,在下载打开之后,这个Ap
2023-06-22

Android手把手教大家制作APP首页(下拉刷新、自动加载)

一、概述 作为一名三年Android开发经验的程序员,今天和大家一起实战一款APP的首页功能,这个首页在我们平时接触中还是很常见的,虽然页面简单,但是里面涉及的功能点还是挺多的。代码如有不足的还望各路同仁指点一二。 页面中使用的开发库:
2022-06-06

Android如何利用OpenCV制作人脸检测APP

这篇文章将为大家详细讲解有关Android如何利用OpenCV制作人脸检测APP,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。无图无真相,先把APP运行的结果给大家看看。如上图所示,APP运行后,点击“选
2023-06-21

Android怎么制作一个app顶部menu菜单栏

这篇文章将为大家详细讲解有关Android怎么制作一个app顶部menu菜单栏,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。菜单添加:2023-05-31

如何利用Github免费制作app介绍主页

本篇内容介绍了“如何利用Github免费制作app介绍主页”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1、先去注册个帐号2、注册号账号后,
2023-06-19

在android应用中利用WebView制作一个进度条

本篇文章为大家展示了在android应用中利用WebView制作一个进度条,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。1、进度条的位置问题 进度条加载完成后消失,是invisible还是gone掉
2023-05-31

怎么在android中利用recyclerview制作一个聊天界面

本篇文章给大家分享的是有关怎么在android中利用recyclerview制作一个聊天界面,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。实现代码:package com.it
2023-05-31

怎么在Android中利用extView制作一个跑马灯效果

本篇文章为大家展示了怎么在Android中利用extView制作一个跑马灯效果,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。当Layout中只有一个TextView需要实现跑马灯效果时,操作如下。
2023-05-31

利用Android怎么绘制一个太极图

这篇文章将为大家详细讲解有关利用Android怎么绘制一个太极图,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。Android是通过graphics类来显示2D图形的。其中graphics中包
2023-05-31

如何使用FrontPage制作一个网页

这篇文章给大家介绍如何使用FrontPage制作一个网页,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。1、网页及其组成通过浏览器在WWW上所看到的每一幅画面都是一个网页(Web Page),如图1-1所示。图1-1网页
2023-06-08

使用Android制作一个欢迎界面

使用Android制作一个欢迎界面?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。闪屏:在打开App时,展示,持续数秒后,自动关闭,进入另外的一个界面,SplashActiv
2023-05-31

CentOS中怎么利用FPM制作一个RPM包

本篇文章给大家分享的是有关CentOS中怎么利用FPM制作一个RPM包,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。  一、我们来先安装FPM:  # FPM是Ruby模块  
2023-06-10

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录