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代码:
说明:其实就是一个LinearLayout里面签到三个vertical布局的LinearLayout,其中前两个LinearLayout无特殊处理,背景设为透明。第三哥之中为horizontal布局着8哥TextView。期间的layout_weight调整一直不太明白 。
求助:我设想的最好是只有两个LinearLayout嵌套,里面的LinearLayout与外面的LinearLayout 下端对齐,可是一直没找到实现方法,特此求助大家,谢谢!
字符文件:string.xml代码:
注:其中的previous_page,next_page是参考他人代码是加入验证的,现在还没有作用。暂且留做以后开发之用吧。
风格文件:style.xml代码:
主程序代码:
程序运行效果图:
程序界面:
退出界面:
后记:第一次编写android应用代码,毫无头绪,查找资料,了解结构,这个应用花了一天半的时间,也算基本成型吧。
在此基础上下一步的改进:1、数字显示更美管一些,想使用android内置的时钟风格,或者调整闹钟那样的风格
2、可以换背景那个图片(女朋友提出的)
3、添加背景音乐(女朋友提出的)
4、界面做成3D效果的,这个难度怎么样啊?
5、逐步添加其他功能吧,也当学习之用。
也和她聊起过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、逐步添加其他功能吧,也当学习之用。
相关文章推荐
- Android 计时应用 之 爱相随 V0.25
- Android 计时应用 之 爱相随 V0.2
- Android应用优化_0.1版本
- Android应用开发之(通过ClipboardManager, ClipData进行复制粘贴)
- Android菜鸟开发之蓝牙(Bluetooth)---设置应用源码分析
- Android应用中使用AsyncHttpClient来异步网络数据
- android应用的loading加载动画制作
- Android之Intent的概念与应用
- Android 你应该知道的的应用冷启动过程分析和优化方案
- Android基础教程(七)之----单选项框RadioGroup的综合应用
- (转)Android QQ空间(Apad)项目总结(三)---应用UI框架的搭建!!!
- Android实现定位---GPS应用开发
- Android系统启动流程分析之启动应用 - ActivityManagerService
- android获取root命令,应用内输入命令
- Android中Message机制的灵活应用
- Android应用开发
- Android 从硬件到应用:一步一步向上爬 4 -- 使用 JNI 方法调硬件驱动
- Android中字符设备驱动和应用实例(二)——应用部分
- Android之读取 AndroidManifest.xml 中的数据:版本号、应用名称、自定义K-V数据(meta-data)
- 【Android Dev Guide - 02】 - Application Fundamentals 应用基础