[android] 新闻客户端主界面部分
当我们使用activity加fragment的时候,每个界面都要建立一个fragment,每个fragment里面都要重写onCreate(),onCreateView(),onActivityCreated(),方法,我们新建一个基类BaseFragment来重写这些方法
BaseFragment需要定义一个抽象方法initView(),用来初始化View对象,需要子类去实现,我们父类把LayoutInflater对象传进去
BaseFragment需要定义一个抽象方法initData(),用来初始化数据,需要子类去实现
package com.qingguow.news.fragment; import android.content.Context;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
/**
* 基础类
* @author taoshihan
*
*/
public abstract class BaseFragment extends Fragment { public Context context;
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onActivityCreated(savedInstanceState);
initData(savedInstanceState);
} @Override
public void onCreate(@Nullable Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
context=getActivity();
} @Override
@Nullable
public View onCreateView(LayoutInflater inflater,
@Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view=initView(inflater);
return view;
}
/**
* 初始化View对象
* @param inflater
* @return
*/
public abstract View initView(LayoutInflater inflater);
/**
* 初始化数据
* @param Bundle
* @return
*/
public abstract void initData(Bundle savedInstanceState);
}
主Fragment里实现Banner轮播
在fragment_index.xml布局文件中添加节点<android.support.v4.view.ViewPager />
获取ViewPager对象,通过findViewById()方法
调用ViewPager对象的setAdapter()方法,设置适配器,参数:PagerAdapter对象
使用匿名内部类的方式实现抽象方法,getCount(),isViewFromObject(),instantiateItem(),destroyItem()
重写getCount()方法,返回轮播的个数
重写isViewFromObject()方法,返回布尔值,
重写instantiateItem()方法,将当前view对象添加到ViewGroup对象,返回当前对象
重写destroyItem()方法,从当前container中删除指定位置(position)的View
package com.qingguow.news.fragment; import java.util.ArrayList;
import java.util.List; import android.os.Bundle;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView; import com.qingguow.news.R;
/**
* 首页
* @author taoshihan
*
*/
public class IndexFragment extends BaseFragment {
private List<View> banners;
@Override
public View initView(LayoutInflater inflater) {
View view=inflater.inflate(R.layout.fragment_index, null);
//banner部分
banners=new ArrayList<>();
TextView tv=new TextView(context);
tv.setText("测试");
banners.add(tv);
TextView tv2=new TextView(context);
tv2.setText("测试2");
banners.add(tv2);
ViewPager vp=(ViewPager) view.findViewById(R.id.vp_banner);
vp.setAdapter(new PagerAdapter(){
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView(banners.get(position));
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
container.addView(banners.get(position));
return banners.get(position);
}
@Override
public int getCount() {
return banners.size();
} @Override
public boolean isViewFromObject(View arg0, Object arg1) {
return arg0==arg1;
}
});
return view;
} @Override
public void initData(Bundle savedInstanceState) {
// TODO Auto-generated method stub }
}
[android] 新闻客户端主界面部分的更多相关文章
- 开源:我的Android新闻客户端,速度快、体积小、支持离线阅读、操作简便、内容展现形式丰富多样、信息量大、功能全面 等(要代码的留下邮箱)
分享:我的Android新闻客户端,速度快.体积小.支持离线阅读.操作简便.内容展现形式丰富多样.信息量大.功能全面 等(要代码的留下邮箱) 历时30天我为了开发这个新闻客户端APP,以下简称觅闻 h ...
- Android应用经典主界面框架之二:仿网易新闻client、CSDN client (Fragment ViewPager)
另外一种主界面风格则是以网易新闻.凤凰新闻以及新推出的新浪博客(阅读版)为代表.使用ViewPager+Fragment,即ViewPager里适配器里放的不是一般的View.而是Fragment.所 ...
- Ace教你一步一步做Android新闻客户端(四) 优化Bitmap大法
我计划着把需要用到的知识分解开来写,趁着我们要开发这款客户端的机会把安卓所有移动客户端开发中的技术贯穿其中,也是我自己成长的过程.By Ace in 20160121 我们开发一款新闻客户端程序,它的 ...
- Android应用经典主界面框架之中的一个:仿QQ (使用Fragment, 附源代码)
备注:代码已传至https://github.com/yanzi1225627/FragmentProject_QQ 欢迎fork,如今来审视这份代码,非常多地方写的不太好,欢迎大家指正.有时间我会继 ...
- Android AsynTask更新主界面
虽然今天礼拜六还在加班,但是在等接口,所以还是有很多时间来自己学点东西的,所以就接着昨天的来.今天继续学的是不通过主线程来更新主线程的界面的问题. 昨天是用的开启线程调用Handler来更新线程,那个 ...
- Android Tab类型主界面 Fragment+TabPageIndicator+ViewPager
文章地址: Android项目Tab类型主界面大总结 Fragment+TabPageIndicator+ViewPager 1.使用ViewPager + PagerAdapter 每个页面的内容都 ...
- Ace教你一步一步做Android新闻客户端(一)
复制粘贴了那么多博文很不好意思没点自己原创的也说不出去,现在写一篇一步一步教你做安卓新闻客户端,借此机会也是让自己把相关的技术再复习一遍,大神莫笑,专门做给新手看. 手里存了两篇,一个包括软件视图 和 ...
- [android] 新闻客户端实现左侧导航点击切换
设置主布局文件,为根布局设置一个id,作为内容区 给ListView的条目设置点击事件,setOnItemClickListener()方法,参数:上下文 当前的Fragment实现OnItemCli ...
- [android] 新闻客户端引入SlidingMenu
下载SlidingMenu,https://github.com/jfeinstein10/SlidingMenu 导入library 我们项目右键==>Properties==>Andr ...
随机推荐
- node.js second day
create global link 使用全局模式安装的包不能直接通过require使用,但是nmp提供了一个 nmp link ,这个可以打破限制 $ nmp link [express] ./no ...
- Windows核心编程:第2章 字符和字符串处理
Github https://github.com/gongluck/Windows-Core-Program.git //第2章 字符和字符串处理.cpp: 定义应用程序的入口点. // #incl ...
- WinForm POST上传与后台接收
前端 using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using ...
- WTS 2.1.18124.1 彻底抛弃了 15063(Win 10 创意者更新)
现在新建的WTS模板,默认最低版本是16299了,目标版本是17134 17134到来之前,就感觉到会这样,不过终究还是来了. 不支持15063的原因是导航菜单Windows.UI.Xaml.Cont ...
- cmd命令关闭占用程序的端口
遇到的问题: 在重新启动tomcat服务时,启动失败,显示的信息大概为:Error running 'cus_manager_system': Unable to open debugger port ...
- postgresql-tps
tps TPS就是每秒事务数,但是事务是基于虚拟用户数的,假如1个虚拟用户在1秒内完成1笔事务,那么TPS明显就是1:如果 某笔业务响应时间是1ms,那么1个用户在1秒内能完成1000笔事务,TPS就 ...
- Math、Random、System、BigInteger、Date、DateFormat、Calendar类,正则表达式_DAY14
1:Math&大数据类四则运算 X abs(X x) double random() 产生随机数 double ceil(double a) 向上取整 double flo ...
- Hive中的Row_Number()使用
语法:row_number() over (partition by 字段a order by 计算项b desc ) rank --这里rank是别名 partition by:类似hive的建表, ...
- (转)详解Python3 中hasattr()、getattr()、setattr()、delattr()函数及示例代码数
原文:https://www.jb51.net/article/138363.htm hasattr()函数 hasattr()函数用于判断是否包含对应的属性 语法: hasattr(object,n ...
- SQLServer中的cross apply和FOR XML PATH
参考: FOR XML PATH:http://www.cnblogs.com/doubleliang/archive/2011/07/06/2098775.html cross apply:http ...