青海学会网站建设公司牛商网是干啥的
- 作者: 五速梦信息网
- 时间: 2026年03月21日 09:55
当前位置: 首页 > news >正文
青海学会网站建设公司,牛商网是干啥的,天元建设集团有限公司鲁班奖,网站建设的合同模板本文所有代码都放在以下链接中#xff1a;https://github.com/MADMAX110/Stopwatch 0、应用是一个有活动、布局和其他资源组成的集合。其中一个活动是应用的主活动。每个应用都有一个主活动#xff0c;在文件AndroidManifest.xml中指定。 1、默认地#xff0c;每个应用都在…本文所有代码都放在以下链接中https://github.com/MADMAX110/Stopwatch 0、应用是一个有活动、布局和其他资源组成的集合。其中一个活动是应用的主活动。每个应用都有一个主活动在文件AndroidManifest.xml中指定。 1、默认地每个应用都在自己的进程中运行。这样有助于保证应用安全。 2、但是可以使用startActivity(intent)传入一个意图启动另一个应用中的活动。Android系统知道设备上已安装的所有应用和它们的活动可以使用意图启动适当的活动。 3、需要启动一个活动时Android会检查是否已经有一个进程在运行这个应用。如果存在这样一个进程Android就会在该进程中运行这个活动。如果不存在这样的进程Android将创建一个进程。 4、Android启动一个活动时回调用它的onCreate()方法。只要创建活动就会运行onCreate()。 下面通过来实现一个秒表应用分析一下底层活动是如何工作的应用通常会出什么问题以及如何使用活动生命周期方法修正这些问题。秒表应用包括一个活动和一个布局。布局中有一个文本视图显示已经过去了多少时间另外还会显示一个Start开始按钮来启动秒表一个Stop停止按钮停止秒表还有一个Reset重置按钮可以将计时器重置为0。 创建新Android工程应用名为Stopwatch选择最低的SDK如下图所示。 另外还需要一个名为StopwatchActivity的空活动和一个activity_stopwatch的布局。 工程目录如图所示 更新strings.xml,添加以下三行代码 string namestartStart/stringstring namestopStop/stringstring nameresetReset/string更新秒表布局代码 下面是布局的XML,这里描述了一个用来显示计时器的文本视图另外还有三个按钮。 activity_stopwatch.xml ?xml version1.0 encodingutf-8? LinearLayoutxmlns:androidhttp://schemas.android.com/apk/res/androidxmlns:toolshttp://schemas.android.com/toolsandroid:layout_widthmatch_parentandroid:layout_heightmatch_parentandroid:orientationverticalandroid:padding16dptools:context.StopwatchActivityTextViewandroid:idid/time_viewandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:layout_gravitycenter_horizontalandroid:textAppearanceandroid:style/TextAppearance.Largeandroid:textSize56sp/Buttonandroid:idid/start_buttonandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:layout_gravitycenter_horizontalandroid:layout_marginTop20dpandroid:onClickonClickStartandroid:textstring/start/Buttonandroid:idid/stop_buttonandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:layout_gravitycenter_horizontalandroid:layout_marginTop8dpandroid:onClickonClickStopandroid:textstring/stop/Buttonandroid:idid/reset_buttonandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:layout_gravitycenter_horizontalandroid:layout_marginTop8dpandroid:onClickonClickResetandroid:textstring/reset/ /LinearLayout单击Start按钮时会调用onCLickStop方法单击Reset按钮时会调用onClickReset方法单击Stop按钮时会调用onCLickStop方法。 我们还将使用一个名为runTimer()方法更新秒表。runTimer()方法每秒运行一次代码检查秒表是否还在运行如果确实还在运行则使秒数递增并在文本视图中显示秒数。 我们将使用两个私有变量记录秒表的状态。这里使用一个名为seconds的int变量跟踪秒表开始运行以来过去了多少秒另一个使用一个名为running的布尔变量记录秒表目前是否还在运行。 为此将StopwatchActivity.java的内容替换为以下代码 package com.hfad.stopwatch;import android.app.Activity; import android.os.Bundle; import android.view.View;public class StopwatchActivity extends Activity {private int seconds 0;//记录已经过去的秒数private boolean running;//秒表是否正常运行Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_stopwatch);}//启动秒表public void onClickStart(View view) {running true;}//停止秒表public void onClickStop(View view) {running false;}//单击reset按钮时会调用这个方法public void onClickReset(View view) {running false;seconds 0;} }创建runTimer方法runTimer方法要得到布局中文视图引用将seconds变量的内容格式化为小时分钟和秒然后在文本视图中显示。如果running变量设置为true能让seconds变量递增。 private void runTimer() {//得到文本视图final TextView timeView (TextView) findViewById(R.id.time_view);int hours seconds / 3600;int minutes (seconds%3600)/60;int secs seconds % 60;//设置显示格式String time String.format(Locale.getDefault(), %d:%02d%02d, hours, minutes, secs);//设置文本视图timeView.setText(time);if (running) {seconds;}}要让这个代码一直循环每秒递增seconds变量并更新文本视图。而且要以一种不阻塞Android主线程的方式来实现。在非Android的Java程序中可以使用后天线程完成类似这样的任务。不过在Android世界里只有Android主线程可以更新用户界面如果其他线程试图这样做就会得到一个异常。可以使用Handler来解决这个问题。 Handler消息处理器是一个Android类可以用来调度要在将来某个时间点运行的代码还可以用它来提交需要在其他线程非Android主线程中运行的代码在这里我们需要使用Handler调度秒表代码让它每秒运行一次。 使用Handler时可以把你想要调度的代码包装在一个Runnable对象中然后使用Handler post()和postDelayed()方法指定希望这个代码在什么时间运行。 post()方法提交的代码要尽可能快地运行通常几乎是立即运行post()方法有一个参数这是一个类型为Runnable的对象。Android世界里的Runable对象与普通Java中的Runnable很类似就是你想要运行的一个作业。可以把想要运行的代码放在Runable的run()方法Handler会确保这个代码尽可能快地运行。下面给出这个方法 final Handler handler new Handler() handler.post(Runable);postDelayed()方法与post()方法类似只不过这个方法用来提交要在将来运行地代码。下面给出这个方法。 final Handler handler new Handler(); handler.postDelayed(Runnable, long);下面给出完整的StopwatchActivity代码 package com.hfad.stopwatch;import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.TextView; import java.util.Locale; import android.os.Handler;public class StopwatchActivity extends Activity {private int seconds 0;//记录已经过去的秒数private boolean running;//秒表是否正常运行Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_stopwatch);runTimer();//使用单独的方法更新秒表。创建活动会调用这个方法}//启动秒表public void onClickStart(View view) {running true;}//停止秒表public void onClickStop(View view) {running false;}//单击reset按钮时会调用这个方法public void onClickReset(View view) {running false;seconds 0;}private void runTimer() {//得到文本视图final TextView timeView (TextView) findViewById(R.id.time_view);//创建一个新地Handlerfinal Handler handler new Handler();//调用post()方法传入一个新的Runnable。post()方法会立即运行代码handler.post(new Runnable() {public void run() {int hours seconds / 3600;int minutes (seconds%3600)/60;int secs seconds % 60;//设置显示格式String time String.format(Locale.getDefault(), %d:%02d%02d, hours, minutes, secs);//设置文本视图timeView.setText(time);if (running) {seconds;}//在1000ms后再次提交并运行Runnable中的代码会反复调用handler.postDelayed(this, 1000);}});} }至此一个基本秒表应用到此全部结束。 ps:不能直接在onCreate中写一个循环更新计时器onCreate必须在屏幕显示之前完成如果包含一个无线循环这个方法将无法结束。
- 上一篇: 青海微信网站建设常德seo快速排名
- 下一篇: 青建设厅官方网站九洲建设集团网站






