利用Android中的三大主件来实现一个码表
Android中的四大组件大家都知道吧!
Activity、Service、Broadcast Receiver、Content Provider
所以我们这里会用到前三大组件:
//这是service类
package cn.zuxia.andorid.app;
import android.app.Service;
import android.content.Intent;
import android.os.Handler;
import android.os.IBinder;
import android.os.Message;
import android.widget.Toast;
public class MyService extends Service {
private static String values;
private static boolean flag=true;
//定义四个整型变量,用来存储时分秒毫秒等
private int mHour = 0, mMinute = 0, mSecond = 0, mMs = 0;
@Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
//这里我们是返回一个空。当然,如果我们要绑定服务,可以在这里发返回一个服务
return null;
}
@Override
public void onCreate() {
super.onCreate();
}
/**
* 重写的start方法,用来执行一系列操作
*/
@Override
public void onStart(Intent intent, int startId) {
super.onStart(intent, startId);
//得到传入的值
values = intent.getStringExtra("values");
//如果传入的是start,也就是开始计时按钮,就进入
if ("start".equals(values)) {
flag=true;
}
//如果传入的值是pause,也就是暂停,那么在这里面将要执行暂停操作
else if("pause".equals(values)){
flag=false;
}else if ("continue".equals(values)) {
flag=true;
}
//启用一个线程,用来刷新时间
new Thread(new Runnable() {
@Override
public void run() {
//暂停时就进入这个循环,循环条件是根据传入的值,也就是按下的按钮进行处理的
while (!flag) {
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//启用一个while循环
while (flag) {
try {
//休眠10毫秒,然后刷新
Thread.sleep(10);
mMs++;
//获取一个message实例,传入数据
Message message = mHandler.obtainMessage();
//定义一个messageId
message.what = 1;
//发送信息
mHandler.sendMessage(message);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}).start();
}
Handler mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
if (1 == msg.what) {
//定义四个String,主要用于修饰界面美观,也就是说用来填充显示是的空位,之后在if语句中赋值
String value1 = "", value2 = "", value3 = "", value4 = "";
//应用一系列的if判断,用来操作时分秒的计算与赋值
if (mMs >= 99) {
mMs = 0;
mSecond++;
}
if (mSecond > 59) {
mSecond = 0;
mMinute++;
}
if (mMinute > 59) {
mMinute = 0;
mHour++;
}
//如果都是一位数,那么就在其前面加一个0,填充
if (mMs < 10) {
value1 = "0";
}
if (mSecond < 10) {
value2 = "0";
}
if (mMinute < 10) {
value3 = "0";
}
if (mHour < 10) {
value4 = "0";
}
//打印显示数据
android_stop_watchActivity.mTextView.setText("第一个码表:" + value4
+ mHour + ":" + value3 + mMinute + ":" + value2
+ mSecond + ":" + value1 + mMs);
}
}
};
}
//这是activity类
package cn.zuxia.andorid.app;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class android_stop_watchActivity extends Activity {
//声明两个button控件
private Button buttonStart,buttonPause;
//声明一个TextView控件,用于显示码表信息
public static TextView mTextView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//获取TextView实例
mTextView=(TextView) findViewById(R.id.displayFirstInfo);
buttonStart=(Button) findViewById(R.id.startBtn);
buttonPause=(Button) findViewById(R.id.pauseBtn);
}
/**
* 实现单击按钮监听事件方法
* @param v
*/
public void onAction(View v){
//创建Intent对象
Intent intent=new Intent();
if (v.getId() == R.id.startBtn) {
startService(intent,"start");
buttonStart.setEnabled(false);
} else if (v.getId() == R.id.pauseBtn) {
String text=buttonPause.getText().toString();
if ("暂停".equals(text)) {
startService(intent,"pause");
buttonPause.setText("继续");
}else{
startService(intent,"continue");
buttonPause.setText("暂停");
}
} else if (v.getId() == R.id.stopBtn) {
stopService(intent);
buttonStart.setEnabled(true);
}
}
/**
* 创建一个启动服务方法
*/
private void startService(Intent intent,String values){
intent.setClass(android_stop_watchActivity.this, MyService.class);
intent.putExtra("values", values);
startService(intent);
}
}
//这是布局文件
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/displayText"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"
android:gravity="center" />
<Button
android:id="@+id/startBtn"
android:layout_width="100dip"
android:layout_height="wrap_content"
android:layout_below="@id/displayText"
android:layout_margin="4dip"
android:onClick="onAction"
android:text="开始"
/>
<Button
android:id="@+id/pauseBtn"
android:layout_width="100dip"
android:layout_height="wrap_content"
android:layout_below="@id/displayText"
android:layout_toRightOf="@id/startBtn"
android:layout_margin="4dip"
android:onClick="onAction"
android:text="暂停"
/>
<Button
android:id="@+id/stopBtn"
android:layout_width="100dip"
android:layout_height="wrap_content"
android:layout_below="@id/displayText"
android:layout_toRightOf="@id/pauseBtn"
android:layout_margin="4dip"
android:onClick="onAction"
android:text="停止"
/>
<TextView
android:id="@+id/displayFirstInfo"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@id/pauseBtn"
android:text="第一个码表:00:00:00:00"
android:gravity="center"
/>
</RelativeLayout>
转载于:https://www.cnblogs.com/Catherine-Brain/p/3475506.html
利用Android中的三大主件来实现一个码表相关推荐
- Android中的基础控件TextView、Button、ImageView、EditText、ProgressBar
文章目录 1 Android中的基础控件 1.1 控件的通用属性 2 TextView 2.1 TextView的继承关系 2.2 TextView的常用属性 3 EditText 3.1 常用属性 ...
- Android中进度条控件使用
android中进度条控件使用 ProgressBar pb = findViewById(R.id.pb);pb.setMax(100);pb.setProgress(33); 转载于:https: ...
- 从零开始学android:Android中的基本控件(上)
从零开始学android:Android中的基本控件(上) 本章内容较多,下面只贴代码,大家只需要贴到自己eclipse里就知道作用^^! View组件简介 Android中的View组件包含了几乎所 ...
- Android中如何使控件保持固定宽高比
目录 1.自定义view 2.adjustViewBounds 3.百分比布局 4.ConstraintLayout 我们在android开发过程中可能会遇到一种情况,一个组件需要保持固定的宽高比,但 ...
- android 怎么固定控件,Android中如何使控件保持固定宽高比
我们在android开发过程中可能会遇到一种情况,一个组件需要保持固定的宽高比,但是组件本身大小却不定.尤其在android屏幕碎片化的情况下,很多时候我们需要让一个组件宽度与屏幕宽度一致,这样就无法 ...
- android中翻页控件,Android GridView控件分页自定义
上一篇:Android GridView控件自定义中,我们自定义了Android GridView控件. 包名解释: com.yaomei.activity.adapter DEMO使用到的自定义 ...
- android 中的组合控件的设计
在开发应用程序的时候,很多时候会使用到几个重复的控件,例如Android手机的设置界面里面的位置服务里面的每一栏都是组合控件,也就是说多个控件组成一个整体,如下图所示: 红色方框里面的是由两个Text ...
- android中的 listview控件,聊聊Android中的ListView控件
软硬件环境 Macbook Pro MGX 72 Android Studio 1.3.2 坚果手机 前言 ListView是Android系统中使用非常广泛的一种控件,几乎所有的App都会用到它.它 ...
- android 中使用TabHost控件实现微信界面的底部菜单效果
首先,在布局文件中的代码如下:(菜单位于底部,需要在代码中设置) <TabHostandroid:id="@android:id/tabhost"android:layout ...
最新文章
- 【DBMS 数据库管理系统】OLTP 联机事务处理 与 OLAP 联机分析处理 ( 数据仓库 与 OLAP | OLAP 联机分析处理 | OLTP 与 OLAP 区别 )
- ubuntu oracle 10g 安装,Ubuntu 12.04 安装Oracle 10g 全过程(完美)及问题解决办法
- php 浮点型float 强转int php金额计算 php元转分
- python中正则表达式是什么意思_python – 正则表达式中[^.] *的含义是什么?
- python中列表实现去重使用_Python实现嵌套列表去重方法示例
- lintcode-517-丑数
- Python中for循环之range、enumerate函数
- 深度 | 人工智能究竟能否实现?
- 红米K40稳定版12.5.3.0 刷面具 magisk一键ROOT教程 附工具
- 星巴克 销售数据分析_星巴克大数据科学家纳米级推广战略顶峰项目
- sample函数—R语言
- 【圆方树】CodeForces487E Tourists
- Log4j整合阿里云日志服务
- redis-cli使用说明
- 连续仨月霸占牛客榜首!京东T8呕心巨作:700页JVM虚拟机实战手册
- linux实验实训报告,linux实验实训报告.doc
- 原理剖析(第 012 篇)Netty之无锁队列MpscUnboundedArrayQueue原理分析
- “加密上海·喜玛拉雅Web3.0数字艺术大展”落幕,AIGC和数字艺术衍生品是最大赢家?...
- excel 置信区间 计算_如何用excel计算95%的置信区间?
- scViewerX Crack,处理各种文件格式
热门文章
- C++ bitset的用法
- s4-2 ALOHA 协议
- java错误页面显示错误信息_Struts2在JSP页面中显示错误信息和提示信息的方法
- mysql之case_mysql存储过程之case语句
- pytorch安装换源ubuntu_ubuntu 安装pytorch问题
- 1776: Press the switch(思维题)
- 1600: 卡斯丁狗要吃糖葫芦-回文串
- 商越加入阿里云原生合作伙伴计划,共创智慧采购新生态
- 《Java开发手册》解读:大整数传输为何禁用Long类型?
- 揭秘MySQL生态重要功能,X-Engine引擎核心能力——OnlineDDL