前言:
目前Android平台的开发一片红火,对于有Java开发经验的程序员来说,转行到Android平台并不是什么难事;所以,本系列的文章以口袋中国Android版项目实战为例子进行相关知识点的讲解,以带领更多的人进入Android开发的怀抱:)
准备工作:
1、要做Android安卓手机客户端当然首先是搭建Android开发环境。可以参考这个帖子:
Android开发环境搭建全程演示(jdk+eclip+android sdk)
2、要了解Android的一些基本概念,如Android开发的基本概念,应用程序的入口点,界面切换,事件响应等等,可以参看这个本书 Android应用开发详解
3、要想写自定义的Android个性化UI,提高用户体验,可以参看这个本书 从零开始android游戏编程pdf
编写代码:
一般软件启动首先是一个欢迎界面,也就是软件术语当中的闪屏。如本客户端的截图:
以下是欢迎页面闪屏的xml布局:
- <?xml version="1.0" encoding="UTF-8"?>
- <AbsoluteLayout
- android:background="@drawable/welcome"
- android:id="@+id/widget39"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- xmlns:android="http://schemas.android.com/apk/res/android"
- >
- <ProgressBar android:layout_width="160px"
- style="?android:attr/progressBarStyleHorizontal"
- android:progress="100"
- android:id="@+id/loading"
- android:layout_height="wrap_content"
- android:layout_x="64dip"
- android:layout_y="264dip">
- </ProgressBar>
- <TextView android:layout_width="wrap_content"
- android:id="@+id/tips"
- android:layout_height="wrap_content"
- android:gravity="center"
- android:text="please wait"
- android:layout_x="120dip"
- android:layout_y="228dip">
- </TextView>
- </AbsoluteLayout>
从上面的代码中可以看出:欢迎页面包含一个背景图、一个文本、一个进度条。
以下是利用上面的布局文件产生欢迎页面的代码:
- package com.pocketcn.ui;
- import android.app.Activity;
- import android.os.Bundle;
- import android.os.Handler;
- import android.widget.ProgressBar;
- import android.widget.TextView;
- import java.util.Timer;
- import java.util.TimerTask;
- import com.pocketcn.ui.R;
- public class splash extends Activity {
- /**
- *
- */
- static int idx=0;
- /**
- *
- */
- protected ProgressBar myProgressBar;
- /**
- *
- */
- protected TextView tips;
- protected Timer tr;
- private Handler process=new WelcomeProc(this);
- /** Called when the activity is first created. */
- @Override
- public void onCreate(Bundle icicle) {
- super.onCreate(icicle);
- setContentView(R.layout.splash);
- tips=(TextView)findViewById(R.id.tips);
- myProgressBar=(ProgressBar)findViewById(R.id.loading);
- //
- tr=new Timer();
- tr.schedule(new TimerTask(){
- @Override
- public void run() {
- splash.idx++;
- process.sendEmptyMessage(splash.idx);
- }
- }, 0,200);
- }
- }
在上面的代码中,myProgressBar是一个进度条控件,这个进度条控件需要根据当前数据处理的状况进行相应的界面更新,所以笔者这里使用一个Handler来进行通讯,以通知Activity进行相应控件的更新,代码如下:
- package com.pocketcn.ui;
- import android.app.Activity;
- import android.os.Handler;
- import android.os.Message;
- import com.pocketcn.ui.R;
- class WelcomeProc extends Handler {
- private static Activity res;
- public WelcomeProc(Activity aThis) {
- this.res = aThis;
- }
- @Override
- public void handleMessage(Message msg) {
- int prc = msg.what;
- if(prc > 0){
- ((splash)res).tips.setText("Tips: "+res.getString(R.string.welcometips1));
- }
- if(prc > 30){
- ((splash)res).tips.setText("Tips: "+res.getString(R.string.welcometips2));
- }
- if(prc > 60){
- ((splash)res).tips.setText("Tips: "+res.getString(R.string.welcometips3));
- }
- if (prc > 100) {
- /*启动主界面
- Intent intent = new Intent();
- intent.setClass(res, splash.class);
- res.startActivity(intent);*/
- if(((splash)res).tr!=null){
- ((splash)res).tr.cancel();
- }
- //改变布局
- ((splash)res).setContentView(R.layout.main);
- return;
- }
- ((splash)res).myProgressBar.setProgress(prc);
- }
- }
本系列文章源代码下载:
口袋中国Android安卓手机客户端1.0版开发全程记录之欢迎界面
http://www.pocketcn.com/forum-viewthread-tid-1490-fromuid-2.html
口袋中国Android客户端1.0版开发全程记录之二登录界面
http://www.pocketcn.com/forum-viewthread-tid-1585-fromuid-2.html
口袋中国Android客户端1.0版开发全程记录之三用户实体类
http://www.pocketcn.com/forum-viewthread-tid-1744-fromuid-2.html
口袋中国Android客户端1.0版开发全程记录之四登录功能
http://www.pocketcn.com/forum-viewthread-tid-1882-fromuid-2.html
口袋中国Android客户端1.0版开发全程记录之五论坛实体类
http://www.pocketcn.com/forum-viewthread-tid-1894-fromuid-2.html
口袋中国Android客户端1.0版开发全程记录之六注册页面
http://www.pocketcn.com/forum-viewthread-tid-1916-fromuid-2.html