启动界面的主要功能就是显示一幅启动图像,后台进行系统初始化.
如果是第一次使用本程序,需要初始化本程序的sqlite数据库,建库,建Table,初始化账目数据.
如果不是第一次使用,就进入登记收支记录界面.
界面效果如图:
界面很简单,一个imageview 和一个textview
可是如何是2个view 垂直居中显示,我开始使用linearlayout就没法完成垂直和横向居中.
后来使用RelativeLayout 才搞定了横向居中.
界面的具体xml如下:
main.xml
-
<?
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
关于如何另开一个线程更新界面的相关代码如下.
-
-
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
{
-
-
if
(b ==
0
) {
-
Thread.sleep(
2000
);
-
b =
1
;
-
}
else
{
-
Thread.sleep(
50
);
-
}
-
-
updateApp();
-
-
}
catch
(InterruptedException e) {
-
e.printStackTrace();
-
}
-
}
-
-
}
-
}).start();
-
-
-
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());
-
}
通过这段代码,我们能够理解android 里面如何对ui视图进行更新.
下篇文章我们来看看sqlite的使用.如何初始化程序.
关于handler,invalidate
的用法,
大家还可以参考这篇文章.http://www.blogjava.net/gooogle/archive/2008/03/05/184030.html
附ColaBox.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(){
-
-
}
-
}
分享到:
相关推荐
在IT领域,跨平台开发一直是开发者关注的焦点,而Delphi作为一款强大的RAD(快速应用程序开发)工具,以其高效的代码编写能力和丰富的组件库,使得开发者能轻松地构建Windows、macOS、iOS以及Android等多平台的应用...
本文结合开发实例,阐述了基于Android平台的个人理财软件的设计与实现过程,系统基于Android平台,采用Java语言开发,通过XML文档进行界面编程,并通过相应的Activity与后台Service实现指定功能,且实现了对数据的...
在Android应用开发中,创建一个个人理财工具是一个实用且具有挑战性的任务。本文将探讨如何在这样的工具中实现添加账单页面,这是一个关键功能,允许用户记录他们的收入和支出。在这一部分,我们将关注界面设计、...
本实例将探讨如何在Android中创建一个启动界面。 首先,我们需要明白启动界面的核心功能:提高用户体验。在应用程序启动初期,后台可能需要进行一些初始化工作,如数据库加载、网络连接等,此时显示启动界面可以...
### Android实例开发完全手册知识点概览 #### 第1章 正式开发前的准备 - **1.1 Windows下安装Java环境JDK** - **实例说明:** 本节介绍如何在Windows操作系统上安装Java Development Kit (JDK),这是进行Android...
在这个“Android应用小实例--炫酷计时器”中,我们将深入探讨如何在Android应用中创建并定制一个功能丰富的计时器。 计时器组件在Android SDK中是`android.widget.Chronometer`类,它类似于一个倒计时定时器,但...
Android实例源码-应用启动应用退出&网络判断类安卓源代码(12例) 3G和wifi的切换监听 android 在线更新示例代码 android程序的自动更新 和 基于GPS定位的轨迹存储 app更新,实现service下载 ViewPager+Fragment侧滑...
本项目“Android应用源码之程序启动界面Demo”旨在提供一个关于如何创建和优化Android启动界面的实例。 一、启动界面设计原则 1. 用户体验:启动界面应该简洁、快速,避免过长的等待时间,以免影响用户体验。 2. ...
Activity是Android应用的基本组件,代表用户界面的一个屏幕。Intent则用于启动或通信活动,如启动新的Activity或Service。通过实例源码,我们可以学习如何正确构建和传递Intent,以及处理Activity之间的跳转和数据...
总结,个人理财通(Android)是Android平台上的一款实用理财工具,它结合了Android系统的特性和财务管理的需求,提供了全面的个人财务解决方案。虽然缺乏官方文档,但对于用户来说,它的直观界面和实用功能足以满足...
此外,Android源码分享之时光日志个人日程管理是一个非常实用的实例源码,展示了如何使用Android系统的日历功能来实现个人日程管理。 在Android游戏开发中,OpenGL是一个非常重要的技术。通过分享的OpenGL的一个...
这个"android实例源代码-Android 个人记账程序源码.zip"压缩包提供了这样一个应用的完整源代码,对于想要深入理解Android应用开发或者希望构建类似应用的开发者来说,是一个宝贵的资源。 首先,我们要了解Android...
本实例将探讨如何在Android环境中实现一个登录界面及其实现的功能。首先,我们来看看核心知识点。 1. **Android布局设计**:登录界面通常包含用户名输入框(EditText)、密码输入框、登录按钮(Button)以及可能的...
Android串口开发(android-serialport-api开发)工程实例。SerialPortUtil里面有我常用的转换工具(16进制字符串转二进制字符串并补位、二进制字符串转16进制字符串并补位)
Android实例源码-音乐播放器类安卓源代码(9例) Android多线程断点续传下载+在线播放音乐 GL音乐播放器 基于SDL、FFmpeg的android播放器源码 简单实用的音乐播放器 简单音乐播放器,实现了播放器基本功能,使用...
本实例程序“Android Studio 实例程序”是针对初学者设计的一个简单应用,旨在帮助他们理解和掌握Android Studio的基础用法。 首先,我们需要了解Android Studio的基础配置。安装Android Studio后,开发者可以通过...
总结,"android-sdk-windows.rar"提供了一整套在Windows上开发Android应用所需的工具和资源。从安装配置到实际使用,每个环节都需要细致的操作和理解。通过学习和掌握Android SDK,开发者能够创建出功能丰富、用户...
本教程将深入探讨如何在Android中利用ListView来实现一个聊天记录的界面。 一、ListView的基本概念 ListView是Android SDK中的一个视图容器,它能够显示一列可滚动的项目列表。每个列表项可以由自定义的View或布局...
这个小实例将展示如何利用Android SDK和SQLite数据库来创建一个交互式的用户界面,以及如何实现“摇一摇”事件检测和数据存储与查询。 1. **Android SDK**:Android应用开发的基础是Android SDK,它提供了开发环境...