name="android.permission.INTERNET"/>
5.2.1首先,我们将要介绍的是系统的启动界面Main.java,亦即登录界面的代码。
代码清单2.1Calendar.java主体:
publicclassMainextendsActivityimplementsOnDateChangedListener{
……//变量定义
@Override
protectedvoidonCreate(BundlesavedInstanceState){
//TODOAuto-generatedmethodstub
super.onCreate(savedInstanceState);
LinearLayoutmainLayout=(LinearLayout)getLayoutInflater().inflate(
R.layout.main,null);
setContentView(mainLayout);
calendarView=newCalendarView(this);
mainLayout.addView(calendarView);
}
@Override
publicbooleanonCreateOptionsMenu(Menumenu){
……//四个菜单项
}
@Override
publicbooleanonOptionsItemSelected(MenuItemitem){
switch(item.getItemId()){
caseMiToday:
Today();break;
caseMiMyDate:
MyDate();break;
caseMiRecordRemind:
RecordRemind();break;
caseMiAbout:
About();break;
}
returntrue;
}
privatevoidToday(){
Intentintent=newIntent(Main.this,Today.class);
this.startActivity(intent);
}
publicvoidAbout(){
Intentintent=newIntent(Main.this,About.class);
this.startActivity(intent);
}
publicvoidRecordRemind(){
Intentintent=newIntent(Main.this,AllRecord.class);
intent.putExtra("year",calendarView.ce.grid.currentYear);
intent.putExtra("month",calendarView.ce.grid.currentMonth);
intent.putExtra("day",calendarView.ce.grid.currentDay1);
this.startActivity(intent);
}
publicvoidMyDate(){
……//指定日期
}
@Override
publicvoidonDateChanged(DatePickerview,intyear,intmonthOfYear,
intdayOfMonth){
SimpleDateFormatsdf=newSimpleDateFormat("yyyy年M月d日");
java.util.Calendarcalendar=java.util.Calendar.getInstance();
calendar.set(year,monthOfYear,dayOfMonth);
if(tvDate!
=null)
tvDate.setText(sdf.format(calendar.getTime()));
else
adMyDate.setTitle(sdf.format(calendar.getTime()));
Calendarcalendar1=Calendar.getInstance();
if(calendar1.get(Calendar.YEAR)==year
&&calendar1.get(Calendar.MONTH)==monthOfYear
&&calendar1.get(Calendar.DATE)==dayOfMonth)
{
if(tvDate!
=null)
tvDate.setText(tvDate.getText()+"(今天)");
else
adMyDate.setTitle(sdf.format(calendar.getTime())+"(今天)");
}
if(tvLunarDate==null)
return;
}
}
此类用于创建系统主界面。
onCreateOptionsMenu。
其中main布局如下代码。
代码清单2.2
xmlversion="1.0"encoding="utf-8"?
>
android=":
//schemas.android/apk/res/android"
android:
orientation="vertical"android:
layout_width="fill_parent"
android:
layout_height="fill_parent"android:
background="@color/calendar_background">
--android:
background="@drawable/background"-->
id="@+id/calHeader"
android:
layout_width="fill_parent"android:
layout_height="70dp">
id="@+id/ivLogo"android:
src="@drawable/calendar"
android:
layout_width="@dimen/logo_size"android:
layout_height="@dimen/logo_size"
android:
layout_margin="@dimen/margin"/>
layout_width="fill_parent"
android:
layout_height="wrap_content"android:
layout_toRightOf="@id/ivLogo"
android:
layout_marginTop="@dimen/margin"android:
orientation="vertical">
id="@+id/tvButton1"android:
layout_width="wrap_content"
android:
text="-"android:
textSize="15dp"android:
layout_height="wrap_content"
android:
background="@drawable/button_ground1">
id="@+id/tvMsg2"android:
layout_width="160dp"
android:
layout_height="wrap_content"android:
textColor="@color/text_color"
android:
layout_toRightOf="@id/tvButton1"/>
id="@+id/tvButton2"android:
layout_width="wrap_content"
android:
text="+"android:
textSize="15dp"android:
layout_height="wrap_content"
android:
background="@drawable/button_ground2"
android:
layout_toRightOf="@id/tvMsg2">
id="@+id/tvMsg1"android:
layout_width="fill_parent"
android:
layout_height="wrap_content"android:
textColor="@color/text_color"
android:
layout_marginTop="10dp"android:
layout_below="@id/tvMsg2"/>
5.2.2现在,让我们跟随用户操作来了解下一个段代码,即用户查看当天天气
代码清单3Today.java。
访问webService及显示天气信息。
代码清单3.1访问webService及显示天气信息。
privatevoidparseWeather(SoapObjectdetail)
throwsUnsupportedEncodingException{
String[]str=newString[18];
intN=str.length;
StringBufferbuffer=newStringBuffer();
for(inti=0;istr[i]=detail.getProperty(i).toString();
buffer.append(i).append(str[i]).append("\n");
}
Strings=newString();
s=detail.getProperty(8).toString();
Stringtemp=detail.getProperty(8).toString();
StringBufferstrbuffer=newStringBuffer();
System.out.println(str);
for(inti=0;;i++){
if(temp.charAt(i)=='.'){
break;
}else{
strbuffer.append(temp.charAt(i));
}
}
intnum=Integer.parseInt(strbuffer.toString());
flag=false;
imageView.setImageResource(R.drawable.a_0+num);
Stringdate=detail.getProperty(6).toString();
weatherToday="今天:
"+date.split("")[0];
weatherToday=weatherToday+"\n天气:
"+date.split("")[1];
weatherToday=weatherToday+"\n气温:
"
+detail.getProperty(5).toString();
weatherToday=weatherToday+"\n风力:
"
+detail.getProperty(7).toString()+"\n"
+str[11].split("\n")[0];
weather.setText(weatherToday);
}
classMyThreadextendsThread{
MyHandlerhandler=newMyHandler();
@Override
publicvoidrun(){
try{
sleep(1000);
}catch(Exceptione){
e.printStackTrace();
}
Messagemessage=newMessage();
handler.sendMessage(message);
}
}
classMyHandlerextendsHandler{
@Override
publicvoidhandleMessage(Messagemsg){
try{
progressDialog();
//下拉框或列表
Stringcity=editText.getText().toString();
getWeather(city);
dialog.cancel();
}catch(Exceptione){
e.printStackTrace();
}
}
}
5.2.3现在,让我们跟随用户操作来了解下一个段代码,即指定日期。
代码清单4Main.java中的MyDate()。
publicvoidMyDate(){
myDateLayout=(LinearLayout)getLayoutInflater().inflate(
R.layout.mydate,null);
dpSelectDate=(DatePicker)myDateLayout
.findViewById(R.id.dpSelectDate);
//Createabuilder
builder=newAlertDialog.Builder(this);
builder.setTitle("指定日期");
myDateLayout=(LinearLayout)getLayoutInflater().inflate(
R.layout.mydate,null);
dpSelectDate=(DatePicker)myDateLayout
.findViewById(R.id.dpSelectDate);
tvDate=(TextView)myDateLayout.findViewById(R.id.tvDate);
tvLunarDate=(TextView)myDateLayout
.findViewById(R.id.tvLunarDate);
d