学习源码《随手记》知识总结

来源:互联网 发布:python小游戏代码 编辑:程序博客网 时间:2024/05/20 14:40

1:这个APP,主要是一个记录每天收入与支出账目的应用

2:应用到的知识点

    1:Android SQLlite 数据库相关知识

          如果应用中需要多了表,可以统一定义一个类,将各个表的相关信息一起写出来

          主要代码:     
public class MyDbInfo {
    
    private static String TableNames[] = {
        "TBL_EXPENDITURE_CATEGORY",
        "TBL_EXPENDITURE_SUB_CATEGORY",
        "TBL_INCOME_CATEGORY",
        "TBL_INCOME_SUB_CATEGORY",
        "TBL_ACCOUNT_TYPE",
        "TBL_ACCOUNT_SUB_TYPE",
        "TBL_ACCOUNT",
        "TBL_STORE",
        "TBL_ITEM",
        "TBL_EXPENDITURE",
        "TBL_INCOME",
        "TBL_TRANSFER"
    };//表名
    
    private static String FieldNames[][] = {
            {"ID","NAME","BUDGET"},
            {"ID","NAME","PARENT_CATEGORY_ID"},
            {"ID","NAME"},
            {"ID","NAME","PARENT_CATEGORY_ID"},
            {"ID","NAME","POSTIVE"},
            {"ID","NAME","PARENT_TYPE_ID"},
            {"ID","NAME","TYPE_ID","SUB_TYPE_ID","ACCOUNT_BALANCE"},
            {"ID","NAME"},
            {"ID","NAME"},
            {"ID", "AMOUNT", "EXPENDITURE_CATEGORY_ID", "EXPENDITURE_SUB_CATEGORY_ID", "ACCOUNT_ID", "STORE_ID", "ITEM_ID", "DATE", "MEMO"},
            {"ID", "AMOUNT", "INCOME_CATEGORY_ID", "INCOME_SUB_CATEGORY_ID", "ACCOUNT_ID", "ITEM_ID", "DATE", "MEMO"},
            {"ID", "AMOUNT", "ACCOUNT_ID", "ITEM_ID", "DATE", "MEMO"}
            
            
    };//字段名    
    private static String FieldTypes[][] = {
            {"INTEGER PRIMARY KEY AUTOINCREMENT","text","DOUBLE"},
            {"INTEGER PRIMARY KEY AUTOINCREMENT","TEXT","INTEGER"},
            {"INTEGER PRIMARY KEY AUTOINCREMENT","TEXT"},
            {"INTEGER PRIMARY KEY AUTOINCREMENT","TEXT","INTEGER"},
            {"INTEGER PRIMARY KEY AUTOINCREMENT","TEXT","INTEGER","DOUBLE"},
            {"INTEGER PRIMARY KEY AUTOINCREMENT","TEXT","INTEGER"},
            {"INTEGER PRIMARY KEY AUTOINCREMENT","TEXT","INTEGER","INTEGER","DOUBLE"},
            {"INTEGER PRIMARY KEY AUTOINCREMENT","TEXT"},
            {"INTEGER PRIMARY KEY AUTOINCREMENT","TEXT"},
            {"INTEGER PRIMARY KEY AUTOINCREMENT","DOUBLE","INTEGER","INTEGER","INTEGER","INTEGER","INTEGER","TEXT","TEXT"},
            {"INTEGER PRIMARY KEY AUTOINCREMENT","DOUBLE","INTEGER","INTEGER","INTEGER","INTEGER","TEXT","TEXT"},
            {"INTEGER PRIMARY KEY AUTOINCREMENT","DOUBLE","INTEGER","INTEGER","TEXT","TEXT"}
    };//字段类型
    
    public MyDbInfo() {
        // TODO Auto-generated constructor stub
    }
    
    public static String[] getTableNames() {
        return TableNames;
    }
    
    public static String[][] getFieldNames() {
        return FieldNames;
    }
    
    public static String[][] getFieldTypes() {
        return FieldTypes;
    }

(java 二维数组,扩展 n维数组。。。)

DBHelper中

        @Override
              public void onCreate(SQLiteDatabase db)
              {
                  if (TableNames == null)
                  {
                      message = NO_CREATE_TABLES;
                      return;
                  }
                  for (int i = 0; i < TableNames.length; i++)
                  {
                      String sql = "CREATE TABLE " + TableNames[i] + " (";
                      for (int j = 0; j < FieldNames[i].length; j++)
                      {
                          sql += FieldNames[i][j] + " " + FieldTypes[i][j] + ",";
                      }
                      sql = sql.substring(0, sql.length() - 1);
                      sql += ")";
                      db.execSQL(sql);
                  }
              }

        

     2:xml 布局,主要是FrameLayout的使用以及style的使用

         如果多个控件或者viewgroup 具有相同的属性 那么可以将这些属性统一写成一个style  一方面避免多次书写 另一方面使代码简洁了,如果某一控件具有一个独特的属性,那么可以定义一个style 继承统一的style 并书写其独特的属性

     统一的style

       <style name="common_row_layout">
        <item name="android:background">@drawable/common_row_layout</item>
        <item name="android:focusable">true</item>
        <item name="android:clickable">true</item>
        <item name="android:layout_width">wrap_content</item>
        <item name="android:layout_height">50.0dip</item>
    </style>

   独特的属性

  <style name="common_row_layout_top" parent="@style/common_row_layout">
        <item name="android:background">@drawable/common_row_layout_top</item>
    </style>

(java 父类与子类的关系 -->继承)

    3:计算当天处于那个周,主要是Calendar的使用

    4:通过Thread更新UI  作出动态的效果


原创粉丝点击