目录(?)[-]

  1. Chronometer计时器控件
  2. 倒计时CountDownTimer
  3. Switch控件
  4. Space控件
  5. 其他控件

Android提供了很多控件,基本上都是view的扩展。

Chronometer:计时器控件

Chronometer是一个计时器,提供开始计时,停止计时和复位等功能,它的实现很简单。小例子XML文件如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout ….. > 
    <Chronometer android:id="@+id/ui_meter" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content"  /> 
    <LinearLayout ……  android:orientation="horizontal">
        <Button …… android:onClick="onMeterStart"/> 
        <Button …… android:onClick="onMeterStop" /> 
        <Button …… android:onClick="onMeterReset" /> 
    </LinearLayout> 
</LinearLayout>

小例子的代码如下:

public class UiChronometerTest extends Activity{ 
    private Chronometer chrono; 
    protected void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.ui_chronometer);
        chrono = (Chronometer)findViewById(R.id.ui_meter); 
        chrono.setFormat("计时器:%s");  //缺省情况,计时器显示为MM:SS,如果超过1小时则显示H:MM:SS。如果我们需要增加一些文字,可以用setFormat,或者在XML文件中用android:format来设置。setFormat中第一个%s是计时器,也就是MM:SS/H:MM:SS。在本例中,我们在前面加上“计时器:”几个字样。
    /*  // 系统会根据tick来触发计时器时间的变化, tick是系统计时,触发计时器变化,在此我们每个tick到了,我们加一行log,在模拟器中,间隔时间略大于1秒。一般来讲,我们无需特别处理,计时器会自动进行计时。
        chrono.setOnChronometerTickListener(new OnChronometerTickListener() {
            private int count = 0; 
            @Override 
            public void onChronometerTick(Chronometer meter) { 
                Log.d("wei","-- " + (count ++));                  
            } 
        });*/ 
    } 
  //按Start button触发函数 
   public void onMeterStart(View v){ 
        chrono.setBase(SystemClock.elapsedRealtime());  //setBase是设置基准时间,计时器=当前时间-基准时间,本例将按Start的时间设置为基准时间,即计时器从0秒开始计数。
        chrono.start();  //开始计数
    }  
   //按Stop Button 
   public void onMeterStop(View v){ 
        chrono.stop(); //停止计数
    }  
   //按Reset Button 
   public void onMeterReset(View v){ 
        chrono.setBase(SystemClock.elapsedRealtime());  //计时器reset,我们只要将基准时间设为当前时间,计数器就可以归零。 
    } 
}

倒计时:CountDownTimer

CountDownTimer是android.os提供的一个类,它不是View,但是我们可以利用它实现与计时器相似的功能,实现一个20秒倒计时的小例子,XML如下:

     <TextView android:id="@+id/countDownText"
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" /> 
    <LinearLayout ......  android:orientation="horizontal">
        <Button ……  android:onClick="onCountDownStart" /> 
        <Button ……  android:onClick="onCountDownStop" /> 
    </LinearLayout>

程序代码如下

private CountDownTimer countdownTimer = null; 
private TextView tv = null; 
private static final String pre = "20秒倒计时:"; 
protected void onCreate(Bundle savedInstanceState){ 
   … …  
    tv = (TextView)findViewById(R.id.countDownText);
    tv.setText(pre); 
   countdownTimer = new CountDownTimer(20000,100){ //构造函数的第一个参数long millisInFuture,本例为20秒,即20000毫秒,第二个参数long countDownInterval,间隔时间,本例以100ms为间隔。
        public void onFinish()
 { //计时结束 
            tv.setText(pre + "0"); 
        } 
      //如果在模拟器运行,Tick时间间隔为1秒,即便我们设置100ms,仍会按最小间隔1秒来运行。每当tick到了,我们刷新显示时间
        public void onTick(long millisUntilFinished) {  
            float remainTime = millisUntilFinished/1000; 
            tv.setText(String.format("%s%.1f", pre,remainTime)); 
        }          
    }; 
}

public void onCountDownStart(View v){ 
    countdownTimer.start();  //开始倒计时
    tv.setText(pre+"20"); 
}

public void onCountDownStop(View v){ 
    countdownTimer.cancel();  //取消倒计时
}

Switch控件

Switch控件是Android 4.0新加入的控件。只有两个状态,和ToggleButton类似,如图所示,下面是小例子的XML文件。

<Switch android:id="@+id/ui_switch" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:textOn="On" 
    android:textOff="Off"/>

代码如下:

Switch sw = (Switch) findViewById(R.id.ui_switch); 
sw.setChecked(true); //缺省是false 
//设置状态改变的回调函数 
sw.setOnCheckedChangeListener(new OnCheckedChangeListener() {   
    @Override 
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
        Log.d("Wei","set to " + (isChecked ? "On" : "Off"));
    } 
});

Space控件

Space控件是在Android 4.0中加入,是个空白的view,用于进行分隔。我们在组件中加入一下XML代码,布局上下隔出20dip的空隙。

<Space android:layout_width="wrap_content" 
        android:layout_height="20dip" />

其他控件

ScollView可参考Android学习笔记(十):Activity-TableLayout和ScrollView

ProgressBar、SeekBar可参考Android学习笔记(十六):Widget-进度条

RatingBar可参考Android学习笔记(十八):ListView和RatingBar

WebView可参见Android学习笔记(二九):嵌入浏览器

相关链接: 我的Android开发相关文章

