您的位置:首页 > 移动开发 > Android开发

Android 计时应用 之 爱相随 V0.1

2011-12-15 10:26 169 查看
女朋友一直钟情于Android手机,前段时间不幸丢了陪伴多年的手机,便买了中兴U880。

也和她聊起过Android手机应用,认为手机应用最大的功能就是:显示,当时也便许诺送她一款自己开发的Android手机应用。

怎乃本人毫无Java基础,没接触过Android开发,既然答应了就从最简单的开始吧。

想起从我2011年4月28日表白到今天也有200多天了,便萌发了编写这个最简单的,记录我们相爱时间的Android计时应用:爱相随(Love Plus)

注:Ubuntu 11.04 下安装Android开发环境破费周折,主要就是再使用eclipse安装ADT插件是总提示缺少wst。最终换用了HELIOS版本的eclipse才顺利通过。

开发环境:Ubuntu 11.04 、 eclipse HELIOS、Android 2.2

程序结构:



布局文件:time.xml代码:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/love"
android:orientation="vertical" >

<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_weight="200">
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_weight="1">
<TextView
android:id="@+id/myLove"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/MyTextLove"
android:text="@string/love"/>
</LinearLayout>

<LinearLayout
android:layout_width="fill_parent"
android:layout_height="32dip"
android:orientation="horizontal"
android:layout_weight="1">

<TextView
android:id="@+id/Days"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="3"
style="@style/MyText"/>
<TextView
android:id="@+id/DaysChinese"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="4"
style="@style/MyTextChinese"
android:text="@string/days"/>
<TextView
android:id="@+id/Hours"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="4"
style="@style/MyText"/>
<TextView
android:id="@+id/HoursChinese"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="4"
style="@style/MyTextChinese"
android:text="@string/hours"/>
<TextView
android:id="@+id/Minutes"
android:layout_weight="4"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
style="@style/MyText"/>
<TextView
android:id="@+id/MinutesChinese"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="4"
style="@style/MyTextChinese"
android:text="@string/minutes"/>
<TextView
android:id="@+id/Seconds"
android:layout_weight="4"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
style="@style/MyText"/>
<TextView
android:id="@+id/SecondsChinese"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="4"
style="@style/MyTextChinese"
android:text="@string/seconds"/>
</LinearLayout>
</LinearLayout>


说明:其实就是一个LinearLayout里面签到三个vertical布局的LinearLayout,其中前两个LinearLayout无特殊处理,背景设为透明。第三哥之中为horizontal布局着8哥TextView。期间的layout_weight调整一直不太明白 。

求助:我设想的最好是只有两个LinearLayout嵌套,里面的LinearLayout与外面的LinearLayout 下端对齐,可是一直没找到实现方法,特此求助大家,谢谢!

字符文件:string.xml代码:

<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="hello">Hello World, YTLFEActivity!</string>
<string name="app_name">Love Plus</string>
<string name="previous_page">上一页</string>
<string name="next_page">下一页</string>
<string name="love">We have fall in love with each other for:</string>
<string name="days">天</string>
<string name="hours">时</string>
<string name="minutes">分</string>
<string name="seconds">秒</string>
<string name="prompt">宝贝,我爱你</string>
<string name="quit_msg">记得常来看看啊...</string>
<string name="confirm">我也爱你</string>
<string name="cancel">我还想再看一会</string>
</resources>


注:其中的previous_page,next_page是参考他人代码是加入验证的,现在还没有作用。暂且留做以后开发之用吧。

风格文件:style.xml代码:

<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="MyText" parent="@android:style/TextAppearance">
<item name="android:textColor">#F2F2F2</item>
<item name="android:textSize">16sp</item>
<item name="android:typeface">serif</item>
<item name="android:gravity">right</item>
<item name="android:background">#606060</item>

</style>
<style name="MyTextChinese" parent="@android:style/TextAppearance">
<item name="android:textColor">#F2F2F2</item>
<item name="android:textSize">16sp</item>
<item name="android:typeface">serif</item>
<item name="android:gravity">center</item>
<item name="android:background">#606060</item>
</style>
<style name="MyTextLove" parent="@android:style/TextAppearance">
<item name="android:textColor">#A2A2A2</item>
<item name="android:textSize">11sp</item>
<item name="android:typeface">serif</item>
<item name="android:gravity">left</item>
<item name="android:background">@android:color/transparent</item>
</style>
</resources>


主程序代码:

package com.yunantong.love;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.KeyEvent;
import android.widget.TextView;

public class YTLFEActivity extends Activity {
/** Called when the activity is first created. */
private static final int msgKey1 = 1;
private TextView mDays;
private TextView mHours;
private TextView mMinutes;
private TextView mSeconds;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.time);
mDays = (TextView) findViewById(R.id.Days);
mHours = (TextView) findViewById(R.id.Hours);
mMinutes = (TextView) findViewById(R.id.Minutes);
mSeconds = (TextView) findViewById(R.id.Seconds);
new TimeThread().start();
}
public class TimeThread extends Thread{
@Override
public void run(){
do{
try{
Thread.sleep(1000);
Message msg = new Message();
msg.what = msgKey1;
mHandler.sendMessage(msg);
}
catch (InterruptedException e){
e.printStackTrace();
}
}while(true);
}
}
private Handler mHandler = new Handler(){
@Override
public void handleMessage (Message msg){
super.handleMessage(msg);
switch (msg.what){
case msgKey1:
long sysTime = System.currentTimeMillis();
long sysTimeDays;
long sysTimeHours;
long sysTimeMinutes;
long sysTimeSeconds;
sysTime = (sysTime/1000)-1303968640;
sysTimeDays = sysTime/86400;
sysTimeHours = (sysTime%86400)/3600;
sysTimeMinutes = ((sysTime%86400)%3600)/60;
sysTimeSeconds = ((sysTime%86400)%3600)%60;
String strDays = String.valueOf(sysTimeDays);
String strHours = String.valueOf(sysTimeHours);
String strMinutes = String.valueOf(sysTimeMinutes);
String strSeconds = String.valueOf(sysTimeSeconds);
mDays.setText(strDays);
if(sysTimeHours < 10)
mHours.setText("0"+strHours);
else
mHours.setText(strHours);
if(sysTimeMinutes < 10)
mMinutes.setText("0"+strMinutes);
else
mMinutes.setText(strMinutes);
if(sysTimeSeconds < 10)
mSeconds.setText("0"+strSeconds);
else
mSeconds.setText(strSeconds);
break;

default:
break;
}

}
};
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
new AlertDialog.Builder(this)
// .setIcon(R.drawable.services)
.setTitle(R.string.prompt)
.setMessage(R.string.quit_msg)
.setNegativeButton(R.string.cancel,
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,
int which) {
}
})
.setPositiveButton(R.string.confirm,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int whichButton) {
finish();
}
}).show();
return true;
} else {
return super.onKeyDown(keyCode, event);
}
}
//彻底退出程序
@Override
protected void onDestroy() {
super.onDestroy();
System.exit(0);
// 或者下面这种方式
// android.os.Process.killProcess(android.os.Process.myPid());
}
}


程序运行效果图:

程序界面:



退出界面:



后记:第一次编写android应用代码,毫无头绪,查找资料,了解结构,这个应用花了一天半的时间,也算基本成型吧。

在此基础上下一步的改进:1、数字显示更美管一些,想使用android内置的时钟风格,或者调整闹钟那样的风格

            2、可以换背景那个图片(女朋友提出的)

            3、添加背景音乐(女朋友提出的)

            4、界面做成3D效果的,这个难度怎么样啊?

            5、逐步添加其他功能吧,也当学习之用。

            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: