Android之记账本

Posted 冷的锋刃

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android之记账本相关的知识,希望对你有一定的参考价值。

这个ColaBox记事本是我从网上下载下来的拿来学习一下的(APK下载点这里。)

从登记收入与开支的页面跳转到账单页面运用了SQL数据库的录入,整体表的结构为:

db.execSQL("CREATE TABLE bills ("
                    + "_id INTEGER primary key autoincrement,"//ID
                    +" acctitemid integer,"//账目类型   
                    + "fee integer,"//费用
                    + "userid integer,"//使用者
                    + "sdate TEXT,"//日期
                    + "stime TEXT,"//时间
                    + "desc TEXT"    //  备注          
                    + ");");
android中的PID:顾名思义,它指的是Process的id。每个进程都有一个独立的id,可以通过pid来区分不同的进程。
在网上把进程PID常用的API搜了一下记录于此:
android.os.Process.myPid( )
得到当前进程的pid
android.os.Process.killProcess ( int pid )
杀死相应进程号的进程
List<ActivityManager.RunningProcessInfo> getRunningAppProcesses( )
获取当前正在运行的进程
android.app.ActivityManager.RunningAppProcessInfo.pid
相应的RunningAppProcessInfo的pid
List<ActivityManager.RunningServiceInfo> getRunningServices ( int maxNum )
得到当前正在运行的ServiceInfo
android.app.ActivityManager.RunningServiceInfo.pid
相应的RunningServiceInfo的pid
而UID是应用在在Android中数据共享中,不同的应用有不同的UID,在Android中要实现UID共享数据只需在程序a,b中的menifest配置即可:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="com.perseus.a"
      android:versionCode="1"
      android:versionName="1.0"
          android:sharedUserId="com.share"
>

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="com.perseus.b"
      android:versionCode="1"
      android:versionName="1.0"
          android:sharedUserId="com.share"
>
   db.execSQL("CREATE TABLE acctitem ("
                    + "_ID INTEGER PRIMARY KEY,"//ID
                    + "PID integer,"//PID
                    + "NAME TEXT"  // 姓名         
                    + ");");
账目表:
 db.execSQL("insert into acctitem values (1,null,\'收入\')");
          db.execSQL("insert into acctitem values (2,1,\'工资\')");
          db.execSQL("insert into acctitem values (9998,1,\'其他\')");
          db.execSQL("insert into acctitem values (0,null,\'支出\')");
          db.execSQL("insert into acctitem values (3,0,\'生活用品\')");
          db.execSQL("insert into acctitem values (4,0,\'水电煤气费\')");
          db.execSQL("insert into acctitem values (5,0,\'汽油费\')");
          db.execSQL("insert into acctitem values (9999,0,\'其他\')");
主类ColaBox:package com.cola.ui; 
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.KeyEvent;
import android.widget.ImageView;
import android.widget.TextView;
 
public class ColaBox extends Activity {
  //定义线程
    private Handler mHandler = new Handler();
    ImageView imageview;
    TextView textview;
    int alpha = 255;
    int b = 0;
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        imageview = (ImageView) this.findViewById(R.id.ImageView01);
        textview = (TextView) this.findViewById(R.id.TextView01);
 
        Log.v("ColaBox", "ColaBox start ...");
        imageview.setAlpha(alpha);
       //线程
        new Thread(new Runnable() {
            public void run() {
                initApp();
                 
                while (b < 2) {
                    try {
                        if (b == 0) {
                            Thread.sleep(1000);
                            b = 1;
                        } else {
                            Thread.sleep(50);
                        }
 
                        updateApp();
 
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
 
            }
        }).start();
        //通过Handler运行线程所传递的信息
        mHandler = new Handler() {
            @Override
            public void handleMessage(Message msg) {
                super.handleMessage(msg);
                imageview.setAlpha(alpha);
                imageview.invalidate();
 
 
            }
        };
 
    }//更新
    public void updateApp() {
        alpha -= 5;
 
        if (alpha <= 0) {
            b = 2;
            Intent in = new Intent(this, com.cola.ui.Frm_Addbills.class);
            startActivity(in);
            this.finish();
        }
 
        mHandler.sendMessage(mHandler.obtainMessage());
 
    }
     //初始化
    public void initApp(){
         BilldbHelper billdb=new BilldbHelper(this);
           billdb.FirstStart();          
           billdb.close();
            
            
    }
 
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        Log.v("cola", "keycode=" + keyCode);
        switch (keyCode) {
        case KeyEvent.KEYCODE_BACK:
            Log.v("ColaBox", "ColaBox end ...");
            return true;
             
        }
        return false;
    }
}

运行效果:

以上是关于Android之记账本的主要内容,如果未能解决你的问题,请参考以下文章

Android开发之记账本开发第六天

Android之记账本

android 软件(app)之家庭版记账本进度一

Android App开发实战之实现微信记账本(附源码 超详细必看)

家庭记账本app进度之ui相关概念控制ui界面与布局管理

家庭版记账本app之常用控件的使用方法