一. 项目模块
1. 新手引导使用控件 ViewPager的使用步骤
1) 在布局中添加ViewPager控件
技巧:在代码中输入ViewPager,联想,从import中拷贝完整包名类名
2) 设置适配器
2. 最后一个页面显示立即体验按钮
1) 在适配器的getItem方法中判断如果是最后一个页面,设置按钮显示
2) 在Fragment中新增方法setVisible(),保存是否显示,并在onCreate()方法中设置按钮是否显示
除当前页面外左右各缓存的页面数
4. 动画
FrameAnimation 帧动画 DrawableAnimation
TweenAnimation 补间动画 ViewAnimation
TweenAnimation的缺点:只是视图上的改变,控件的属性并没有真正改变
5. 属性动画PropertiesAnimation
兼容低版本(2.x)的动画包
6. 开源项目的原理(了解)
7. 导入开源项目注意事项
1) 选择Android->Existing
2) 一定要选择copy
技巧:设置语法着色功能
二. 主页面
1. Actionbar
差别:
1) 美观
2) 后退按钮
3) 菜单可视化
App CompatV7的作用:兼容2.1之后版本,可以使用Actionbar
2. 使用AppcomatV7实现Actionbar的步骤
1) 导入AppCompatV7库
D:\Android_Prog\android-sdk_r24.2\extras\android\support\v7
2) 项目引用android-support-v7-appcompat库,修改Activity继承
ActionBarActivity类
3) 修改主题,必须以Theme.AppCompat开头
4) 设置Actionbar属性
提示:使用24.2版本的eclipse不需要做前三步骤
3. 在Actionbar中添加菜单项
1) back按钮的事件
新版本Eclipse:
低版本Eclipse:
2) 添加菜单项
3) 菜单项点击事件
4. Fragment支持嵌套,使用片段管理器
5. Activity中不同的Fragment显示不同的菜单项实现步骤
基于:一个Activity,两个Fragment,Fragment中有不同菜单项
三. 侧滑布局
1. Drawerlayout控件的使用方法
View
|______ViewGroup(所有布局的基类)
|______LinearLayout
|______RelativeLayout
|______FrameLayout
|______TableLayout
|______AbsoluteLayout
|______TextView
|______EditText
|______Button
|______CompoundButton
|______Checkbox
|______RadioButton
|______ToggleButton
|______Switch
|______ImageView
|______ImageButton
|______Progressbar
|______Seekbar
|______Ratingbar
开源项目:
国内
常见问题
1.
原因:项目配置问题
解决:
2. 24.2版本Eclipse问题
3. 关联supportV4源代码
源代码路径:
D:\Android_Prog\android-sdk_r24.2\extras\android\support\v4\src
关联方法 :
在libs目录中新建一个文件,名称为: android-support-v4.jar.properties
打开文件,编辑内容为:
src=源代码路径
关闭项目,再打开,
4. Call requires API level 11 (current min is 8): android.app.Activity#getActionBar
5. 06-03 06:46:13.392: E/AndroidRuntime(7962): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.ex_templete/com.example.ex_templete.MainActivity}: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.
6. 工具环境
1) 路径中不要含有中文和空格
2) 两个版本不能同时使用
7. The method add(int, Fragment) in the type FragmentTransaction is not applicable for the arguments (int, BlankFragment)
一. 项目问题
1. 升级开发环境的配置
2. 新建项目编译报错
规避方法:先创建一个最低版本是4.0的项目,然后再创建最低版本是2.2的项目
3. 乱码问题
char
编码:25991 = 文
常见的编码格式:
UTF-8
GBK 简体中文
GB2312
GB18030
Big5 繁体
ISO 8859-1
常见问题场景:客户端与服务端的编码方式不同
如何解决:最好统一为utf-8
4. 导入supportv7库
1)
问题:编译版本默认不是5.x,
解决:修改编译版本为5.1.1,再clean
2)
error: Error retrieving parent for item: No resource found that matches the given name ‘Widget. AppCompat.ActionButton‘.
3) cardView
5. supportV7源代码
D:\Android_Prog\android-sdk_r24.2\extras\android\m2repository\com\android\support\appcompat-v7\22.1.1
6. 项目引用库时,提示编译报错
原因:项目和库中含有相同jar包的不同版本,
解决:将两个jar包改为一致
或者删除项目中的jar包
7. 判断ViewPager中的某个Fragment是否可见
二. 项目框架搭建
1. 侧滑布局 Drawerlayout控件的使用方法
参考SupportV7的ActionBarWithDrawerLayout, 拷贝布局
2. 整合主页结构
1) 实现ListView布局,行布局参考知乎App
2) ListView行点击事件,实现替换主页面的Fragment
3) 替换Fragment后关闭DrawerLayout
3. MaterialMenu
参考SupportV7Demo的ActionBarWithDrawerLayout.java
1) 拷贝代码和布局
2) 修改主页内容为FrameLayout
3) 菜单ListView点击事件修改为替换主页Fragment
三. 技术框架
1. Volley
功能: 异步HTTP下载
技巧
1) 判断当前系统版本
2) Eclipse本地历史记录
常见问题:
1. 如无必要,不要用成员变量
必要:一个方法需要访问另一个方法中的局部变量
如非必须,不要用静态变量
2. [2015-06-04 14:34:45 - Dex Loader] Unable to execute dex: Multiple dex files define Landroid/support/v7/appcompat/R$anim;
[2015-06-04 14:34:45 - Demo_MM_abc] Conversion to Dalvik format failed: Unable to execute dex: Multiple dex files define Landroid/support/v7/appcompat/R$anim;
3. 项目改为库,R中的常量变为变量
一. 技术框架
1. HTTP、异步、
创建json对应的类、
解析JSON、
异步下载图片、内存缓存、外存缓存
2. Volley依赖的技术点:Application
作用:1) 全局对象(类似于单实例)
2) 在Activity初始化之前被执行
应用场景:做库的初始化
Volley = AsyncTask + URL
3. Volley
功能: 异步HTTP下载
4. Volley使用步骤:
1) 在清单中增加 Internet权限
2) 依赖lib_volley库
3) 拷贝Demo中的App_VolleyExamples类, 并在清单中注册
同时拷贝MyVolley和BitmapLruCache
4) 从Demo的Act_SimpleRequest类中拷贝
5) 拷贝方法
5. 解决乱码
6. 解析JSON
1) 创建json字符文件
注意文件要修改为utf-8无bom格式
2) 根据json文件自动生成封装数据的JAVA类
jsonschema2pojo-0.4.8.zip
操作步骤:
2.1 解压缩到D盘根目录
2.2 cd /d D:\jsonschema2pojo-0.4.8进入本目录
2.3 jsonschema2pojo -T JSON -a NONE --omit-tostring --omit-hashcode-and-equals --target java-gen --annotation-style GSON --sourcejson.txt
注意:将 json.txt 替换为你的json文件名,并删除以下两行语法错误语句,并添加package
3) 拷贝gson.jar文件到项目的libs目录中 ,文件位置
4) 使用gson包的API解析Json字符串
7. 异步下载图片、内存缓存、外存缓存
AsyncTask + IO + HashMap
问题:1) 性能
2) 策略 LruCache
背景:Android App 16MB 24MB 32MB 48MB
原理流程图
背景:严格模式StrictMode
典型:在Main线程执行HTTP操作会FC
2.3新增,默认关闭,4.0默认开启
8. UIL库的使用步骤:
参考Demo中的ImageListActivity.java
1) 清单中添加Internet权限
2) 项目中拷贝lib_uil.jar到libs目录中
3) 从Demo中拷贝UILApplication到项目中,并在清单中配置
问题:编译错误,删除以下代码
4) 拷贝
5) 拷贝options对象的创建代码
常见问题:
2. The method init(Context) from the type MyVolley is not visible
3. 使用UIL