自己最近慢慢摸索写了一个简约便捷的天气预报app,先发上来供大家参考和自己复习学习。## api ##首先我们需要一个api,我采用的是百度天气的api,具体步骤大家可以参考http://lbsyun.baidu.com/index.php?title=car/api/weather
<LinearLayout android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="@drawable/bj2"
xmlns:android="http://schemas.android.com/apk/res/android">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="80dp"
android:orientation="horizontal">
<ImageView
android:id="@+id/imgtop"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/duoyun"
android:layout_marginLeft="10dp"
android:layout_marginTop="20dp"
/>
<TextView
android:id="@+id/wendu"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="50dp"
android:layout_marginTop="20dp"
android:textColor="@color/colorAccent"
/>
<EditText
android:id="@+id/etcityname"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:textColor="#ffffff"
android:hint="输入城市名称"
android:textColorHint="#ffffff"
android:textSize="24dp"/>
<Button
android:id="@+id/sousuo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="24dp"
android:textColor="#ffffff"
android:text="搜索"/>
LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="50dp"
android:orientation="horizontal"
android:gravity="center">
<TextView
android:id="@+id/date"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#ffffff"
/>
LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="100dp"
android:gravity="center">
<TextView
android:id="@+id/city"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="80dp"
android:textColor="#ffffff"/>
LinearLayout>
<TextView
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="#ffffff"/>
<ScrollView
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="100dp"
android:layout_marginTop="5dp"
android:orientation="horizontal">
<LinearLayout
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:layout_width="match_parent"
android:layout_height="30dp"
android:text="wind"
android:gravity="center"
android:textColor="#ffffff"
android:textSize="20dp"/>
<TextView
android:id="@+id/wind"
android:layout_width="match_parent"
android:layout_height="60dp"
android:textSize="20dp"
android:textColor="#ffffff"
android:gravity="center"/>
LinearLayout>
<TextView
android:layout_width="1dp"
android:layout_height="match_parent"
android:background="#55000000" />
<LinearLayout
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:layout_width="match_parent"
android:layout_height="30dp"
android:text="weather"
android:gravity="center"
android:textColor="#ffffff"
android:textSize="20dp"/>
<TextView
android:id="@+id/temperature"
android:layout_width="match_parent"
android:layout_height="60dp"
android:textSize="20dp"
android:textColor="#ffffff"
android:gravity="center"/>
LinearLayout>
<TextView
android:layout_width="1dp"
android:layout_height="match_parent"
android:background="#55000000" />
<LinearLayout
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:layout_width="match_parent"
android:layout_height="30dp"
android:text="PM2.5"
android:gravity="center"
android:textColor="#ffffff"
android:textSize="20dp"/>
<TextView
android:id="@+id/pm25"
android:layout_width="match_parent"
android:layout_height="60dp"
android:textSize="20dp"
android:textColor="#ffffff"
android:gravity="center"/>
LinearLayout>
<TextView
android:layout_width="1dp"
android:layout_height="match_parent"
android:background="#55000000" />
LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="#ffffff"/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:text="指数"
android:textSize="40dp"
android:textColor="@color/colorAccent"/>
<TextView
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="#ffffff"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="100dp"
android:layout_height="wrap_content"
android:textColor="#ffffff"
android:gravity="center"
android:textSize="24dp"
android:text="穿衣"/>
<TextView
android:id="@+id/chuanyi"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#ffffff"
android:textSize="20dp"
android:layout_marginLeft="10dp"
android:text="适合穿衣"/>
LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="100dp"
android:layout_height="wrap_content"
android:textColor="#ffffff"
android:gravity="center"
android:textSize="24dp"
android:text="洗车"/>
<TextView
android:id="@+id/xiche"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#ffffff"
android:textSize="20dp"
android:layout_marginLeft="10dp"
android:text="适合穿衣"/>
LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="100dp"
android:layout_height="wrap_content"
android:textColor="#ffffff"
android:textSize="24dp"
android:gravity="center"
android:text="运动"/>
<TextView
android:id="@+id/ganmao"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#ffffff"
android:textSize="20dp"
android:layout_marginLeft="10dp"
android:text="适合穿衣"/>
LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="100dp"
android:layout_height="wrap_content"
android:textColor="#ffffff"
android:textSize="24dp"
android:gravity="center"
android:text="感冒"/>
<TextView
android:id="@+id/yundong"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#ffffff"
android:textSize="20dp"
android:layout_marginLeft="10dp"
android:text="适合穿衣"/>
LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="100dp"
android:layout_height="wrap_content"
android:textColor="#ffffff"
android:gravity="center"
android:textSize="24dp"
android:text="紫外线"/>
<TextView
android:id="@+id/ziwaixian"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#ffffff"
android:textSize="20dp"
android:layout_marginLeft="10dp"
android:text="适合穿衣"/>
LinearLayout>
LinearLayout>
<TextView
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="#ffffff"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<LinearLayout
android:layout_weight="1"
android:orientation="vertical"
android:layout_width="0dp"
android:layout_height="wrap_content">
<TextView
android:layout_gravity="center"
android:id="@+id/diertian"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="24dp"
android:textColor="#ffffff"/>
<ImageView
android:layout_gravity="center"
android:id="@+id/imdiertian"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/duoyun"/>
<TextView
android:layout_gravity="center"
android:id="@+id/wdiertian"
android:layout_width="wrap_content"
android:layout_height="45dp"
android:textColor="#ffffff"
android:textSize="20dp"/>
<TextView
android:layout_gravity="center"
android:id="@+id/tdiertian"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#ffffff"
android:textSize="20dp"/>
LinearLayout>
<LinearLayout
android:layout_weight="1"
android:orientation="vertical"
android:layout_width="0dp"
android:layout_height="wrap_content">
<TextView
android:id="@+id/disantian"
android:layout_gravity="center"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="24dp"
android:textColor="#ffffff"/>
<ImageView
android:id="@+id/imdisantian"
android:layout_gravity="center"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/duoyun"/>
<TextView
android:layout_gravity="center"
android:id="@+id/wdisantian"
android:layout_width="wrap_content"
android:layout_height="45dp"
android:textColor="#ffffff"
android:textSize="20dp"/>
<TextView
android:id="@+id/tdisantian"
android:layout_gravity="center"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#ffffff"
android:textSize="20dp"/>
LinearLayout>
<LinearLayout
android:layout_weight="1"
android:orientation="vertical"
android:layout_width="0dp"
android:layout_height="wrap_content">
<TextView
android:id="@+id/disitian"
android:layout_gravity="center"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="24dp"
android:textColor="#ffffff"/>
<ImageView
android:id="@+id/imdisitian"
android:layout_gravity="center"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/duoyun"/>
<TextView
android:layout_gravity="center"
android:id="@+id/wdisitian"
android:layout_width="wrap_content"
android:layout_height="45dp"
android:textColor="#ffffff"
android:textSize="20dp"/>
<TextView
android:id="@+id/tdisitian"
android:layout_gravity="center"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#ffffff"
android:textSize="20dp"/>
LinearLayout>
LinearLayout>
LinearLayout>
ScrollView>
LinearLayout>
主要是LinearLayout和一个ScrollView的嵌套很简单就不多说了。
/20:40:90:AE:E8:19:FD:95:21:F2:CD:D5:72:D3:EE:CB:38:F9:B7:9C这是发布版SHA1,com.example.administrator.zhuanjia这是包名/
private void sendRequestWithHttpURLConnection() { // 开启线程来发起网络请求
new Thread(new Runnable() {
@Override
public void run() {
HttpURLConnection connection = null;
StringBuilder cityname=new StringBuilder();
try {
cityname.append(“http://api.map.baidu.com/telematics/v3/weather?location=“).
append(URLEncoder.encode(etcityname.getText().toString(),”UTF-8”)).
append(“&mcode=20:40:90:AE:E8:19:FD:95:21:F2:CD:D5:72:D3:EE:CB:38:F9:B7:9C;com.example.administrator.zhuanjia&output=json&ak=P0SE4gI053GYaVRONbWwR8Bz13a5OwiC”);
URL url = new URL(cityname.toString());
connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod(“GET”);
connection.setConnectTimeout(8000);
connection.setReadTimeout(8000);
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);
}
Message message = new Message();
message.what = SHOW_RESPONSE;
// 将服务器返回的结果存放到Message中
message.obj = response.toString();
handler.sendMessage(message);
} catch (Exception e) {
e.printStackTrace();
} finally {
//if (connection != null) {
// connection.disconnect();
//}
}
}
}).start();
}
public List
private Handler handler=new Handler(){
public void handleMessage(Message msg) {
switch (msg.what) {
case SHOW_RESPONSE:
String response = (String) msg.obj; // 在这里进行UI操作,将结果显示到界面上
Util util = new Util();
try {
List> all = util
.getInformation(response);
Iterator> iterator = all.iterator();
while (iterator.hasNext()) {
Map map = iterator.next();
//Log.d("天气", map.get("weather").toString());
city.setText(map.get("location")
.toString());
backgrand(imgtop,map.get("weather")
.toString());
pm25.setText(map.get("pm25").toString());
chuanyi.setText(map.get("chuanyi").toString());
xiche.setText(map.get("xiche").toString());
ganmao.setText(map.get("ganmao").toString());
yundong.setText(map.get("yundong").toString());
ziwaixian.setText(map.get("ziwaixian").toString());
wind.setText(map.get("wind").toString());
temperature.setText(map.get("temperature").toString());
date.setText(map.get("date").toString());
diertian.setText(map.get("date1").toString());
tdiertian.setText(map.get("temperature1").toString());
disantian.setText(map.get("date2").toString());
tdisantian.setText(map.get("temperature2").toString());
disitian.setText(map.get("date3").toString());
tdisitian.setText(map.get("temperature3").toString());
wdiertian.setText(map.get("weather1").toString());
wdisantian.setText(map.get("weather2").toString());
wdisitian.setText(map.get("weather3").toString());
backgrand(imdiertian,map.get("weather1")
.toString());
backgrand(imdisantian,map.get("weather2")
.toString());
backgrand(imdisitian,map.get("weather3")
.toString());
}
} catch (Exception e) {
e.printStackTrace();
}
} }
};
上面就是我的主要代码,本人菜鸟一枚如有错误或者不妥请大家指正,我的源码在我的github上欢迎大家关注我https://github.com/zkandroid/zhuanjia