最终作业_定位天气(2)之天气查询

本文介绍了一个结合定位功能的天气查询应用程序实现方案,包括通过百度地图API获取用户当前位置,并利用HTTP请求查询并展示不同城市的天气预报。该应用还设计了导航抽屉以方便选择不同的城市进行天气查询。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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.java
package 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>








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值