[lottery] 01_内容部分显示管理(一)——界面的切换

Android 4.0

内容部分显示管理(一)

界面切换处理的内容:
1、界面的切换
2、应对重复点击
3、返回键处理
android2.3有问题
在onAnimationEnd 的问题,因为该方法运行在主线程
parent.removeView(view); 在2.3会报空指针访问异常 
解决:用handler+message来避免该问题
通过发送消息,在消息中执行该操作
技术点:
①、 View和ViewGroup
文件(View)  文件夹(ViewGroup)
只有ViewGroup有addView,以及removeView(View)和removeAllViews()方法,而View没有此方法
ViewGroup.addView(view);
组合设计模式
②动画(xml和代码定义动画)及其监听事件
translate:位移动画
AlphaAnimation:淡入淡出动画
Animation.
setAnimationListener( AnimationListener);
③Handler+Message
④代码公共部分的抽取
⑤equals和==什么时候用?
如果一个类,没有复写Object中的equals方法,那么就用==
如果一个类,复写了Object中的equals方法,那么就用equals方法
  ==比对的就是内存的地址,如果没有复写equals方法,和==一样
1、界面的切换
核心:通过ViewGroup中的
addView(View)添加一个View到指定的ViewGroup中
removeAllViews()将该ViewGroup中所有的View给移除
removeView(View)将该ViewGroup中执行的View给移除

四个大问题:
①当进入到第二个界面的时候,清理掉第一个显示内容
解决:在进来的时候将前面一个View给移除掉
通过前一个View的getParent(),转成ViewGroup来移除removeView(View)或者removeAllViews()
②切换效果处理(动画:a、位移;b、淡入淡出)
解决:采用代码或者代码的方法,来解决第一个View一出去和第二个界面进来的动画效果
以及动画监听,在动画结束后,从ViewGroup中将前一个View给移除出去,注意android2.3问题
③处理changeView满足多个界面的切换要求(参数:targetView)
将多个界面的公共部分,抽取成一个抽象类BaseView,每一个界面都继承该类,然后在changeView就可以通过BaseView,而不是指定某一个View。由于changeView是中间内容的关键方法,所以用一个UImanager来管理该View的切换
④模拟切换,真实的切换
通过UImanager管理,可以在需要的时候调用其中的getView()来实现View的切换。
切换机制的说明
①加载第一个界面:创建FristView提供getView方法,用于加载时显示
界面切换:创建SecondView用于切换显示
核心方法remove和add
②界面切换动画处理
简单移动动画
淡入淡出动画
AlphaAnimation.setDuration(duration);//持续时间
AlphaAnimation.setStartOffset(delay);//延时时间
                    处理AnimationListener
③抽取界面
        定义抽象类规范中间部分图形管理,对外提供获取中间视图信息入口
④内容管理:中间内容部分显示管理