项目实战:新闻APPday01学习笔记
不否认努力,继续加油!
重点、盲区,内容包括:欢迎页面、引导页面、以及是否进入过引导页面的工具类、侧滑栏的实现、以及碎片的使用时机;笔记如下:
day01
内容
1. SplashActivity;
- 视图动画实现,RotateAnimation 旋转,ScaleAnimation 缩放,AlphaAnimation 渐变的动画;以及 set 动画集合;
- 对 set 设置动画监听;当动画结束时,判断是否用户进入过引导界面;不论是否进入过引导页都要在动画结束时 finish 掉 Splash 页面;
2. CacheUtils
- 通过 SharedPreferences 缓存数据,进而判断是否进入过引导页面的工具类;
- 通过 getBoolean() 和 putBoolean() 方法将是否进入过引导页缓存的信息到本地;
3. GuideActivity
-
上半啦是一个 ViewPager ;下边是对应的引导点随着 pager 移动而移动,在最后一页有”开始体验“的按钮;
-
ViewPager 设置 adapter 时重写 instantiateItem() 就像 ListView 中 getView() 方法;
-
引导的点;跟随页面的滑动而滑动;
a. 间距 = 第1个点距离左边的距离 - 第0个点距离左边的距离;
获取方法:设置红色点的 树状监听:
iv_red_point.getViewTreeObserver().addOnGlobalLayoutListener(new MyOnGlobalLayoutListener());
当全局开始布局 layout 的时候回调 onGlobalLayout() 方法,在该方法中获取相邻两个点的 getLeft() 进行相减法可得;该回调方法执行不只一次;要让其只执行一次要及时移除removeGlobalOnLayoutListener();
b. 得到 viewPager 移动的比例;方法:.setOnPageChangeListener(),在重写的方法 onPageScrolled() 中,其参数 positionOffset 表示页面滑动的百分比;
c. 计算红点要移动的距离&移动红点;此时要注意,要移动的点的父布局如果是 RelativeLayout,那么 要用RelativeLayout.LayoutParams;
-
“开始体验”,在最后一页 ViewPager 中显示,并设置点击事件;
4. SlidingMenu
- 实现侧滑;这里选择使用 SlidingMenu 的开源项目,而不是原生的DrawerLayout;
- 导入库;并且进行依赖;MainActivity继承SlidingFragmentActivity
- 同时可以设置是左侧侧滑还是右侧侧滑、是从边缘滑出还是从整个屏幕都可以滑出;以及侧滑后,菜单栏所占的宽度;
- 关于 SlidingMenu 更丰富的使用可以去了解很多博客;
5. Fragment
- 创建 Fragment;初始化 Fragment 时,获取FragmentManager管理对象要用 getSupportFragmentManager() ,注意不能用getFragmentManager;要求 Activity 继承自 Activity 或者 FragmentActivity ;
- 开启事务:
manager.beginTransaction();
- 替换Fragment;
ft.replace(R.id.fl_left, new LeftMenuFragment(),LEFT_MENU);
要注意,帧布局和碎片更配哦; - 提交事务 ft.commit();
6. 正文的布局文件结构
- 根布局用 LinearLayou ;上半啦 ViewPager ;下半啦 RadioGroup ;
- 对于 RadioGroup ;默认是有个点点,使用
android:button="null"
或者在 style 文件中使用:<item name="android:button">@null</item>
盲区
-
在使用 set 集合同时播放动画时;set 设置的 duration 会覆盖单个动画设置的 duration;
-
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>
-
关于动态添加 ViewPager 对应的指示点时,用到了 setLayoutParams();这是因为,此时 onCreate() 和 onResume() 的绘制已经结束,要想重绘(动态的添加点)就需要调用 setLayoutParams();
-
设置 树状监听 ;即从根布局开始一级一级向下进行监听,并作出处理;
-
这里要注意:能用 FrameLayout 写的,就不要用 RelativiLayout,能用 RelativiLayout 写的,就不要用 LinearLayou;什么时候用 LinearLayou 比较好?当你的布局需要用到权重时;
-
另外一点要注意代码的复用性;重复使用的页面可以写成 Fragment;而多个 Fragment 有重复代码,可以抽取成BaseFragment,重复使用的布局参数,写在 style 文件中引用;
-
对 Fragment 生命周期理解不细致!
-
声明本博客根据尚硅谷项目实战: 北京新闻.学习整理
其他笔记
新闻APP其他笔记
- day01
第一天的学习笔记: 新闻APP01. - day02
第二天的学习笔记: 新闻APP02. - day03
第三天的学习笔记: 新闻APP03. - day04
第四天的学习笔记: 新闻APP04. - day05
第五天的学习笔记: 新闻APP05. - day06
第六天的学习笔记:新闻APP06. - day07
第七天的学习笔记:新闻APP07.
购物商城APP学习笔记
购物商城APP学习笔记:购物商城