1. FrameAnimation
原理:多个关键帧按照顺序快速(100毫秒)切换
三个要素:图片/顺序/时间
2. TweenAnimation
原理:系统通过改变View的大小 位置 角度 透明度
code和xml创建Animation
xml:简单,不可动态改变
code:灵活,可以动态改变
缺点:只是视图上改变了控件,控件实际的位置不变
3. PropertiesAnimation
能够完全替代TweenAnimation,并且是真正的移动了控件的位置
使用Nineold开源项目,支持1.0以后所有版本
4. 开源项目
原理:一个项目,一个库(被调用的jar包),
5. ViewPager
类似于ListView
二. 项目问题:
1. 欢迎页面跳转主页面
2. 欢迎页面主题
3. 机器人下落动画
三. 项目技术点:
1. 判断当前版本号
if (Integer.parseInt(Build.VERSION.SDK) >=
Build.VERSION_CODES.HONEYCOMB) {
2. 如何在2.x版本实现Actionbar
构成:back按钮,图标,标题,子标题,菜单
好处:菜单可视化,增加了back按钮(取消back按键)
使用开源项目支持在Android2.x版本中实现Actionbar
开源项目:ActionbarSherlock
只需导入两个:
1) 库 : ActionBarSherlock-master/actionbarsherlock
2) Demo:ActionBarSherlock-master\actionbarsherlock-samples\demos
注意:项目和库必须导入,如果项目和库不在同一路径编译会出错
3. 使用ABS库实现Actionbar的步骤
1) Activity修改为继承SherlockActivity
2) 将onCreateOptionsMenu方法参数的Menu类型改为sherlock
3) 将getMenuInflater()修改为getSupportMenuInflater()
4) 获得Actionbar对象
5) 设置Actionbar属性
6) back按钮点击事件
7) 增加菜单项,注意设置顺序orderInCategory属性和
shouAsAction属性
8) 在2.x版本中会FC
you must Theme.Sherlock,Theme.Sherlock.Light
4. 侧滑菜单
早期是由第三方App实现,Path FaceBook
使用开源项目SlidingMenu-master
5. 导入SlidingMenuDemo注意事项
slidingmenu的库项目有错误,修改SlidingFragmentActivity
继承SherlockFragmentActivity
6. 使用SlidingMenu开源项目的步骤:
1) Activity继承SlidingFragmentActivity
onCreate()方法修改为public
onCreateOptionsMenu()参数改为sherlock
getMenuInflater()修改为getSupportMenuInflater()
2) 清单中设置主题为:Theme.sherlock.Light.DarkActionbar
3) 设置侧滑菜单的布局
4) 设置SlidingMenu属性(参照SlidingMenu的Demo BaseActivity类)
7. Fragment的作用和用法
应用场景: 当一个Activity的局部或整体需要频繁的被替换
需要使用Fragment。
8. 创建Fragment的方法
1) 新建一个类,继承supportV4包的Fragment
2) 重写onCreateView()方法,并关联布局
9. 在Activity中使用Fragment步骤:
1) 将Activity修改为继承FragmentActivity
2) 在布局中增加一个FrameLayout并设置id,
用来确定Fragment加入到布局中的位置和大小
3) 在onCreate()方法的setContentView之后新增代码:
10. 动态添加、删除和替换Fragment
1) 动态增加
2) 动态删除
3) 动态替换
常见问题:
1. 导入开源项目库是,控制台提示错误:
[2014-08-13 11:16:04 - EX10_使用ABS库实现Actionbar] Found 2 versions of android-support-v4.jar in the dependency list,
[2014-08-13 11:16:04 - EX10_使用ABS库实现Actionbar] but not all the versions are identical (check is based on SHA-1 only at this time).
[2014-08-13 11:16:04 - EX10_使用ABS库实现Actionbar] All versions of the libraries must be the same at this time.
[2014-08-13 11:16:04 - EX10_使用ABS库实现Actionbar] Versions found are:
[2014-08-13 11:16:04 - EX10_使用ABS库实现Actionbar] Path: F:\Users\longleg\workspaceHomeWork3\EX10_使用ABS库实现Actionbar\libs\android-support-v4.jar
[2014-08-13 11:16:04 - EX10_使用ABS库实现Actionbar] Length: 621451
[2014-08-13 11:16:04 - EX10_使用ABS库实现Actionbar] SHA-1: 5896b0a4e377ac4242eb2bc785220c1c4fc052f4
[2014-08-13 11:16:04 - EX10_使用ABS库实现Actionbar] Path: F:\Users\longleg\workspaceHomeWork3\lib_ABS\libs\android-support-v4.jar
[2014-08-13 11:16:04 - EX10_使用ABS库实现Actionbar] Length: 271754
[2014-08-13 11:16:04 - EX10_使用ABS库实现Actionbar] SHA-1: 53307dc2bd2b69fd5533458ee11885f55807de4b
[2014-08-13 11:16:04 - EX10_使用ABS库实现Actionbar] Jar mismatch! Fix your dependencies
问题原因:是由于android-supportV4包有多个版本,
不同版本之间的代码不同
解决方法:1) 使它们相同
2) 使库中的jar是最新版本,将项目中的supportV4删除
2. 代码中输入ActionBar actionBar = getActionBar();
Multiple markers at this line
- The value of the local variable actionBar is not used
- Call requires API level 11 (current min is 8):
android.app.Activity#getActionBar
3. 项目导入库设置后再查看属性,仍然提示错误
原因:
1) 项目和库不在同一个目录下
2) eclipse环境问题,重启eclipse即可
4. java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.ex_templete/com.example.ex_templete.MainActivity}: java.lang.IllegalStateException: Both setBehindContentView must be called in onCreate in addition to setContentView.