Android项目之多功能新闻客户端(上)

Android项目之新闻客户端

  • 主要功能(后续添加,完善)
    • 进入有良好的动画效果
    • 初始进入有新手引导界面
    • 可以浏览新闻,一键分享
    • 侧边栏,底部标题栏,多页面切换
    • 消息推送等

新手引导界面

引导用户使用APP的大致应用介绍(只在第一次使用时显示)

  • 实现

    • 可滑动的界面VIewPager(填充介绍APP的图片)
    • “开始体验”的Button按键
      • 最后一个页面显示开始体验的按钮。
    • 显示下方页面指示器的小圆点

      • OnPageCHangelistener()来判断移动位置和距离。
      • 计算两个圆点的距离
      • 移动距离=第二个圆点left值 - 第一个圆点left值
      • measure->layout(确定位置)->draw(activity的onCreate方法执行结束之后才会走此流程)
      • mPointDis = llContainer.getChildAt(1).getLeft() - llContainer.getChildAt(0).getLeft();
      • System.out.println(“圆点距离:” + mPointDis);

      • 监听layout方法结束的事件,位置确定好之后再获取圆点间距

程序进入时闪屏页面

  • 动画实现旋转RotateAnimation,缩放ScaleAnimation,渐变AlphaAnimation效果,添加动画集合AnimationSet set并启动startAnimation(set)。
  • 并在onAnimationEnd中判断动画是否结束,跳转页面,如果是第一次进入, 跳新手引导,否则跳主页面。

侧滑菜单

  • 使用SlidingMenu API实现方法

    SlidingMenu slidingMenu = getSlidingMenu();
    slidingMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);//全屏触摸
    slidingMenu.setBehindOffset(200);//屏幕预留200像素宽度

  • 侧滑菜单的内容

    • 使用Xutils访问服务器Tomcat(使用开源框架Xutils)
      • 可以自己创建Tomcat服务器,也可以找线上服务器url地址连接。
    • 使用json文件保存页面所需数据(使用Gson解析数据)
      • 分类信息封装,使用Gson解析时:逢{}创建对象,逢[]创建集合(ArrayList),所有字段名称要和json返回字段高度一致(字段匹配)
      • 缓存json文件(key = url,value = json内容,保存在本地)
    • 侧边栏使用json文件的数据表示相关信息
    • 点击侧边栏listview后,收起侧边栏。使用slidingmenu.toggle()方法(调用可以使侧边栏状态改变)
    • 侧边栏点击后,应该修改新闻的内容
      • 菜单的详细页的展示(TextView)
      • 多次对象的引用来提取主页面的FrameLayout的布局。

主页面的大致构造

  • 底部标签栏
    • 底部为RadioGroup+RadioButton来制作几个点击可变色的btn。
  • 标签页面
    • ViewPager(与底部标签栏相结合,所以禁止左右滑动)。
  • 标题栏
    • 几个页面设置类似的标题栏,可以提取为style,改变标题文字即可。
  • 底部标签栏和标签页面一一对应
    • 设置btn的点击事件,改变ViewPager相应界面
    • ViewPager会默认自动加载下一页。(浪费性能,应该禁用,调用onPageSelected(int pos)方法在显示界面时在加载此界面的Data)。
    • 首页和设置页要禁用侧边栏。

新闻页面的详细

  • 新闻页签页面

    1. 可滑动的ViewPager制作页签页面
      • 初始化页签页面(通过Xutils读取json数据)
      • 两个ViewPager嵌套了,使外层ViewPager不拦截滑动事件,重写父类的ViewPager的事件拦截方法onInterceptTouchEvent() return false//设置不拦截。
    2. 页签页面上方设置文字指示器
      • 使用开源框架ViewPager Indicator,并将ViewPager和指示器绑定在一起
      • 重写PagerAdapter的getPageTitle来设置页签页面的标题
      • 在清单文件中修改背景style和文字style
      • 页签滑动禁用侧边栏:调用dispatchTouchEvent方法,请求所有父类都不要拦截事件
      • 设置页签页面第一页对侧边栏的调用,其他页签页面禁用侧边栏
    3. 页签页面设置点击按钮跳转下一页
      • 添加ImageButton,设置点击事件,跳转下一页面
    4. 头条新闻内容的展示
      • 头条新闻的轮流展示 ViewPager(第三个ViewPager的嵌套)
      • httpUtils来请求json数据,Gson解析json数据传递给ViewPager展示
      • 新闻图片的缓存(BitmapUtils)
      • 请求新闻图片ViewPager不要被上一层的ViewPager类拦截,同理重写它的父类方法,但滑动到最后自动切换页签页面的下一页面,所以设置拦截第一个和最后一个新闻图片。
      • 设置第一个和最后一个新闻图片的滑动事件。
      • 更新头条新闻信息的标题。(解析json数据,设置为title标题)
      • 设置头条新闻页面指示器(使用ViewPagerIndicator框架,重写指示器的style,并关联新闻图片信息,OnPageSelected(0)默认第一个被选中)
    5. 列表新闻展示
      • bitmap图片的压缩和自动剪切centerCrop中心剪切
      • 列表新闻的大体内容TextView和时间TextView
    6. 实现上下滑动使新闻移动
      • 设置头条新闻ViewPager为列表新闻的头部局addHeaderView()
    7. 实现下拉刷新
      • 下拉刷新的ListView
      • 设置刷新的animation的动画效果,但结束时clearAnimation(),不然隐藏出现问题。并判断当前刷新状态,则不进入刷新,略过该方法。
      • 设置回调方法来refresh数据,完成之后设置隐藏刷新的ListView。
      • 添加刷新时间读取Date()类即可。
    8. 底部上滑加载
      • 设置自定义进度条,表示下拉刷新。
      • 判断是否为最后一个item并是否加载中,并添加数据。
    9. 设置标记已读与未读
      • 设置字符串保存新闻id来标记已读。

当前整体UI布局
MainActivity
  • leftMenuFragement(侧边栏菜单)
    • SlidingMen框架(侧边栏框架)
      • ListView(新闻主题分栏)
  • ContentFragment(主页面)
    • ViewPager(中心页面)
      • HomePager(主页)
      • NewsCenterPager(新闻中心-侧边栏点击进入的几个页面)
        • NewsMenu(新闻菜单)
          • ViewPagerIndicator框架(可滑动的文字指示器)
          • ListView(各个新闻大体内容)
            • ListView的下拉刷新(一般隐藏)
            • ListView的头部局ViewPager(展示可滑动的头条新闻)
              • ViewPagerIndicator框架(可滑动的图片指示器)
            • 上下滑动的列表新闻ListView
              • Bitmap新闻图片和该新闻大体介绍和时间TextView
            • 底部上滑加载item
              • 自定义旋转的进度条
        • TopicMenu(主题新闻菜单)
        • PhotoMenu(图片新闻菜单)
        • InteractMenu(互动菜单)
      • SettingPager(设置)
    • RadioGroup(底部标题栏)
      • RadioButton(底部按键)

未完待续。

———谢谢观看———

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值