2 定位当前位置并查询天气 或者查询列表以及其他城市的天气
1) HttpCallbackListener定义一个接口
package com.example.d99;
public interface HttpCallbackListener
{
void onFinish(String response);
void onError(Exception e);
}
2)HttpUtil 建一个子线程
package com.example.d99;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
public class HttpUtil
{
public static void sendHttpRequest(final String address, final HttpCallbackListener listener)
{
new Thread(new Runnable()
{
@Override
public void run()
{
HttpURLConnection connection = null;
try
{
URL url = new URL(address);
connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.setConnectTimeout(8000);
connection.setReadTimeout(8000);
connection.setDoInput(true);
connection.setDoOutput(true);
InputStream in = connection.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
StringBuilder response = new StringBuilder();
String line;
while ((line = reader.readLine()) != null)
{
response.append(line);
}
if (listener != null)
{
// 回调onFinish()方法
listener.onFinish(response.toString());
}
} catch (Exception e)
{
if (listener != null)
{
// 回调onError()方法
listener.onError(e);
}
} finally
{
if (connection != null)
{
connection.disconnect();
}
}
}
}).start();
}
}
3)WeatherAdapter建一个适配器
package com.example.d99;
import java.util.List;
import com.example.d99.R;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;
public class WeatherAdapter extends ArrayAdapter<Weather>
{
private int resourceId;
public WeatherAdapter(Context context, int textViewResourceId, List<Weather> objects)
{
super(context, textViewResourceId, objects);
resourceId = textViewResourceId;
}
@Override
public View getView(int position, View convertView, ViewGroup viewgroup)
{
Weather weather = getItem(position);
ViewHolder viewHolder = null;
if (convertView == null)
{
viewHolder = new ViewHolder();
convertView = LayoutInflater.from(getContext()).inflate(resourceId, null);
viewHolder.tvDayOfWeek = (TextView) convertView.findViewById(R.id.tvDayofWeek);
viewHolder.tvDate = (TextView) convertView.findViewById(R.id.tvDate);
viewHolder.tvTemperature = (TextView) convertView.findViewById(R.id.tvTemperature);
viewHolder.tvWeather = (TextView) convertView.findViewById(R.id.tvWeather);
convertView.setTag(viewHolder);
} else
{
viewHolder = (ViewHolder) convertView.getTag();
}
viewHolder.tvDayOfWeek.setText(weather.getDayOfWeek());
viewHolder.tvDate.setText(weather.getDate());
viewHolder.tvTemperature.setText(weather.getTemperature());
viewHolder.tvWeather.setText(weather.getWeather());
return convertView;
}
private class ViewHolder
{
TextView tvDayOfWeek;
TextView tvDate;
TextView tvTemperature;
TextView tvWeather;
}
}
4)Weather.javapackage com.example.d99;
public class Weather
{
private String dayOfWeek;// 星期几
private String date;// 日期
private String temperature;// 温度
private String weather;// 天气
public Weather()
{
}
public Weather(String dayOfWeek, String date, String temperature, String weather)
{
super();
this.dayOfWeek = dayOfWeek;
this.date = date;
this.temperature = temperature;
this.weather = weather;
}
public String getDayOfWeek()
{
return dayOfWeek;
}
public void setDayOfWeek(String dayOfWeek)
{
this.dayOfWeek = dayOfWeek;
}
public String getDate()
{
return date;
}
public void setDate(String date)
{
this.date = date;
}
public String getTemperature()
{
return temperature;
}
public void setTemperature(String temperature)
{
this.temperature = temperature;
}
public String getWeather()
{
return weather;
}
public void setWeather(String weather)
{
this.weather = weather;
}
@Override
public String toString()
{
return "Weather [dayOfWeek=" + dayOfWeek + ", date=" + date + ", temperature=" + temperature + ", weather="
+ weather + "]";
}
}
5)MianActivity.javaa主函数:package com.example.d99;
import java.io.IOException;
import java.util.List;
import java.util.Locale;
import com.baidu.location.BDLocation;
import com.baidu.location.BDLocationListener;
import com.baidu.location.LocationClient;
import com.baidu.location.LocationClientOption;
import com.baidu.mapapi.map.BaiduMap;
import com.baidu.mapapi.map.BitmapDescriptor;
import com.baidu.mapapi.map.MapStatusUpdate;
import com.baidu.mapapi.map.MapStatusUpdateFactory;
import com.baidu.mapapi.map.MapView;
import com.baidu.mapapi.map.MyLocationData;
import com.baidu.mapapi.model.LatLng;
import android.app.ActionBar;
import android.app.Fragment;
import android.location.Address;
import android.location.Geocoder;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.RadioGroup.OnCheckedChangeListener;
import android.widget.TextView;
public class MainBaiduMap extends Fragment
{
private TextView textView, textView2, textView3;
public static final int SHOW_LOCATION = 0;
LocationClient mLocClient;
public MyLocationListenner myListener = new MyLocationListenner();
BitmapDescriptor mCurrentMarker;
MapView mMapView;
BaiduMap mBaiduMap;
OnCheckedChangeListener radioButtonListener;
boolean isFirstLoc = true;
private MyHandler mHandler;
private final int MSG_SHOW = 1;
private Geocoder mGeocoder;
public String b;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
View rootView = inflater.inflate(R.layout.baidumap_main, container, false);
return rootView;
}
@Override
public void onActivityCreated(Bundle savedInstanceState)
{
super.onActivityCreated(savedInstanceState);
ActionBar actionBar = getActivity().getActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
actionBar.setDisplayShowTitleEnabled(true);
actionBar.getTitle();
mHandler = new MyHandler(getActivity().getMainLooper());
mGeocoder = new Geocoder(getActivity().getApplicationContext(), Locale.getDefault());
textView = (TextView) getActivity().findViewById(R.id.textView1);
textView2 = (TextView) getActivity().findViewById(R.id.textView2);
textView3 = (TextView) getActivity().findViewById(R.id.textView3);
mMapView = (MapView) getActivity().findViewById(R.id.bmapView);
mBaiduMap = mMapView.getMap();
mBaiduMap.setMyLocationEnabled(true);
mLocClient = new LocationClient(getActivity());
mLocClient.registerLocationListener(myListener);
LocationClientOption option = new LocationClientOption();
option.setOpenGps(true);// 鎵撳紑gps
option.setCoorType("bd09ll"); // 璁剧疆鍧愭爣绫诲瀷
option.setScanSpan(1000);
mLocClient.setLocOption(option);
mLocClient.start();
}
public class MyLocationListenner implements BDLocationListener
{
@Override
public void onReceiveLocation(BDLocation location)
{
if (location == null || mMapView == null)
return;
MyLocationData locData = new MyLocationData.Builder().accuracy(location.getRadius()).direction(100)
.latitude(location.getLatitude()).longitude(location.getLongitude()).build();
mBaiduMap.setMyLocationData(locData);
if (isFirstLoc)
{
isFirstLoc = false;
LatLng ll = new LatLng(location.getLatitude(), location.getLongitude());
showLocation(location);
MapStatusUpdate u = MapStatusUpdateFactory.newLatLng(ll);
mBaiduMap.animateMapStatus(u);
}
}
public void onReceivePoi(BDLocation poiLocation)
{
}
}
@Override
public void onPause()
{
mMapView.onPause();
super.onPause();
}
@Override
public void onResume()
{
mMapView.onResume();
super.onResume();
}
@Override
public void onDestroy()
{
mLocClient.stop();
mBaiduMap.setMyLocationEnabled(false);
mMapView.onDestroy();
mMapView = null;
super.onDestroy();
}
public void showLocation(BDLocation location)
{
String latitude = Double.toString(location.getLatitude());
textView.setText(latitude);
String longitude = Double.toString(location.getLongitude());
textView2.setText(longitude);
showAddress(latitude, longitude);
}
public void showAddress(String latitude, String longitude)
{
try
{
List<Address> addrList = mGeocoder.getFromLocation(Double.parseDouble(latitude),
Double.parseDouble(longitude), 1);
if (addrList.size() > 0)
{
StringBuilder sb = new StringBuilder();
Address addr = addrList.get(0);
for (int i = 0; i <= addr.getMaxAddressLineIndex(); i++)
{
sb.append(addr.getAddressLine(i)).append(" ");
}
showMessage(sb.toString());
} else
{
showMessage("address not found!");
}
} catch (IOException e)
{
e.printStackTrace();
}
}
public void showMessage(String addr)
{
mHandler.removeMessages(MSG_SHOW);
Bundle bundle = new Bundle();
bundle.putString("ADDR", addr);
mHandler.sendMessage(Message.obtain(mHandler, MSG_SHOW, bundle));
}
public class MyHandler extends Handler
{
public MyHandler(Looper looper)
{
super(looper);
}
public void handleMessage(Message msg)
{
switch (msg.what)
{
case MSG_SHOW:
Bundle bundle = (Bundle) msg.obj;
textView3.setText(bundle.getString("ADDR"));
b = bundle.getString("ADDR");
getActivity().setTitle(b);
break;
}
}
}
}
6)NavigationDrawerFragment.java Fragment碎片之间绑定:
package com.example.d99;
import android.app.ActionBar;
import android.app.Activity;
import android.app.Fragment;
import android.app.FragmentManager;
import android.app.FragmentTransaction;
import android.content.SharedPreferences;
import android.content.res.Configuration;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.support.v4.app.ActionBarDrawerToggle;
import android.support.v4.view.GravityCompat;
import android.support.v4.widget.DrawerLayout;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;
public class NavigationDrawerFragment extends Fragment
{
private static final String STATE_SELECTED_POSITION = "selected_navigation_drawer_position";
private static final String PREF_USER_LEARNED_DRAWER = "navigation_drawer_learned";
private NavigationDrawerCallbacks mCallbacks;
private ActionBarDrawerToggle mDrawerToggle;
private DrawerLayout mDrawerLayout;
private ListView mDrawerListView;
private View mFragmentContainerView;
private int mCurrentSelectedPosition = 0;
private boolean mFromSavedInstanceState;
private boolean mUserLearnedDrawer;
public NavigationDrawerFragment()
{
}
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(getActivity());
mUserLearnedDrawer = sp.getBoolean(PREF_USER_LEARNED_DRAWER, false);
if (savedInstanceState != null)
{
mCurrentSelectedPosition = savedInstanceState.getInt(STATE_SELECTED_POSITION);
mFromSavedInstanceState = true;
}
selectItem(mCurrentSelectedPosition);
}
@Override
public void onActivityCreated(Bundle savedInstanceState)
{
super.onActivityCreated(savedInstanceState);
setHasOptionsMenu(true);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
mDrawerListView = (ListView) inflater.inflate(R.layout.fragment_navigation_drawer, container, false);
mDrawerListView.setOnItemClickListener(new AdapterView.OnItemClickListener()
{
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id)
{
selectItem(position);
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction transaction = fragmentManager.beginTransaction();
ActionBar actionBar = getActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
actionBar.setDisplayShowTitleEnabled(true);
switch (position)
{
case 0:
MainBaiduMap fragment1 = new MainBaiduMap();
transaction.replace(R.id.container, fragment1);
transaction.addToBackStack(null);
transaction.commit();
String dString0 = getActivity().getString(R.string.title_section1);
actionBar.setTitle(dString0);
break;
case 1:
String cString = (String) getActivity().getTitle();
actionBar.setTitle(cString);
break;
case 2:
String dString2 = getActivity().getString(R.string.title_section3);
actionBar.setTitle(dString2);
break;
case 3:
String dString3 = getActivity().getString(R.string.title_section4);
actionBar.setTitle(dString3);
break;
case 4:
String dString4 = getActivity().getString(R.string.title_section5);
// getActivity().setTitle(dString4);
actionBar.setTitle(dString4);
break;
case 5:
String dString5 = getActivity().getString(R.string.title_section6);
actionBar.setTitle(dString5);
break;
case 6:
String dString6 = getActivity().getString(R.string.title_section7);
actionBar.setTitle(dString6);
break;
case 7:
String dString7 = getActivity().getString(R.string.title_section8);
actionBar.setTitle(dString7);
break;
case 8:
String dString8 = getActivity().getString(R.string.title_section9);
actionBar.setTitle(dString8);
break;
case 9:
String dString9 = getActivity().getString(R.string.title_section10);
actionBar.setTitle(dString9);
break;
case 10:
String dString10 = getActivity().getString(R.string.title_section11);
actionBar.setTitle(dString10);
break;
case 11:
String dString11 = getActivity().getString(R.string.title_section12);
actionBar.setTitle(dString11);
break;
case 12:
String dString12 = getActivity().getString(R.string.title_section13);
actionBar.setTitle(dString12);
break;
case 13:
String dString13 = getActivity().getString(R.string.title_section14);
actionBar.setTitle(dString13);
break;
case 14:
String dString14 = getActivity().getString(R.string.title_section15);
actionBar.setTitle(dString14);
break;
case 15:
String dString15 = getActivity().getString(R.string.title_section16);
actionBar.setTitle(dString15);
break;
case 16:
String dString16 = getActivity().getString(R.string.title_section17);
actionBar.setTitle(dString16);
break;
case 17:
String dString17 = getActivity().getString(R.string.title_section18);
actionBar.setTitle(dString17);
break;
default:
break;
}
}
});
mDrawerListView.setAdapter(new ArrayAdapter<String>(getActionBar().getThemedContext(),
android.R.layout.simple_list_item_activated_1, android.R.id.text1,
new String[] { getString(R.string.title_section1), getString(R.string.title_section2),
getString(R.string.title_section3), getString(R.string.title_section4),
getString(R.string.title_section5), getString(R.string.title_section6),
getString(R.string.title_section7), getString(R.string.title_section8),
getString(R.string.title_section9), getString(R.string.title_section10),
getString(R.string.title_section11), getString(R.string.title_section12),
getString(R.string.title_section13), getString(R.string.title_section14),
getString(R.string.title_section15), getString(R.string.title_section16),
getString(R.string.title_section17), getString(R.string.title_section18) }));
mDrawerListView.setItemChecked(mCurrentSelectedPosition, true);
return mDrawerListView;
}
public boolean isDrawerOpen()
{
return mDrawerLayout != null && mDrawerLayout.isDrawerOpen(mFragmentContainerView);
}
public void setUp(int fragmentId, DrawerLayout drawerLayout)
{
mFragmentContainerView = getActivity().findViewById(fragmentId);
mDrawerLayout = drawerLayout;
mDrawerLayout.setDrawerShadow(R.drawable.drawer_shadow, GravityCompat.START);
ActionBar actionBar = getActionBar();
actionBar.setDisplayHomeAsUpEnabled(true);
actionBar.setHomeButtonEnabled(true);
mDrawerToggle = new ActionBarDrawerToggle(getActivity(), mDrawerLayout, R.drawable.ic_drawer,
R.string.navigation_drawer_open, R.string.navigation_drawer_close)
{
@Override
public void onDrawerClosed(View drawerView)
{
super.onDrawerClosed(drawerView);
if (!isAdded())
{
return;
}
getActivity().invalidateOptionsMenu();
}
@Override
public void onDrawerOpened(View drawerView)
{
super.onDrawerOpened(drawerView);
if (!isAdded())
{
return;
}
if (!mUserLearnedDrawer)
{
mUserLearnedDrawer = true;
SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(getActivity());
sp.edit().putBoolean(PREF_USER_LEARNED_DRAWER, true).apply();
}
getActivity().invalidateOptionsMenu();
}
};
if (!mUserLearnedDrawer && !mFromSavedInstanceState)
{
mDrawerLayout.openDrawer(mFragmentContainerView);
}
mDrawerLayout.post(new Runnable()
{
@Override
public void run()
{
mDrawerToggle.syncState();
}
});
mDrawerLayout.setDrawerListener(mDrawerToggle);
}
private void selectItem(int position)
{
mCurrentSelectedPosition = position;
if (mDrawerListView != null)
{
mDrawerListView.setItemChecked(position, true);
}
if (mDrawerLayout != null)
{
mDrawerLayout.closeDrawer(mFragmentContainerView);
}
if (mCallbacks != null)
{
mCallbacks.onNavigationDrawerItemSelected(position);
}
}
@Override
public void onAttach(Activity activity)
{
super.onAttach(activity);
try
{
mCallbacks = (NavigationDrawerCallbacks) activity;
} catch (ClassCastException e)
{
throw new ClassCastException("Activity must implement NavigationDrawerCallbacks.");
}
}
@Override
public void onDetach()
{
super.onDetach();
mCallbacks = null;
}
@Override
public void onSaveInstanceState(Bundle outState)
{
super.onSaveInstanceState(outState);
outState.putInt(STATE_SELECTED_POSITION, mCurrentSelectedPosition);
}
@Override
public void onConfigurationChanged(Configuration newConfig)
{
super.onConfigurationChanged(newConfig);
// Forward the new configuration the drawer toggle component.
mDrawerToggle.onConfigurationChanged(newConfig);
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater)
{
if (mDrawerLayout != null && isDrawerOpen())
{
inflater.inflate(R.menu.global, menu);
showGlobalContextActionBar();
}
super.onCreateOptionsMenu(menu, inflater);
}
@Override
public boolean onOptionsItemSelected(MenuItem item)
{
if (mDrawerToggle.onOptionsItemSelected(item))
{
return true;
}
if (item.getItemId() == R.id.action_example)
{
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction transaction = fragmentManager.beginTransaction();
appjianjie fragment1 = new appjianjie();
transaction.replace(R.id.container, fragment1);
transaction.addToBackStack(null);
transaction.commit();
return true;
}
return super.onOptionsItemSelected(item);
}
private void showGlobalContextActionBar()
{
ActionBar actionBar = getActionBar();
actionBar.setDisplayShowTitleEnabled(true);
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
actionBar.setTitle(R.string.app_name);
}
private ActionBar getActionBar()
{
return getActivity().getActionBar();
}
public static interface NavigationDrawerCallbacks
{
void onNavigationDrawerItemSelected(int position);
}
}
(1)activity_main.xml:<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.d99.MainActivity" >
<FrameLayout
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent" >
</FrameLayout>
<fragment
android:id="@+id/navigation_drawer"
android:name="com.example.d99.NavigationDrawerFragment"
android:layout_width="@dimen/navigation_drawer_width"
android:layout_height="match_parent"
android:layout_gravity="start"
tools:layout="@layout/fragment_navigation_drawer" />
</android.support.v4.widget.DrawerLayout>
(2)fragment_navigation_drawer.xml
<ListView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#cccc"
android:choiceMode="singleChoice"
android:divider="@android:color/transparent"
android:dividerHeight="0dp"
tools:context="com.example.d99.NavigationDrawerFragment" />
(3)weather_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/weather"
tools:context=".WeatherActivity" >
<LinearLayout
android:id="@+id/linearLayout1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<EditText
android:id="@+id/etCity"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_marginTop="20dp"
android:layout_weight="1"
android:background="@android:drawable/edit_text"
android:drawableLeft="@drawable/icons_weather_city"
android:drawablePadding="5dp"
android:ems="10"
android:hint="请输入你要查询的城市天气" >
<requestFocus />
</EditText>
<ImageButton
android:id="@+id/btnQuery"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_marginTop="20dp"
android:background="@null"
android:src="@drawable/icons_weather_query" />
</LinearLayout>
<ListView
android:id="@+id/lvFutureWeather"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/linearLayout1"
android:layout_centerHorizontal="true"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:dividerHeight="10dp"
android:layoutAnimation="@anim/weather_list_layout_animation" >
</ListView>
</RelativeLayout>
(4)activity_weather_listitem.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:background="@drawable/list_item_shape"
android:padding="10dp" >
<TextView
android:id="@+id/tvDayofWeek"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginLeft="12dp"
android:text="星期日"
android:textSize="15dp"
android:textColor="#000088" />
<TextView
android:id="@+id/tvDate"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/tvDayofWeek"
android:layout_alignBottom="@+id/tvDayofWeek"
android:textSize="13dp"
android:layout_alignParentRight="true"
android:text="20160207"
android:textColor="#000088" />
<TextView
android:id="@+id/tvTemperature"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/tvDayofWeek"
android:layout_below="@+id/tvDayofWeek"
android:layout_marginTop="15dp"
android:textSize="24dp"
android:text="temperature"
android:textColor="#ffffff" />
<TextView
android:id="@+id/tvWeather"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/tvTemperature"
android:layout_below="@+id/tvTemperature"
android:layout_marginTop="15dp"
android:textSize="15dp"
android:text="weather"
android:textColor="#0000aa" />
</RelativeLayout>
(5)String 文件<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">定位天气</string>
<string name="title_section1">我的位置</string>
<string name="title_section2">定位天气</string>
<string name="title_section3">滨州</string>
<string name="title_section4">曹县</string>
<string name="title_section5">郑州</string>
<string name="title_section6">济南</string>
<string name="title_section7">宁波</string>
<string name="title_section8">沈阳市</string>
<string name="title_section9">杭州市州</string>
<string name="title_section10">福州市</string>
<string name="title_section11">广州市</string>
<string name="title_section12">武汉市</string>
<string name="title_section13">南京市</string>
<string name="title_section14">长沙市</string>
<string name="title_section15">成都市</string>
<string name="title_section16">昆明市</string>
<string name="title_section17">石家庄市</string>
<string name="title_section18">合肥市</string>
<string name="navigation_drawer_open">Open navigation drawer</string>
<string name="navigation_drawer_close">Close navigation drawer</string>
<string name="action_example">软件简介</string>
<string name="action_settings">陈祥之作</string>
</resources>