zoukankan      html  css  js  c++  java
  • Android

    源码下载地址 :

    -- CSDN :  http://download.csdn.net/detail/han1202012/6856737 

    -- GitHub : https://github.com/han1202012/Timer_Date_Test.git

    .

    作者 :万境绝尘 

    转载请注明出处  : http://blog.csdn.net/shulianghan/article/details/18314667

    .


    一. 时钟组件


    1. AnalogClock组件


    外观 : 该组件显示一个表盘, 有分针和秒针转动;

    属性介绍 : 该组件可以设置表盘图片, 时针 分针显示图片;

    -- 设置表盘 : android:dial, 设置R.drawable资源图片;

    -- 设置时针 : android:hand_hour, 设置R.drawable资源图片;

    -- 设置分针 : android:hand_minute, 设置R.drawable资源图片;


    2. DigitalClock组件


    外观 : 该组件就是一个TextView组件, 显示的是当前时间的文本;

    属性 : 该组件不能设置android:text属性, 设置了也无效;


    3. 源码示例


    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >
        
        <!-- 数字时钟, 可以设置字体大小颜色 -->
        <DigitalClock 
            android:layout_height="wrap_content"
            android:layout_width="wrap_content"
            android:textSize="20pt"
            android:textColor="#DF0101"/>
        
        <TextView 
            android:layout_height="20dp"
            android:layout_width="fill_parent"
            android:background="#01DF01"/>
        
        <!-- 模拟时钟, 可设置表盘, 分针, 时针的针脚 -->
        <AnalogClock 
            android:layout_width="200dp"
            android:layout_height="200dp"
            android:dial="@drawable/clock"
            />
    
    </LinearLayout>
    

    效果图 : 



    二. 计时器Chronometer


    格式属性 : android:format, 指定计时器的计时格式;

    常用方法 : 计时器的方法是重点所在, 可以控制计时器开始, 停止等动作;

    -- 设置时间 : setBase(long), 设置起始时间;

    -- 设置格式 : setFormat(string), 设置时间显示格式;

    -- 开始计时 : start(), 开始计时方法;

    -- 停止计时 : stop(), 停止计时方法;

    -- 设置监听 : setOnChronometerTickListener(), 设置一个监听器, 当计时器计时变化的时候回调这个方法;


    实例

    XML源码

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >
        
        <Chronometer 
            android:id="@+id/chronometer"
            android:layout_height="wrap_content"
            android:layout_width="wrap_content"
            android:textSize="20pt"
            android:textColor="#DF0101"/>
        
        <!-- checked为true的时候, 显示开始计时, 此时没有计时 -->
        <ToggleButton 
            android:id="@+id/toggle"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="15pt"
            android:textOn="开始计时"
            android:textOff="停止计时"
            android:checked="true"/>
    
    </LinearLayout>
    

    Activity代码

    package shuliang.han.time_date_test;
    
    import android.app.Activity;
    import android.os.Bundle;
    import android.os.SystemClock;
    import android.widget.Chronometer;
    import android.widget.Chronometer.OnChronometerTickListener;
    import android.widget.CompoundButton;
    import android.widget.CompoundButton.OnCheckedChangeListener;
    import android.widget.Toast;
    import android.widget.ToggleButton;
    
    public class ChronometerActivity extends Activity {
    
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.chronometer);
    		
    		final Chronometer chronometer = (Chronometer) findViewById(R.id.chronometer);
    		ToggleButton toggleButton = (ToggleButton) findViewById(R.id.toggle);
    		
    		toggleButton.setOnCheckedChangeListener(new OnCheckedChangeListener() {
    			
    			@Override
    			public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
    				if(isChecked){//从  显示 停止计时 点击, checked false -> true 停止计时, 显示 开始计时
    					chronometer.stop();
    				}else{// 显示开始计时 点击, checked true -> false 开始计时, 显示 停止计时
    					chronometer.start();
    					chronometer.setBase(SystemClock.elapsedRealtime());
    				}
    			}
    		});
    		
    		//设置一个监听器, 当超过5秒计时的时候Toast信息
    		chronometer.setOnChronometerTickListener(new OnChronometerTickListener() {
    			@Override
    			public void onChronometerTick(Chronometer chronometer) {
    				if(SystemClock.elapsedRealtime() - chronometer.getBase() > 5 * 1000)
    					Toast.makeText(getApplicationContext(), "5秒了", Toast.LENGTH_LONG).show();
    			}
    		});
    	}
    	
    }
    

    效果图


    .

    作者 :万境绝尘 

    转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/18314667

    .


    三. 日历视图CalendarView


    日历视图 : 日历视图显示了一个7 * N 的方格, 即日历, N可以设置, 通过滚动视图, 可以选择其他月份年份的日期, 同时也可以设置日期改变监听器, 监听日历选择事件;

    日历视图的XML属性

    -- 设置样式 : android:dateTextAppearance, 设置日期文字显示样式;

    -- 设置首日 : android:firstDayOfWeek, 设置星期几是每周的第一天, 默认是周一;

    -- 选中颜色 : android:focusedMonthDateColor, 设置选中日期所在月份日期颜色;

    -- 最大日期 : android:maxDate, 设置支持的最大日期, 以 mm/dd/yyyy 格式指定;

    -- 最小日期 : android:minDate, 设置支持的最小日期, 以 mm/dd/yyyy 格式指定;

    -- 选中竖线 : android:selectedDateVerticalBar, 设置被选中日期两边的竖线Drawable, 即R.drawable.int资源;

    -- 选周颜色 : android:selectedWeekBackground, 设置被选中日期所在周的背景颜色;

    -- 周数显示 : android:showWeekNumber, 设置是否显示周数;

    -- 设置周数 : android:shownWeekCount, 设置该日历组件一共显示几周;

    -- 未选颜色 : android:unfocusedMonthDateColor, 设置未被选中的月份的日期颜色;

    -- 星期样式 : android:weekDayTextAppearance, 设置星期几的文字样式;

    -- 周号颜色 : android:weekNumberColor, 设置周编号的颜色;

    -- 周分割色 : android:weekSeparatorLineColor, 设置周分隔线颜色;


    实例

    XML源码

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >
        
        <TextView 
            android:layout_height="wrap_content"
            android:layout_width="fill_parent"
            android:text="日历视图"/>
        
        <!-- 
        	android:firstDayOfWeek 属性, 设置星期几是一周的开始
        	android:shownWeekCount 属性, 设置显示几个星期的日历
        	android:selectedWeekBackgroundColor 属性, 设置当前选中日期所在的星期背景颜色
        	android:focusedMonthDateColor 属性, 显示当前选中月份的日期颜色, 在这个日历中可能同时显示2个月份的日历
        	android:weekSeparatorLineColor 属性, 设置将日期分开的线条颜色
        	android:unfocusedMonthDateColor 属性, 设置没有选中的月份日期颜色
         -->
        <CalendarView	
    		android:layout_width="match_parent"
    		android:layout_height="match_parent"
    		android:firstDayOfWeek="7"
    		android:shownWeekCount="4"
    		android:selectedWeekBackgroundColor="#aff"
    		android:focusedMonthDateColor="#f00"
    		android:weekSeparatorLineColor="#ff0"
    		android:unfocusedMonthDateColor="#f9f"
    		android:id="@+id/calendarView" />
        
    
    </LinearLayout>
    

    Activity源码

    package shuliang.han.time_date_test;
    
    import android.app.Activity;
    import android.os.Bundle;
    import android.widget.CalendarView;
    import android.widget.CalendarView.OnDateChangeListener;
    import android.widget.Toast;
    
    public class CalendarActivity extends Activity {
    
    	private CalendarView calendarView;
    	
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.calendar);
    		
    		calendarView = (CalendarView) findViewById(R.id.calendarView);
    		//设置日期改变监听器, 日期改变的时候激活该监听器
    		calendarView.setOnDateChangeListener(new OnDateChangeListener() {
    			@Override
    			public void onSelectedDayChange(CalendarView view, int year, int month,
    					int dayOfMonth) {
    				Toast.makeText(getApplicationContext(), "选择的日期是 : " + year +" 年"
    						+ month + " 月 " + dayOfMonth + "日", Toast.LENGTH_LONG).show();
    			}
    		});
    	}
    }
    

    效果图



    四. 时间选择器


    TimePicker可以供用户选择时间, 组件比较美观, 还可以设置时间改变监听器, 一旦时间改变, 就会触发回调方法;


    实例源码

    XML文件

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >
        
        <TextView 
            android:layout_height="wrap_content"
            android:layout_width="wrap_content"
            android:text="时间选择"/>
        
        <TimePicker 
            android:id="@+id/time_picker"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"/>
    
    </LinearLayout>
    

    Activity源码

    package shuliang.han.time_date_test;
    
    import java.util.Calendar;
    
    import android.app.Activity;
    import android.os.Bundle;
    import android.widget.DatePicker;
    import android.widget.TimePicker;
    import android.widget.TimePicker.OnTimeChangedListener;
    import android.widget.Toast;
    
    public class TimePickerActivity extends Activity {
    
    	private TimePicker timePicker;
    	
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.time_picker);
    		
    		timePicker = (TimePicker) findViewById(R.id.time_picker);
    		
    		//打印当前时间
    		getCurrentDateTime();
    		
    		timePicker.setOnTimeChangedListener(new OnTimeChangedListener() {
    			@Override
    			public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {
    				Toast.makeText(getApplicationContext(), "改变时间 : " + hourOfDay + "时" + minute + "分", Toast.LENGTH_LONG).show();
    			}
    		});
    	}
    	
    	/*
    	 * 获取当前的日期和时间, 并将日期时间Toast出来
    	 */
    	private void getCurrentDateTime() {
    		//1. 获取当前日历
    		Calendar calendar = Calendar.getInstance();
    		//2. 获取时间日期方法 : calendar.get(Calendar.YEAR)
    		Toast.makeText(getApplicationContext(), "当前时间 : " + 
    			calendar.get(Calendar.YEAR) + "年" + 
    			calendar.get(Calendar.MONTH) + "月" + 
    			calendar.get(Calendar.DATE) + "日" + 
    			calendar.get(Calendar.HOUR) + "时" + 
    			calendar.get(Calendar.MINUTE) + "分" + 
    			calendar.get(Calendar.SECOND) + "秒"
    				, Toast.LENGTH_LONG).show();
    	}
    }
    

    效果图



    五. 日期选择器DatePicker


    日期选择器常用属性

    -- 显示日历 : android:calendarViewShown, 是否显示CalendarView日历组件;

    -- 选择最后 : android:endYear, 该选择器是否允许选择最后一年;

    -- 最大日期 : android:maxDate, 设置日期选择器的最大日期, 格式 mm/dd/yyyy;

    -- 最小日期 : android:minDate, 设置日期选择器的最小日期, 格式 mm/dd/yyyy;

    -- 选择组件 : android:spinnerShown, 是否显示Spinner组件;

    -- 选择首年 : android:startYear, 是否允许选择首年;


    实例:

    XML源码

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >
        
        <!-- 
        	android:startYear 属性 : 设置可选择日期的开始年份
        	android:endYear 属性 : 设置可选择日期的结束年份
        	android:calendarViewShown 属性 : 设置是否显示CalendarView组件
        	android:spinnersShown 属性 : 设置是否显示
         -->
        <DatePicker 
            android:id="@+id/date_picker"
            android:layout_height="wrap_content"
            android:layout_width="wrap_content"
            android:layout_gravity="center_horizontal"
            android:startYear="2000"
            android:endYear="2020"
            android:calendarViewShown="true"
            android:spinnersShown="true"/>
    
    </LinearLayout>
    


    效果图 :

     


    .

    作者 :万境绝尘 

    转载请注明出处  : http://blog.csdn.net/shulianghan/article/details/18314667

    .



    源码下载地址 :

    -- CSDN :  http://download.csdn.net/detail/han1202012/6856737 

    -- GitHub : https://github.com/han1202012/Timer_Date_Test.git

  • 相关阅读:
    TortoiseGit状态图标不能正常显示的解决办法
    git安装及命令使用和github网站
    git commit 代码时提示: Warning: Your console font probably doesn‘t support Unicode.
    msysgit之git bash方便的复制粘贴,默认工作目录,窗口大小,提高速度等小窍门
    Apache与Tomcat的整合
    Android UI效果实现——Activity滑动退出效果
    多平台Native库打入JAR包发布实战
    WPF使用Win32进行GDI截屏笔记
    使用Gradle将Maven库打包成Jar
    【转载/修改】ScrollLayout代码修正,追加模仿viewpager滚动速度
  • 原文地址:https://www.cnblogs.com/hanshuliang/p/4215445.html
Copyright © 2011-2022 走看看