Android 个人理财工具一:项目概述与启动界面的实现

从本文开始为大家制作一个Android个人理财工具,并把整个开发过程记录下来,与大家分享。

  项目总体介绍

此Android个人理财工具的主要功能是,可以录入日常生活中的各类收入和支出明细,并且可以在每月底能够统计每月各类情况。给出收支关系饼图,月份之间的柱状图等报告。

下图是程序的流程图:

程序可能涉及到的技术:

1、多个视图的切换,参数的传递,intent的使用。

2、Grid 明细的体现。

3、sqlite数据的操作。

4、自绘view 来表现统计图。

先写这些。

       启动界面的实现

启动界面的主要功能就是显示一幅启动图像,后台进行系统初始化。

如果是第一次使用本程序,需要初始化本程序的sqlite数据库,建库,建Table,初始化账目数据。

如果不是第一次使用,就进入登记收支记录界面。

界面效果如图:

界面很简单,一个imageview 和一个textview。

可是如何使2个view 垂直居中显示?我开始使用Linearlayout就没法完成垂直和横向居中,后来使用RelativeLayout 才搞定了横向居中。

界面的具体xml如下:

main.xml

XML/HTML代码

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout android:id="@+id/RelativeLayout01" xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_gravity="center_vertical|center_horizontal"
android:layout_height="wrap_content"
android:layout_width="wrap_content">
<ImageView android:id="@+id/ImageView01"
android:src="@drawable/logo3"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
</ImageView>
<TextView android:id="@+id/TextView01"
android:text="@string/welcome"
android:layout_below="@id/ImageView01"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
</TextView>
</RelativeLayout>

在这儿我来使用一个小技巧,就是在程序初始化完成后,让图片淡出,然后显示下一个界面。

开始我准备使用一个timer来更新图片的alpha值,后来程序抛出异常Only the original thread that created a view hierarchy can touch its views.

这才发现android 的ui 控件是线程安全的。

这里需要我们在主线程外,再开一个线程更新界面上的图片。可以使用imageview.invalidate。

关于如何另开一个线程更新界面的相关代码如下:

Java代码

//给主线程发送消息更新imageview
mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
imageview.setAlpha(alpha);
imageview.invalidate();
}
};
new Thread(new Runnable() {
public void run() {
while (b < 2) {
try {
//延时2秒后,每50毫秒更新一次imageview
if (b == 0) {
Thread.sleep(2000);
b = 1;
} else {
Thread.sleep(50);
}
updateApp();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}).start();
public void updateApp() {
alpha -= 5;//每次减少alpha 5
if (alpha <= 0) {
b = 2;
Intent in = new Intent(this, com.cola.ui.Frm_Addbills.class);
startActivity(in);//启动下个界面
}
mHandler.sendMessage(mHandler.obtainMessage());
}

通过这段代码,我们能够理解android 里面如何对ui视图进行更新。

下篇文章我们来看看sqlite的使用。如何初始化程序。

附ColaBox.java:

Java代码

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(2000);
  b = 1;
  } else {
  Thread.sleep(50);
  }
  updateApp();
  } catch (InterruptedException e) {
  e.printStackTrace();
  }
 }
 }
 }).start();
 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);
 }
 mHandler.sendMessage(mHandler.obtainMessage());
 } 

 public void initApp(){ 

 }
}

系列文章:

Android 个人理财工具六:显示账单明细 下

Android 个人理财工具五:显示账单明细 上

Android 个人理财工具四:添加账单页面 下

Android 个人理财工具三:添加账单页面 上

Android 个人理财工具二:使用SQLite实现启动时初始化数据

Android 个人理财工具一:项目概述与启动界面的实现

以上就是开发简单的Android 应用的流程,后续继续补充,谢谢大家的支持!

(0)

