• 【转】Pro Android学习笔记(二三):用户界面和控制(11):其他控件


    目录(?)[-]

    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开发相关文章

  • 相关阅读:
    并行编译 Xoreax IncrediBuild
    FreeImage使用
    wxWidgets简单的多线程
    wx菜单栏
    #你好Unity3D#Hierarchy视图监听gameObject点击事件
    #你好Unity3D#Project脚本执行双击资源操作
    Unity3D研究院编辑器之Editor的GUI的事件拦截
    Unity3D研究院编辑器之脚本设置ToolBar
    Unity3D研究院编辑器之不影响原有布局拓展Inspector
    Unity3D研究院之Editor下监听Transform变化
  • 原文地址:https://www.cnblogs.com/blongfree/p/5047937.html
Copyright © 2020-2023  润新知