我们先用AndroidStudio新建一个项目,选择空白模板,然后像其中拖入两个Button,将他们的id分别命名为btDate(显示日期),btTime(显示时间),他的模板XML代码很简单

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. xmlns:tools="http://schemas.android.com/tools"
  4. android:layout_width="match_parent"
  5. android:layout_height="match_parent"
  6. android:paddingBottom="@dimen/activity_vertical_margin"
  7. android:paddingLeft="@dimen/activity_horizontal_margin"
  8. android:paddingRight="@dimen/activity_horizontal_margin"
  9. android:paddingTop="@dimen/activity_vertical_margin"
  10. tools:context="com.neil.ad01.MainActivity">
  11.  
  12. <Button
  13. android:layout_width="wrap_content"
  14. android:layout_height="wrap_content"
  15. android:text="显示当前日期"
  16. android:id="@+id/btDate"
  17. android:layout_alignParentLeft="true"
  18. android:layout_alignParentStart="true"
  19. android:layout_alignParentTop="true" />
  20.  
  21. <Button
  22. android:layout_width="wrap_content"
  23. android:layout_height="wrap_content"
  24. android:text="显示当前时间"
  25. android:id="@+id/btTime"
  26. android:layout_below="@+id/btDate"
  27. android:layout_alignParentLeft="true"
  28. android:layout_alignParentStart="true" />
  29. </RelativeLayout>

如图所示

一个标准的Android应用程序窗口类需要继承android.app.Activity类,至少实现onCreate方法来初始化这个窗口。接下来实现方法

  1. package com.neil.ad01;
  2.  
  3. import android.app.Activity;
  4. import android.app.AlertDialog;
  5. import android.content.Intent;
  6. import android.os.Bundle;
  7. import android.view.View;
  8. import android.widget.Button;
  9.  
  10. import java.text.SimpleDateFormat;
  11. import java.util.Date;
  12.  
  13. public class MainActivity extends Activity implements View.OnClickListener
  14. {
  15.  
  16. private void showDialog(String title,String msg)
  17. {
  18. AlertDialog.Builder builder=new AlertDialog.Builder(this);
  19. //设置对话框的图标
  20. builder.setIcon(android.R.drawable.ic_dialog_info);
  21. //设置对话框的标题
  22. builder.setTitle(title);
  23. //设置对话框的信息
  24. builder.setMessage(msg);
  25. //设置对话框的按钮
  26. builder.setPositiveButton("确定",null);
  27. //显示对话框
  28. builder.create().show();
  29.  
  30. Intent intent;
  31. }
  32. //初始化窗口
  33. @Override
  34. protected void onCreate(Bundle savedInstanceState) {
  35. super.onCreate(savedInstanceState);
  36. //装载了View(刚才编写的XML文件)
  37. setContentView(R.layout.activity_main);
  38. //获得两个按钮对象的实例
  39. Button btDate=(Button)findViewById(R.id.btDate);
  40. Button btTime=(Button)findViewById(R.id.btTime);
  41. //为两个按钮添加单击事件的监听(实现了OnClickListener接口的对象)
  42. btDate.setOnClickListener(this);
  43. btTime.setOnClickListener(this);
  44. }
  45.  
  46. //两个按钮共用一个单击事件,通过按钮的id区分单击了哪个按钮
  47. @Override
  48. public void onClick(View v) {
  49. switch (v.getId())
  50. {
  51. case R.id.btDate: {
  52. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  53. //显示当前日期
  54. showDialog("当前日期", sdf.format(new Date()));
  55. break;
  56. }
  57. case R.id.btTime: {
  58. SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
  59. //显示当前日期
  60. showDialog("当前时间", sdf.format(new Date()));
  61. break;
  62. }
  63. }
  64. }
  65. }

注:1,AlertDialog可用于显示对话框

  2,如果多个控件共用一个事件方法,必须在布局文件中指定控件标签的android:id属性,并且每个控件的id属性不能相同

  3.res(resource)目录中的每一个资源文件都会在gen目录下的R类中生成一个int类型的变量,用于标识当前资源文件。所以在onCreate方法中可以通过R.layout.activity_main引用activity_main.xml文件,这说明已经在R类的layout子类中生成了一个叫activity_main的静态int类型的变量,layout类的代码的代码如下

  4,如果使用单击事件,必须实现OnClickListener接口,该接口的onClick方法就是单击事件回调方法

Android应用程序中任何窗口类都必须在AndroidManifest.xml文件中定义,否则无法使用。在定义MainActivity类时<activity>标签的android:label属性使用了字符串资源。用于定义Android应用程序相关信息的<application>标签的andrdoid:label属性值也使用了字符串资源

AndroidManifest.xml代码如下

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"
  3. package="com.neil.ad01">
  4.  
  5. <application
  6. android:allowBackup="true"
  7. android:icon="@mipmap/ic_launcher"
  8. android:label="@string/app_name"
  9. android:supportsRtl="true"
  10. android:theme="@style/AppTheme">
  11. <activity android:name=".MainActivity"
  12. android:label="@string/title_activity_main">
  13. <intent-filter>
  14. <action android:name="android.intent.action.MAIN" />
  15.  
  16. <category android:name="android.intent.category.LAUNCHER" />
  17. </intent-filter>
  18. </activity>
  19. </application>
  20.  
  21. </manifest>

其中还可以在string.xml中改变android:label的值,string.xml内容如下

  1. <resources>
  2. <string name="app_name">显示日期时间</string>
  3. <string name="title_activity_main">显示日期时间</string>
  4. </resources>

至此,代码部分全部写完。

  然后点击运行按钮,在模拟器中生成app,如图

