`
aijezdm915
  • 浏览: 400937 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Android app项目和开发总结

 
阅读更多

关键字 : android app, android develop, android summary

      2010.04 启动该项目到现在完成主要功能模块 , 分享一下开发历程和注意事项。  
     
开发环境 : ubuntu7.10 + eclipse 3.5 + sdk
     
下面是开发总结 

  1. 基于源码级的 SDK 以及 SDK 升级注意事项
    • 熟悉其如何做资源国际化
    • 熟悉 其如何支持不同屏幕大小 , 不同 density 介质
    • 熟悉 其主要的 API 以及支持的最低版本和不被再支持的 API
    • 了解其分层架构
    • 升级SDK
      • 确保该平台支持相关的 cglib 版本 ( 否则要升级 ubuntu)
      • 简单容行的方式是remove ~/.android下的相关东西,remove先前的相关版本,再升级
      • 部分Resources(如strings中有%s的)可能需要修改才能适应新的版本
      • 新的sdk里可能不包括老的如2.01版本
  2. Emulator & Mobile
  3. 系统配置项
    • SharedPreferences存储位置及如何在emulator上手动修改
      • 找到存储位置: \data\data\your package dir\shared_prefs\your xml files
      • 按照上面的pull/push the file
    • SQLite(sqlite3)
      • 默认存储位置:\data\data\your package dir\databases\your database name
      • 按照上面的用adb shell 操作emulator做部分database的设计和数据更新
      • 设计版本更新和升级
    • Other File I/O
      • assert下文件读取
      • 文件权限以及读写
    • 解读AndroidManifest.xml
      • application/process标识
      • 最开始启动的activity
      • activity栈的形式(指定taskAffinity&launchMode="singleTask"),而且转向一个新的activity是用intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT)的形式
      • 需要的权限部分
      • 支持的最低版本
  4. 基于 View,Context,Manager 的开发
    • 系统View & Layout(Layout也是View)
      • 用View本身来做其他Layout间的一个分隔
      • 常用的View&Layout: ListView,ScrollView,RelativeLayout,TableLayout
      • 设计常用的style/theme用到的Drawable: http://idunnolol.com/android/drawables.html
      • 常用的图片操作
        • 指定颜色的渲染(setColorFilter)
        • 剪裁
    • 自定义View & Layout
      • Java代码  收藏代码
        1. public class TouchListView extends ListView {  public TouchListView(Context context, AttributeSet attrs, int defStyle) {  
        2. } }   
      • Java代码  收藏代码
        1. public class Toolbar extends LinearLayout {  
        2.     public Toolbar(final Context context) {  
        3.         super(context);  
        4.     }  
        5.       
        6.     public Toolbar(final Context con, AttributeSet attrs) {  
        7.   }  
        8.   
        9. }  
         
    • Application,Activity,Service,View,Intent
      • Application,Activity,Service与Context的关系
      • View与Context的关系
      • 用Application来做Activity,Service,View间的全局变量(这比自己用Singleton实现好)
      • 用工厂模式使用Intent
        • 做activity跳转
        • sendBroadcast(实时数据交换可借助Thread+  BroadcastReceiver )
    • WindowManager 、PackageManager 等的使用
  5. 网络 IO
    •  java.net
    • android.net
    • org.apache.http
      • 如果没有让他在AsyncTask中操作,则他的TimeOut设置必须少于5秒(为ANR等待时间)
      • java.net.UnknownHostException
  6. 绘图部分
    • 在View上绘图
      • 只在原来View上加边框等
        • Java代码  收藏代码
          1. @Override  
          2.     protected void dispatchDraw(Canvas canvas) {}  
           
      • 自定义View
        • Java代码  收藏代码
          1. @Override  
          2.     protected void onDraw(Canvas canvas) {  
           
    • 在Bitmap上绘图
      • Java代码  收藏代码
        1. Bitmap result = Bitmap.createBitmap(48,48, Config.ARGB_8888);    
        2.          Canvas canvas =  new   Canvas(result);    
        3. ...  
        4. canvas.drawBitmap(result, rect, rect, paint);  
         
  7. 动画
    • 帧动画
      • 控制侦速率在25FPS以让其更流畅
    •  渐变动画
      • 平移
      • 缩放
      • 旋转
      • 透明
  8. ANR
    •  构建消息以及消息循环处理Handler
    • 使用AsyncTask
  9. Exception & UncaughtException
    •  使用UncaughtExceptionHandler
  10. 引入第三方 jar 以及与其他 app 共享数据
    •  通过add user library方式添加第三方jar
    • Content Provider的使用 
  11. 性能优化 / 调优  

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics