又经过经过两个星期的不懈努力,又完成了一个的练习项目——智慧广州。现在稍稍做一下总结。随便分享一下载连接http://pan.baidu.com/s/1hsbY8Gc,详情请参考android智慧北京项目
有5大功能,首页,新闻中心,智慧服务,政务,设置,由于其他功能类似,其中只实现了首页新闻中心的内容,里面用到的数据均来自服务器tomcat上的数据,通过解析json得到。
(一)splash界面
1,动画效果
AlphaAnimation 渐变动画
RotateAnimation 旋转动画(设置锚点)
ScaleAnimation 缩放动画(设置锚点)
AnimationSet 动画集
(二)新手向导页GuideActivity和主界面 MainActivity
1)GuideActivity
用ViewPager加载三张图片
mViewPager.setAdapter(new GuideAdapter());// 设置数据
绘制先导页下方的小红点
measure->layout(确定位置)->draw(activity的onCreate方法执行结束之后才会走此流程)
监听layout方法结束的事件,位置确定好之后再获取圆点间距
2) MainActivity
添加两个Fragment,LeftMenuFragment和ContentFragment
(三)主页面fragment
1,NoScrollViewPager 继承ViewPager
重写onTouchEvent方法,对滑动事件的禁用
onInterceptTouchEvent 方法 return false;// 不拦截子控件的事件
mPagers = new ArrayList<BasePager>();
// 添加五个标签页,点击切换ViewPager的内容
mPagers.add(new HomePager(mActivity));
mPagers.add(new NewsCenterPager(mActivity));
mPagers.add(new SmartServicePager(mActivity));
mPagers.add(new GovAffairsPager(mActivity));
mPagers.add(new SettingPager(mActivity));
----- 新闻中心 NewsCenterPager
// 请求服务器,获取数据
// 开源框架: XUtils
getDataFromServer();
获取服务器返回结果result
传给processData(result);方法解析数据
// Gson: Google Json
Gson gson = new Gson();
mNewsData = gson.fromJson(json, NewsMenu.class);
System.out.println("解析结果:" + mNewsData);
// 给侧边栏设置数据
fragment.setMenuData(mNewsData.data);
-------------菜单详情页-新闻 NewsMenuDetailPager
开源框架ViewPagerIndicator
@ViewInject(R.id.indicator)
private TabPageIndicator mIndicator;
mViewPager.setAdapter(new NewsMenuDetailAdapter());
mIndicator.setViewPager(mViewPager);
------------------------页签页面对象TabDetailPager
将下拉刷新和头条新闻数据添加到listview的头布局中
mViewPager.setAdapter(new TopNewsAdapter());
mIndicator.setViewPager(mViewPager);
mIndicator.setSnap(true);// 快照方式展示
private PullToRefreshListView lvList
列表新闻
mNewsList = newsTabBean.data.news;
if (mNewsList != null) {
mNewsAdapter = new NewsAdapter();
lvList.setAdapter(mNewsAdapter);
}
2,RadioGroup
// 底栏标签切换监听
rgGroup.setOnCheckedChangeListener
(四)侧边栏LeftMenuFragment
1, 用一个listview根据json解析出来的数据添加4个item
mAdapter = new LeftMenuAdapter();
lvList.setAdapter(mAdapter);
2, // 侧边栏点击之后, 要修改新闻中心的FrameLayout中的内容
setCurrentDetailPager(position);
设置当前菜单详情页 MainActivity---->ContentFragment---->NewsCenterPager
// 重新给frameLayout添加内容
BaseMenuDetailPager pager = mMenuDetailPagers.get(position);// 获取当前应该显示的页面
View view = pager.mRootView;// 当前页面的布局
// 清除之前旧的布局
flContent.removeAllViews();
flContent.addView(view);// 给帧布局添加布局
(五)新闻详情页面NewsDetailActivity
设置字体大小
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("字体设置");
// 根据选择的字体来修改网页字体大小
WebSettings settings = mWebView.getSettings();
// 正常字体
settings.setTextSize(TextSize.NORMAL);
分享
第三方分享平台: ShareSdk