相关推荐

  • 详解Android中App的启动界面Splash的编写方法

    一.Splash界面的作用 用来展现产品的Logo 应用程序初始化的操作 检查应用程序的版本 检查当前应用程序是否合法注册 二.界面的xml定义 写一个布局背景设置为产品的logo图片,再添加一个textview显示版本号. <TextView android:id="@+id/tv_splash_version" android:layout_width="wrap_content" android:layout_height="wrap_cont

  • Android开发基础之创建启动界面Splash Screen的方法

    本文实例讲述了Android开发基础之创建启动界面Splash Screen的方法.分享给大家供大家参考.具体如下: 启动界面Splash Screen在应用程序是很常用的,往往在启动界面中显示产品Logo.公司Logo或者开发者信息,如果应用程序启动时间比较长,那么启动界面就是一个很好的东西,可以让用户耐心等待这段枯燥的时间. Android 应用程序创建一个启动界面Splash Screen非常简单.比如创建一个工程MySample,主Acitity就叫MySample,创建另一个Activ

  • android开机自启动原理与实现案例(附源码)

    原理: Android系统通过应用程序自行在系统中登记注册事件(即Intent)来响应系统产生的各类消息. Android系统为应用程序管理功能提供了大量的API,通过配置Intent和permission来实现各种功能. 开机自启动是通过 <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED"/> <category android:name="an

  • android开发教程之开机启动服务service示例

    个例子实现的功能是:1,安装程序后看的一个Activity程序界面,里面有个按钮,点击按钮就会启动一个Service服务,此时在设置程序管理里面会看的有个Activity和一个Service服务运行2,如果手机关机重启,会触发你的程序里面的Service服务,当然,手机启动后是看不到你的程序界面.好比手机里面自带的闹钟功能,手机重启看不到闹钟设置界面只是启动服务,时间到了,闹钟就好响铃提醒. 程序代码是: 首先要有一个用于开机启动的Activity,给你们的按钮设置OnClickListener

  • Android笔记之:App应用之启动界面SplashActivity的使用

    当前比较成熟一点的应用基本上都会在进入应用之显示一个启动界面.这个启动界面或简单,或复杂,或简陋,或华丽,用意不同,风格也不同.下面来观摩几个流行的应用的启动界面. 1. 货比三家以腾讯qq,新浪weibo,UC浏览器,游戏神庙逃亡等7个应用为例,比比看:(我认为最精美的界面应该是qq2012,虽然只有一张图,基本的应用名称,版本,图标这些信息都有,但是看着舒服,觉得美.) 2. 元素启动界面的本意是以友好用户界面来掩饰后台缓冲加载,让用户用平和等待的心情进入正常应用界面.但是因为启动界面是放在

  • Android简单实现启动画面的方法

    本文实例讲述了Android简单实现启动画面的方法.分享给大家供大家参考,具体如下: 核心代码: package com.demo.app; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.os.Handler; public class SplashActivity extends Activity { private final int S

  • Android启动画面的实现方法

    本文实例讲述了Android启动画面的实现方法.分享给大家供大家参考.具体分析如下: 在应用程序中经常用到启动画面,会启动一个后台线程为主程序的运行准备资源. Android要实现启动画面可以这样做: 这是splash.xml布局文件的代码: 复制代码 代码如下: <LinearLayout   xmlns:android="http://schemas.android.com/apk/res/android"   android:layout_height="fill

  • Android显式启动与隐式启动Activity的区别介绍

    前段时间立志坚持写博客,但是发现自己的积累的确不多,于是假期泡了泡图书馆,读了一些很有价值的文章.收获颇多,今天的文章分享为主,共同学习. 为什么要写显式启动与隐式启动Activity.这源于自己的一次面试,被Baidu工程师问道,但是后来觉得自己回答的不好,废话少说,进入正题. 如题,Android的Acitivity启动大致有两种方式:显式启动与隐式启动.下面分别介绍: A:显式启动 对于初学者来说,这个最常见,下面用代码来解释什么是显式启动. 复制代码 代码如下: Intent inten

  • Android编程实现启动界面的方法分析

    本文实例讲述了Android编程实现启动界面的方法.分享给大家供大家参考,具体如下: 最近在弄一个程序启动界面程序,在这里贴下代码.解释一下:后面Intent(qidong.this,"写想要跳转的Activity"); 效果图: 然后建立一个名字为qidon. Activity: import Android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.os

  • Android开机自启动服务的实现方法

    android实现开机自启动可能是移动操作系统中最简单的了,我们只需要监听一个开机启动的Broadcast(广播)即可.首先写一个Receiver(即广播监听器),继承BroadcastReceiver,如下所示: view source print? 复制代码 代码如下: public class BootReceiver extends BroadcastReceiver { private PendingIntent mAlarmSender; @Override public void

  • Android编程之简单启动画面实现方法

    本文实例讲述了Android简单启动画面实现方法.分享给大家供大家参考,具体如下: 每个Android应用程序启动之后都会出现一个Splash启动界面,显示产品LOGO.公司LOGO或者开发者信息.如果应用程序启动时间比较长,那么启动界面就是一个很好的东西,可以让用户耐心等待这段枯燥的时间,提高用户体验. 1. splash.xml布局文件 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android&q

  • Android仿新浪微博启动界面或登陆界面(1)

    本文为大家分享了Android模仿新浪微博启动界面&登陆界面的具体实现代码,供大家参考,具体内容如下 启动界面 主要有两个功能: 1.加载启动动画 2.判断网络,有者直接进入登陆界面,否则去设置网络 代码较简单,主要采用AlphaAnimation()方法和动画监听器,使一张图片产生渐变动画.在动画启动的时候判断网络,动画结束时完成判断并进入登陆界面. /** * Created by D&LL on 2016/5/25. * 初始页面加载界面 */ public class Splash

  • Android中实现开机自动启动服务(service)实例

    最近在将 HevSocks5Client 移植到 Android 上了,在经过增加 signalfd 和 timerfd 相关的系统调用支持后,就可以直接使用 NDK 编译出 executable 了.直接的 native exectuable 在 Android 系统总还是不太方便用哦.还是做成一个 apk 吧,暂定只写一个 service 并开机自动启用,无 activity 的. Java 中调用 native 程序我选择使用 JNI 方式,直接在 JNI_OnLoad 方法中调用 pth

随机推荐