Android 简单谈谈widget


  本文标签:Android widget

  日期widget

  DatePickerDatePickerDialogDatePickerDialog是装载DatePicker的一个简单的容器,如图所示  。分别有一个触发方法OnDateChangedListener( ) 和OnDateSetListener( )  。

  在这个例子中,我们设置了两个button和一个textView,当按键弹出DatePickDialog  。

  步骤1:一些有关时间的java函数

  获得当前时间的实例:Calendar calendar = Calendar.getInstance();

  获得当前时间:calendar.get(Calendar.YEAR),通过设置参数可获得年,月,日,时,分,秒

  设置时间:calendar.set(Calendar.YEAR,2011),可设置年,月,日,时,分,秒

  用String给出当前的时间信息,可以使用Java的SimpleDateFormat,如下处理:

  

  SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm"); //可以设置不同的类型  。通过sdf.format(calendar.getTime()就可以获得相关的info string,可供出来

  步骤2:设置Android XML文件并编写有关的代码(略去)

  步骤3:弹出日期Dialog,并设置Set的触发回调函数

  java代码:

  1. new DatePickerDialog(   
  2. /*参数1:context,在我的例子是内部类中调用,所有需指明this是那个this*/ Chapter9Test1.this,   
  3. /*参数2:设置Set日期的回调函数*/ dateSet,   
  4. /*参数3,4,5:设置的年月日*/ calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DATE)).show() ; 

  最后一个show()表示将dialog显示出来  。Set的回调函数,是OnDateSetListener(),如下:

  java代码

  1. DatePickerDialog.OnDateSetListener dateSet = new DatePickerDialog.OnDateSetListener() {  
  2. public void onDateSet (DatePicker view, int year, int monthOfYear, int dayOfMonth) {  
  3. calendar.set(Calendar.YEAR, year);  
  4. calendar.set(Calendar.MONTH, monthOfYear);  
  5. calendar.set(Calendar.DATE, dayOfMonth);   
  6.   }  
  7. }; 

  效果图:

  

  模拟时钟和数字时钟

  前面的例子,我们通常要设置某个日期或者时间,如果我们只是想向用户显示当前的时间,可以采用模拟始终和数字时钟  。如图所示,下面是相关的Android XML文件:

  java代码:

  1. <RelativeLayout android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent">   
  2. <AnalogClock android:id="@+id/c91_analog" 
  3. android:layout_width="fill_parent" android:layout_height="wrap_content"   
  4. android:layout_centerHorizontal="true" 
  5. android:layout_alignParentTop="true" /> 
  6. <DigitalClock android:id="@+id/c91_digital" 
  7. android:layout_width="wrap_content" android:layout_height="wrap_content"   
  8. android:layout_centerHorizontal="true" 
  9. android:layout_below="@id/c91_analog" /> 
  10. RelativeLayout>  

  效果图: