欢迎页面实现 & SlidingMenu的使用—Android项目实战—新闻APP01


不否认努力,继续加油!
重点、盲区,内容包括:欢迎页面、引导页面、以及是否进入过引导页面的工具类、侧滑栏的实现、以及碎片的使用时机;笔记如下:

day01

内容

1. SplashActivity;

  1. 视图动画实现,RotateAnimation 旋转,ScaleAnimation 缩放,AlphaAnimation 渐变的动画;以及 set 动画集合;
  2. 对 set 设置动画监听;当动画结束时,判断是否用户进入过引导界面;不论是否进入过引导页都要在动画结束时 finish 掉 Splash 页面;

2. CacheUtils

  1. 通过 SharedPreferences 缓存数据,进而判断是否进入过引导页面的工具类;
  2. 通过 getBoolean() 和 putBoolean() 方法将是否进入过引导页缓存的信息到本地;

3. GuideActivity

  1. 上半啦是一个 ViewPager ;下边是对应的引导点随着 pager 移动而移动,在最后一页有”开始体验“的按钮;

  2. ViewPager 设置 adapter 时重写 instantiateItem() 就像 ListView 中 getView() 方法;

  3. 引导的点;跟随页面的滑动而滑动;

    a. 间距 = 第1个点距离左边的距离 - 第0个点距离左边的距离;

    获取方法:设置红色点的 树状监听iv_red_point.getViewTreeObserver().addOnGlobalLayoutListener(new MyOnGlobalLayoutListener());当全局开始布局 layout 的时候回调 onGlobalLayout() 方法,在该方法中获取相邻两个点的 getLeft() 进行相减法可得;该回调方法执行不只一次;要让其只执行一次要及时移除 removeGlobalOnLayoutListener();
    在这里插入图片描述
    b. 得到 viewPager 移动的比例;

    方法:.setOnPageChangeListener(),在重写的方法 onPageScrolled() 中,其参数 positionOffset 表示页面滑动的百分比;

    c. 计算红点要移动的距离&移动红点;此时要注意,要移动的点的父布局如果是 RelativeLayout,那么 要用RelativeLayout.LayoutParams;

  4. “开始体验”,在最后一页 ViewPager 中显示,并设置点击事件;

4. SlidingMenu

  1. 实现侧滑;这里选择使用 SlidingMenu 的开源项目,而不是原生的DrawerLayout;
  2. 导入库;并且进行依赖;MainActivity继承SlidingFragmentActivity
  3. 同时可以设置是左侧侧滑还是右侧侧滑、是从边缘滑出还是从整个屏幕都可以滑出;以及侧滑后,菜单栏所占的宽度;
  4. 关于 SlidingMenu 更丰富的使用可以去了解很多博客;

5. Fragment

  1. 创建 Fragment;初始化 Fragment 时,获取FragmentManager管理对象要用 getSupportFragmentManager() ,注意不能用getFragmentManager;要求 Activity 继承自 Activity 或者 FragmentActivity ;
  2. 开启事务:manager.beginTransaction();
  3. 替换Fragment; ft.replace(R.id.fl_left, new LeftMenuFragment(),LEFT_MENU);
    要注意,帧布局和碎片更配哦
  4. 提交事务 ft.commit();

6. 正文的布局文件结构

  1. 根布局用 LinearLayou ;上半啦 ViewPager ;下半啦 RadioGroup ;
  2. 对于 RadioGroup ;默认是有个点点,使用 android:button="null"或者在 style 文件中使用:<item name="android:button">@null</item>

盲区

  1. 在使用 set 集合同时播放动画时;set 设置的 duration 会覆盖单个动画设置的 duration;

  2. shape 标签创建点;

    <?xml version="1.0" encoding="utf-8"?>
    <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval">
        <size android:height="10dp" android:width="10dp"/>
        <solid android:color="@android:color/darker_gray"/>
    </shape>
    
  3. 关于动态添加 ViewPager 对应的指示点时,用到了 setLayoutParams();这是因为,此时 onCreate() 和 onResume() 的绘制已经结束,要想重绘(动态的添加点)就需要调用 setLayoutParams();

  4. 设置 树状监听 ;即从根布局开始一级一级向下进行监听,并作出处理;

  5. 这里要注意:能用 FrameLayout 写的,就不要用 RelativiLayout,能用 RelativiLayout 写的,就不要用 LinearLayou;什么时候用 LinearLayou 比较好?当你的布局需要用到权重时;

  6. 另外一点要注意代码的复用性;重复使用的页面可以写成 Fragment;而多个 Fragment 有重复代码,可以抽取成BaseFragment,重复使用的布局参数,写在 style 文件中引用;

  7. 对 Fragment 生命周期理解不细致!
    在这里插入图片描述

  8. 声明本博客根据尚硅谷项目实战: 北京新闻.学习整理

其他笔记

新闻APP其他笔记

  1. day01
    第一天的学习笔记: 新闻APP01.
  2. day02
    第二天的学习笔记: 新闻APP02.
  3. day03
    第三天的学习笔记: 新闻APP03.
  4. day04
    第四天的学习笔记: 新闻APP04.
  5. day05
    第五天的学习笔记: 新闻APP05.
  6. day06
    第六天的学习笔记:新闻APP06.
  7. day07
    第七天的学习笔记:新闻APP07.

购物商城APP学习笔记

购物商城APP学习笔记:购物商城

猜你喜欢

转载自blog.csdn.net/liusaisaiV1/article/details/105881447
今日推荐