前言:
目前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