首页 > 代码库 > Animation与nineoldandroid项目 day02
Animation与nineoldandroid项目 day02
一. 项目问题
1. 欢迎界面显示时,使back键失效
二. 项目开发功能点:
1. 监听按键事件
在Activity中重写onKeyDown()方法
2. 自定义主题解决Android多版本碎片化问题
目的:在2.x中的主题是NoTitlebar,
在4.x中的主题是NoActionbar
Android系统的读取资源的机制:
apk的res目录中有多个styles.xml,
当apk运行在2.x版本中,Android系统会读取values目录中的
styles.xml
当apk运行在4.x版本中,Android系统会读取values-v14
目录中的styles.xml
步骤:
1) 在values/styles.xml文件中新建一个主题
2) 在values/styles.xml文件中新建一个父主题
3) 在values-v14/styles.xml文件中新建一个父主题
4) 在清单文件中为欢迎页面Activity配置新的主题
3. 动画
gif、flash
原理:若干图片按照顺序和一定时间间隔(100毫秒)播放
默认不支持gif,因为画质较差(8位图,256色)
Android中支持的动画
3.1 FrameAnimation
功能:能够实现任意复杂动画
实现步骤:
1) 拷贝关键帧(Frame)
2) 新建Android XML
Resource Type :Drawable
Root Element :animation-list
3) 编辑图片先后顺序和切换时间间隔
增加oneshot属性,动画只播放一次
4) 得到动画对象AnimationDrawable,播放
注意:FrameAnimation图片数量有限
实际应用场景:局部的范围内,使用少量图片实现动画
3.2 TweenAnimation
原理:通过改变View的属性
大小、位置、角度、透明度
3.2.1 实现透明度动画步骤:
a) 代码方式创建动画对象
b) XML方式创建动画对象
编辑Animation内容
代码中将动画xml转换为Animation对象
3.2.2 缩放动画配置 移动动画配置
旋转动画配置
一个屏幕的宽度或高度:100%p
4. 快捷的注册事件的方法
1) 在布局中为控件添加onClick属性
2) 在Activity中添加以onClick属性值为名称的方法
注意:必须是public,参数必须是View v
5. 开源项目原理
项目设置为库,可被其他项目复用
6. nineoldandroid项目用法
Properties动画 属性动画
Android3.x新增
问题:官方不支持2.x
使用开源项目
7. 欢迎页面
使用的控件ViewPager
libs/android-support-v4.jar
实现步骤:
1) 在布局中新增ViewPager控件
android.support.v4.view.ViewPager
技巧:在代码中输入ViewPager,联想后在import中
2) 初始化所有ViewPager页面,并用ArrayList<View>保存
3) 代码中设置适配器
mPager.setAdapter()
4) 重写isViewFromObject()方法
return arg0 == arg1;
5) 重写instantiateItem()方法
View view = mList.get(position);
mPager.addView(view);
return view;
6) 重写destroyItem()方法
View view = mList.get(position);
mPager.removeView(view);
// 改变ViewPager缓存个数,
// 参数的含义是左右各缓存几个
mPager.setOffscreenPageLimit(3);
java.lang.UnsupportedOperationException: Required method
destroyItem was not overridden
附:常见问题
目标:能够解决所有讲解过的FC问题
1. 代码中引用R编译错误,
原因是:导入了错误的R
2. java.lang.RuntimeException: Unable to instantiate(实例化) activity ComponentInfo{com.example.cw_0811/com.example.w_0811.MainActivity}: java.lang.ClassNotFoundException: com.example.w_0811.MainActivity
FC的原因:运行时异常和Error
查看日志的方法:
1) 拉到logcat最底部,向上找
main是线程名称,可以是其他
2) 找异常类型名称:
3) ClassNotFoundException的原因是:
代码中没有这个类,注意仔细检查包名 + 类名
3. java.lang.RuntimeException: Unable to start activity ComponentInfo{org.yuchen.test/org.yuchen.test.MainActivity}: java.lang.ClassCastException: android.widget.Button cannot be cast to android.widget.ImageView
原因:eclipse的ADT的bug
出现场景:修改布局而较少修改代码
解决:project->clean