AndroidStudio自带的模拟器说要关闭windows系统中的Hyper-v虚拟机,还要HMAX intel加速器,装Genymotion也运行不了,装国内模拟器干脆AndroidStudio就识别不出来的,真是晕+_+,还好QT给力,以后还可以用QT基于C++开发android,VS现在也实现了VC++开发Android,现在各种平台之间的交互真的是越来越给力了。期待更大的突破!!!

这个android的教程也是针对新手的,因为本人也是新手,哈哈

(Android学习系列)一,用按钮实现时间的显示的更多相关文章

  1. Android学习系列(37)--App调试内存泄露之Context篇(下)

    接着<Android学习系列(36)--App调试内存泄露之Context篇(上)>继续分析. 5. AsyncTask对象 我N年前去盛大面过一次试,当时面试官极力推荐我使用AsyncT ...

  2. Android学习系列(23)--App主界面实现

    在上篇文章<Android学习系列(22)--App主界面比较>中我们浅略的分析了几个主界面布局,选了一个最大众化的经典布局.今天我们就这个经典布局,用代码具体的实现它. 1.预览图先看下 ...

  3. Android学习系列(18)--App工程结构搭建

     本文算是一篇漫谈,谈一谈关于Android开发中工程初始化的时候如何在初期我们就能搭建一个好的架构.      关于android架构,因为手机的限制,目前我觉得也确实没什么大谈特谈的,但是从开发的 ...

  4. Android学习系列(7)--App轮询服务器消息

    这篇文章是android开发人员的必备知识. 1.轮询服务器     一般的应用,定时通知消息可以采用轮询的方法从服务器拿取消息,当然实时消息通知的话,建议采用推送服务.    其中需要注意轮询的频率 ...

  5. Android学习系列(15)--App列表之游标ListView(索引ListView)

    游标ListView,提供索引标签,使用户能够快速定位列表项.      也可以叫索引ListView,有的人称也为Tweaked ListView,可能更形象些吧.      一看图啥都懂了: 1. ...

  6. [置顶] Android学习系列-Android中解析xml(7)

    Android学习系列-Android中解析xml(7) 一,概述 1,一个是DOM,它是生成一个树,有了树以后你搜索.查找都可以做. 2,另一种是基于流的,就是解析器从头到尾解析一遍xml文件.   ...

  7. [置顶] Android学习系列-把文件保存到SD卡上面(6)

    Android学习系列-把文件保存到SD卡上面(5) 一般多媒体文件,大文件需要保存到SD卡中.关键点如下: 1,SD卡保存目录:mnt/sdcard,一般采用Environment.getExter ...

  8. Android学习系列(17)--App列表之圆角ListView(续)

    http://www.cnblogs.com/qianxudetianxia/archive/2011/09/19/2068760.html   本来这篇文章想并到上篇Android学习系列(16)- ...

  9. Android学习系列(11)--App列表之拖拽ListView(下)

    接着上篇Android学习系列(10)--App列表之拖拽ListView(上)我们继续实现ListView的拖拽效果. 7.重写onTouchEvent()方法.     在这个方法中我们主要是处理 ...

  10. Android学习系列(10)--App列表之拖拽ListView(上)

     研究了很久的拖拽ListView的实现,受益良多,特此与尔共飨.      鉴于这部分内容网上的资料少而简陋,而具体的实现过程或许对大家才有帮助,为了详尽而不失真,我们一步一步分析,分成两篇文章. ...

随机推荐

  1. Memcached 实例

    建立Manager类 package com.alisoft.sme.memcached; import java.util.Date; import com.danga.MemCached.MemC ...

  2. Uvalive 4865 Data Recovery 最大流

    题意就是 给一个50 * 50的矩阵 然后给出每行每列元素的和 和一个初始矩阵 矩阵中有些是未知,有些是已知 然后我们求目标矩阵就是把能确定的元素的值求出来,实在不能确定的就置为-1 所有矩阵元素的值 ...

  3. POJ1463 Strategic game (最小点覆盖 or 树dp)

    题目链接:http://poj.org/problem?id=1463 给你一棵树形图,问最少多少个点覆盖所有的边. 可以用树形dp做,任选一点,自底向上回溯更新. dp[i][0] 表示不选i点 覆 ...

  4. iis配置好后,解决打开服务器要输入用户名和密码的问题

    [转]IIS网站访问需要输入用户名和密码 xp系统下安装IIS5,并设置好网站路径,但是访问网站时需要输入用户名和密码,这个问题极大可能是因为你网站放置在一个文件系统为NTFS的盘符上,而IIS默认的 ...

  5. hdoj 5391 Zball in Tina Town

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5391 相关数论结论: 威尔逊定理——当且仅当p为素数时:( p -1 )! ≡ p-1 ( mod p ...

  6. urlrewritingnet 域名http状态302 问题(转)

    UrlRewritingNet is an Url rewriting tool for ASP .Net and Elmahis a module for logging unhandled err ...

  7. InnoDB存储引擎

    [InnoDB和MyISAM区别][ http://jeck2046.blog.51cto.com/184478/90499] InnoDB和MyISAM是许多人在使用MySQL时最常用的两个表类型, ...

  8. CloudStack服务引擎配置(cloud-engine-service模块)

    "?> <!--CloudStack服务引擎配置--> <beans xmlns="http://www.springframework.org/schem ...

  9. 不需要JAVAScript完成分页查询功能

    分页查询之前已经说过,现在用另一种方法实现,换汤不换药.但是更简单. view层代码: 控制层代码: 业务逻辑层,主要看一下方法count1()的代码: count1()方法的功能就是控制翻页,如果传 ...

  10. canvas绘制直线和多边形基本操作

    <!DOCTYPE HTML> <html lang="en"> <body> <canvas id="canvas" ...