package net.baisoft.stopwatch;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import android.app.Activity;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends Activity implements Runnable {
/**
* 当前所经过的时间
*/
private long time = 0;
/**
* 开始时间
*/
private long startTime;
private Handler handler;
/**
* 用于显示时间
*/
private TextView timeView;
/**
* 用于列表显示分记时间
*/
private ListView listView;
/**
* 开始按钮
*/
private Button startButton;
/**
* 暂停按钮
*/
private Button pauseButton;
/**
* 分记按钮
*/
private Button markButton;
/**
* 重置按钮
*/
private Button resetButton;
/**
* 分记时间数据
*/
private List<Long> marks;
/**
* 秒表的当前状态
* 分为正在运行、暂停、停止三种状态
*/
private int state = 0;
private static int STATE_RUNNING = 1;
private static int STATE_STOP = 0;
private static int STATE_PAUSE = 2;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//读取环境信息(偏好 )
readEnvironment();
Toast.makeText(this, "环境已读取", Toast.LENGTH_LONG).show();
//开始按钮
startButton = (Button)findViewById(R.id.start);
startButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
onStartClick(view);
}
});
//暂停按钮
pauseButton = (Button)findViewById(R.id.pause);
pauseButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
onPauseClick(view);
}
});
//分记按钮
markButton = (Button) findViewById(R.id.mark);
markButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
onMarkClick(view);
}
});
//重置按钮
resetButton = (Button) findViewById(R.id.reset);
resetButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
onResetClick(view);
}
});
timeView = (TextView) findViewById(R.id.timeView);
listView = (ListView) findViewById(R.id.ListView01);
//创建 handler
handler = new Handler();
// 设置各按钮
setButtons();
//设置时间显示
if (state == STATE_STOP){
timeView.setText("Let's Run!");
} else if(state == STATE_PAUSE){
timeView.setText(getFormatTime(time));
}
//显示列表
refreshMarkList();
}
/**
* 根据状态设置按钮显示于不显示
*/
private void setButtons() {
switch (state) {
case 1://如果正在运行
startButton.setVisibility(View.GONE);
pauseButton.setVisibility(View.VISIBLE);
markButton.setVisibility(View.VISIBLE);
resetButton.setVisibility(View.GONE);
resetButton.setEnabled(false);
break;
case 2://如果暂停中
startButton.setVisibility(View.VISIBLE);
pauseButton.setVisibility(View.GONE);
markButton.setVisibility(View.GONE);
resetButton.setVisibility(View.VISIBLE);
resetButton.setEnabled(true);
break;
case 0://如果停止中
startButton.setVisibility(View.VISIBLE);
pauseButton.setVisibility(View.GONE);
markButton.setVisibility(View.GONE);
resetButton.setVisibility(View.VISIBLE);
resetButton.setEnabled(false);
break;
default:
break;
}
}
/**
* 读取环境
*/
@SuppressWarnings("unchecked")
private void readEnvironment() {
SharedPreferences sharedPreferences = getSharedPreferences("environment", MODE_PRIVATE);
state = sharedPreferences.getInt("state", STATE_STOP);
startTime = sharedPreferences.getLong("startTime", 0);
time = sharedPreferences.getLong("time", 0);
marks = new ArrayList<Long>();
SharedPreferences sharedPreferencesMarks = getSharedPreferences("marks", MODE_PRIVATE);
Map<String, Long> mapMarks = (Map<String, Long>) sharedPreferencesMarks.getAll();
for (int i = 0; i < mapMarks.size(); i++){
Long mark = mapMarks.get("" + i);
marks.add(mark);
}
}
/**
* 保存环境
*/
private void saveEnvironment() {
SharedPreferences sharedPreferences = getSharedPreferences("environment", MODE_PRIVATE);
Editor editor = sharedPreferences.edit();
editor.putInt("state", state);
editor.putLong("time", time);
editor.putLong("startTime", startTime);
editor.commit();
//保存分记数据
SharedPreferences sharedPreferencesMarks = getSharedPreferences("marks", MODE_PRIVATE);
Editor editorMarks = sharedPreferencesMarks.edit();
editorMarks.clear();
for(Long mark : marks){
editorMarks.putLong("" + marks.indexOf(mark), mark.longValue());
}
editorMarks.commit();
}
@Override
protected void onPause() {
super.onPause();
if (state == STATE_RUNNING){//如果正在运行
handler.removeCallbacks(this);
}
}
@Override
protected void onDestroy() {
super.onDestroy();
//保存环境
saveEnvironment();
Toast.makeText(this, "当前环境已保存", Toast.LENGTH_LONG).show();
}
@Override
protected void onResume() {
super.onResume();
if (state == STATE_RUNNING){//如果正在运行
handler.post(this);
}
}
/**
* 点击重置
* @param view
*/
protected void onResetClick(View view) {
//设置状态为停止
state = STATE_STOP;
//不再刷新
if (state == STATE_RUNNING){//如果正在运行
handler.removeCallbacks(this);
}
//初始化分记数组
marks = new ArrayList<Long>();
refreshMarkList();
//设置时间显示
time = 0;
timeView.setText(getFormatTime(time));
// 设置各按钮
setButtons();
}
/**
* 点击暂停
* @param view
*/
protected void onPauseClick(View view) {
//不再刷新
if (state == STATE_RUNNING){//如果正在运行
handler.removeCallbacks(this);
}
//设置状态为暂停
state = STATE_PAUSE;
// 设置各按钮
setButtons();
}
/**
* 点击开始
* @param view
*/
protected void onStartClick(View view) {
startTime = new Date().getTime() - time;
handler.post(this);
//初始化分记数组
marks = new ArrayList<Long>();
//设置状态为正在运行
state = STATE_RUNNING;
// 设置各按钮
setButtons();
}
/**
* 点击分记
*
* @param view
*/
protected void onMarkClick(View view) {
if(time == 0){
return;
}
// 添加分记数据, 最近的加在最前面
marks.add(0, time);
//刷新列表
refreshMarkList();
}
/**
* 刷新列表
*/
private void refreshMarkList() {
//显示
List<Map<String, Object>> data = new ArrayList<Map<String,Object>>();
int no = marks.size();//序号
for(long mark : marks){
Map<String, Object> map = new HashMap<String, Object>();
map.put("mark", getFormatTime(mark));
map.put("no", this.getString(R.string.mark) + no);
no--;
data.add(map);
}
String[] from = new String[]{"no","mark"};
int[] to = new int[]{R.id.no, R.id.time};
SimpleAdapter simpleAdapter = new SimpleAdapter(this, data, R.layout.item, from, to);
listView.setAdapter(simpleAdapter);
}
@Override
public void run() {
handler.postDelayed(this, 50);
time = new Date().getTime() - startTime;
timeView.setText(getFormatTime(time));
}
/**
* 得到一个格式化的时间
*
* @param time
* 时间 毫秒
* @return 分:秒:毫秒
*/
private String getFormatTime(long time) {
long millisecond = time % 1000;
long
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
Android i-jetty开源项目.zip项目安卓应用源码下载Android i-jetty开源项目.zip项目安卓应用源码下载 1.适合学生毕业设计研究参考 2.适合个人学习研究参考 3.适合公司开发项目技术参考
资源推荐
资源详情
资源评论
收起资源包目录
Android i-jetty开源项目.zip (41个子文件)
Android i-jetty开源项目
Android i-jetty开源项目
1-120914112U00-L.jpg 28KB
Android i-jetty开源项目
bin
classes.dex 10KB
net
baisoft
stopwatch
MainActivity.class 8KB
MainActivity$3.class 823B
MainActivity$2.class 824B
MainActivity$1.class 824B
R$layout.class 431B
R$id.class 598B
R$drawable.class 522B
R$attr.class 349B
R.class 552B
MainActivity$4.class 824B
R$string.class 551B
resources.ap_ 145KB
stopwatch.apk 152KB
res
drawable-ldpi
bar_bg.png 3KB
bg.png 62KB
icon.png 5KB
start.png 3KB
mark.png 4KB
logo.png 8KB
drawable-hdpi
bar_bg.png 3KB
bg.png 62KB
icon.png 4KB
start.png 3KB
mark.png 4KB
values
strings.xml 316B
drawable-mdpi
bar_bg.png 3KB
bg.png 62KB
icon.png 3KB
start.png 3KB
mark.png 4KB
layout
item.xml 595B
main.xml 2KB
assets
default.properties 362B
gen
net
baisoft
stopwatch
R.java 2KB
proguard.cfg 1KB
src
net
baisoft
stopwatch
MainActivity.java 8KB
.project 845B
.classpath 280B
AndroidManifest.xml 830B
共 41 条
- 1
资源评论
yxkfw
- 粉丝: 76
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功