【转】Pro Android学习笔记(二三):用户界面和控制(11):其他控件的更多相关文章

  1. 【转】Pro Android学习笔记(二五):用户界面和控制(13):LinearLayout和TableLayout

    目录(?)[-] 布局Layout 线性布局LinearLayout 表格布局TableLayout 布局Layout Layout是容器,用于对所包含的view进行布局.layout是view的子类 ...

  2. 【转】 Pro Android学习笔记(二二):用户界面和控制(10):自定义Adapter

    目录(?)[-] 设计Adapter的布局 代码部分 Activity的代码 MyAdapter的代码数据源和构造函数 MyAdapter的代码实现自定义的adapter MyAdapter的代码继续 ...

  3. 【转】 Pro Android学习笔记(十九):用户界面和控制(7):ListView

    目录(?)[-] 点击List的item触发 添加其他控件以及获取item数据 ListView控件以垂直布局方式显示子view.系统的android.app.ListActivity已经实现了一个只 ...

  4. 【转】 Pro Android学习笔记(二九):用户界面和控制(17):include和merge

    目录(?)[-] xml控件代码重用include xml控件代码重用merge 横屏和竖屏landsacpe portrait xml控件代码重用:include 如果我们定义一个控件,需要在不同的 ...

  5. 【转】 Pro Android学习笔记(五二):ActionBar(5):list模式

    可以在action bar中加入spinner的下来菜单,有关spinner,可以参考Pro Android学习笔记(二十):用户界面和控制(8):GridView和Spinner. list的样式和 ...

  6. Pro Android学习笔记 ActionBar(1):Home图标区

     Pro Android学习笔记(四八):ActionBar(1):Home图标区 2013年03月10日 ⁄ 综合 ⁄ 共 3256字 ⁄ 字号 小 中 大 ⁄ 评论关闭 ActionBar在A ...

  7. 【转】 Pro Android学习笔记(八二):了解Package(1):包和进程

    文章转载只能用于非商业性质,且不能带有虚拟货币.积分.注册等附加条件.转载须注明出处:http://blog.csdn.net/flowingflying/ 在之前,我们已经学习了如何签发apk,见P ...

  8. 【转】 Pro Android学习笔记(六七):HTTP服务(1):HTTP GET

    目录(?)[-] HTTP GET小例子 简单小例子 出现异常NetworkOnMainThreadException 通过StrictMode进行处理 URL带键值对 Andriod应用可利用ser ...

  9. 【转】 Pro Android学习笔记(五五):调试和分析(3):adb命令、模拟器控制台和StrictMode

    目录(?)[-] adb命令 模拟器Console StrictMode adb命令 我们在学习SQLite的使用,介绍过部分adb命令的使用,见Pro Android学习笔记(五):了解Conten ...

  10. 【转】 Pro Android学习笔记(五六):配置变化

    目录(?)[-] Activity的destorycreate过程 Fragment的destorycreate过程 onSaveInstanceState saveFragmentInstanceS ...

随机推荐

  1. 【python】-- 函数、无参/有参参数、全局变量/局部变量

    函数 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段. 函数能提高应用的模块性,和代码的重复利用率.你已经知道Python提供了许多内建函数,比如print().但你也可以自己创建函 ...

  2. ShowModal 代码分析

    下面为Delphi中,方法TCustomForm.ShowModal的代码,通过分析以下代码,可以了解ShowModal到底是怎么一回事! 1 2 3 4 5 6 7 8 9 10 11 12 13 ...

  3. Render a controller in Twig - Unexpected “render” tag - expecting closing tag for the “block” tag defined

    Render a controller in Twig - Unexpected “render” tag - expecting closing tag for the “block” tag de ...

  4. 更换好的yum源

    最近重装了虚拟机,因为之前总是碰到一些 yum的软件太 旧了,索性重装了 虚拟机,从零开始,然后配置yum源,以便以后安装 插件包的时候是最新的.如下: 1,进入yum源配置目录cd /etc/yum ...

  5. db2数据库还原

    1.建好数据库比如TEST,建的时候将codepage设为与目标备份的codepage一致,比如: 437  2.然后备份一下刚建好的数据库,备份成功后,将20141127目录删除,然后将原来备份好的 ...

  6. Redis持久化——问题定位与优化(三)

    核心知识点: 1.fork操作 a.在RDB或AOF重写时,会执行fork操作创建子进程,fork操作是一个重量级操作. b.改善fork操作耗时的手段:避免使用Xen.配置Redis实例最大使用内存 ...

  7. DatagramSocket总是发送UDP数据后无法接收数据

    ref:http://blog.chinaunix.net/uid-20771867-id-3416509.html         cmd:telnet localhost 5554        ...

  8. SpringBoot学习笔记(2):引入Spring Security

    SpringBoot学习笔记(2):用Spring Security来保护你的应用 快速开始 本指南将引导您完成使用受Spring Security保护的资源创建简单Web应用程序的过程. 参考资料: ...

  9. 在Tomcat的安装目录下conf目录下的server.xml文件中增加一个xml代码片段,该代码片段中每个属性的含义与用途

    contex指上下文,实际上就是一个web项目:path是虚拟目录,访问的时候用127.0.0.1:8080/welcom/*.jsp访问网页,welcome前面要加/;docBase是网页实际存放位 ...

  10. [原创]java WEB学习笔记31:会话与状态管理 session机制 概述(定义,session机制,session的声明周期,保存session的方式,Session的创建与删除)

    本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...