利用android studio来写简单的天气预报代码
时间: 2023-10-05 17:14:01 浏览: 91
基于android平台的天气预报程序代码
4星 · 用户满意度95%
好的,以下是一个简单的天气预报应用的代码示例(仅供参考):
1. 首先需要在 Android Studio 中创建一个新的项目,命名为 WeatherApp。
2. 在 app/build.gradle 文件中添加以下依赖:
```
implementation 'com.android.volley:volley:1.1.1'
implementation 'com.google.code.gson:gson:2.8.6'
```
这些依赖项是为了使用 Volley 库进行网络请求和 GSON 库来解析 JSON 数据。
3. 在 layout 目录下创建一个新的布局文件 activity_main.xml,代码如下:
```xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<EditText
android:id="@+id/city_edit_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Enter city name"/>
<Button
android:id="@+id/get_weather_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Get weather"/>
<TextView
android:id="@+id/weather_text_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="16dp"/>
</LinearLayout>
```
这个布局包含一个编辑文本框、一个按钮和一个文本视图,用于显示天气信息。
4. 在 MainActivity.java 文件中添加以下代码:
```java
public class MainActivity extends AppCompatActivity {
private EditText cityEditText;
private Button getWeatherButton;
private TextView weatherTextView;
private String url = "https://api.openweathermap.org/data/2.5/weather?q=%s&appid=%s&units=metric";
private String apiKey = "YOUR_API_KEY";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
cityEditText = findViewById(R.id.city_edit_text);
getWeatherButton = findViewById(R.id.get_weather_button);
weatherTextView = findViewById(R.id.weather_text_view);
getWeatherButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String city = cityEditText.getText().toString();
if (!TextUtils.isEmpty(city)) {
String requestUrl = String.format(url, city, apiKey);
getWeather(requestUrl);
}
}
});
}
private void getWeather(String url) {
JsonObjectRequest request = new JsonObjectRequest(Request.Method.GET, url, null,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
try {
JSONObject main = response.getJSONObject("main");
double temp = main.getDouble("temp");
double feelsLike = main.getDouble("feels_like");
int humidity = main.getInt("humidity");
String weatherInfo = String.format("Temperature: %.1f°C\nFeels like: %.1f°C\nHumidity: %d%%",
temp, feelsLike, humidity);
weatherTextView.setText(weatherInfo);
} catch (JSONException e) {
e.printStackTrace();
}
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(MainActivity.this, "Error: " + error.getMessage(), Toast.LENGTH_SHORT).show();
}
});
Volley.newRequestQueue(this).add(request);
}
}
```
这个代码主要包括以下部分:
- 在 onCreate() 方法中,获取文本框、按钮和文本视图的引用,并在按钮上设置点击监听器,当用户点击按钮时,使用 Volley 库向 OpenWeatherMap API 发送 GET 请求,获取天气信息。
- 在 getWeather() 方法中,创建一个 JsonObjectRequest 对象并将其添加到 Volley 请求队列中。这个请求会使用指定的 URL 向 OpenWeatherMap API 发送 GET 请求,并在响应成功时解析 JSON 数据并将其显示在文本视图中。如果出现错误,将显示一个 Toast 消息。
- 在 onResponse() 方法中,从响应的 JSON 数据中提取温度、体感温度和湿度,并将其格式化为一个字符串,然后将其设置为文本视图的文本。
- 在 onErrorResponse() 方法中,如果出现错误,将显示一个包含错误消息的 Toast 消息。
注意:在这个代码示例中,需要替换 apiKey 变量为你自己的 OpenWeatherMap API 密钥。
5. 最后,运行应用程序并在文本框中输入城市名称,然后点击按钮获取天气信息。如果一切正常,应该会在文本视图中看到温度、体感温度和湿度的信息。
这只是一个简单的示例,实际的天气预报应用程序可能需要更多的功能和复杂的 UI 设计。
阅读全文