From 3a161aeef6dfe08aa80fca6fb2c1650ebdd31d59 Mon Sep 17 00:00:00 2001 From: zuoxiao <470321431@qq.com> Date: 星期四, 01 二月 2024 15:29:19 +0800 Subject: [PATCH] 天气相关 --- app/src/main/java/com/dayu/pipirrapp/fragment/MainFragment.java | 108 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 107 insertions(+), 1 deletions(-) diff --git a/app/src/main/java/com/dayu/pipirrapp/fragment/MainFragment.java b/app/src/main/java/com/dayu/pipirrapp/fragment/MainFragment.java index c1d0285..9ebd68f 100644 --- a/app/src/main/java/com/dayu/pipirrapp/fragment/MainFragment.java +++ b/app/src/main/java/com/dayu/pipirrapp/fragment/MainFragment.java @@ -1,15 +1,121 @@ package com.dayu.pipirrapp.fragment; +import android.os.Bundle; +import android.os.Looper; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.lifecycle.Observer; + +import com.dayu.pipirrapp.bean.LatLonBean; +import com.dayu.pipirrapp.bean.WeatherResponse; +import com.dayu.pipirrapp.databinding.FragmentMainBinding; +import com.dayu.pipirrapp.net.ApiManager; +import com.dayu.pipirrapp.utils.ImageUtils; +import com.dayu.pipirrapp.utils.MyJsonParser; +import com.dayu.pipirrapp.utils.SharedPreferencesHelper; +import com.jeremyliao.liveeventbus.LiveEventBus; +import com.tencent.bugly.crashreport.CrashReport; + +import java.util.Calendar; +import java.util.Date; + +import retrofit2.Call; +import retrofit2.Callback; +import retrofit2.Response; + /** * author: zuo * Date: 2023/12/20 * Time: 10:12 * 澶囨敞锛氶椤� */ -public class MainFragment extends BaseFragment{ +public class MainFragment extends BaseFragment { + + FragmentMainBinding binding; + WeatherResponse weatherResponse; + //鏀跺埌瀹氫綅骞挎挱鍚庤幏鍙栧ぉ姘斾俊鎭� + Observer<LatLonBean> myObserver = new Observer<LatLonBean>() { + @Override + public void onChanged(LatLonBean latLonBean) { + + String jsonStr = SharedPreferencesHelper.getInstance(MainFragment.this.getActivity()).get("WeatherResponse", ""); + weatherResponse = MyJsonParser.getBeanFromJson(jsonStr, WeatherResponse.class); + if (weatherResponse == null) { + weatherResponse = new WeatherResponse(); + } + // 鑾峰彇褰撳墠鏃堕棿 + Calendar calendar = Calendar.getInstance(); + // 鑾峰彇褰撳墠骞存湀鏃� + int year = calendar.get(Calendar.YEAR); + int month = calendar.get(Calendar.MONTH) + 1; // 娉ㄦ剰鏈堜唤鏄粠0寮�濮嬭鏁扮殑锛屾墍浠ヨ鍔�1 + int day = calendar.get(Calendar.DAY_OF_MONTH); + String date = year + "骞�" + month + "鏈�" + day + "鏃�"; + if (weatherResponse == null || !date.equals(weatherResponse.getDate())) { + weatherResponse.setDate(date); + ApiManager.getInstance().requestWeather(latLonBean.getLatitude() + ":" + latLonBean.getLongitude(), new Callback<WeatherResponse>() { + @Override + public void onResponse(Call<WeatherResponse> call, Response<WeatherResponse> response) { + + if (response.isSuccessful()) { + weatherResponse.setResults(response.body().getResults()); + SharedPreferencesHelper.getInstance(MainFragment.this.getActivity()).put("WeatherResponse", weatherResponse); + setWeatherData(weatherResponse); + } + } + + @Override + public void onFailure(Call<WeatherResponse> call, Throwable t) { + + } + }); + } else { + setWeatherData(weatherResponse); + } + LiveEventBus.get("location", LatLonBean.class).removeObserver(myObserver); + } + }; + /** + * 璁剧疆澶╂皵鐩稿叧淇℃伅 + * + * @param data + */ + private void setWeatherData(WeatherResponse data) { + try { + if (data.getResults() != null) { + binding.cityName.setText(data.getResults()[0].getLocation().getName()); + binding.time.setText(data.getDate()); + int weatherImg = ImageUtils.getWeatherDrawable(data.getResults()[0].getDaily()[0].getCode_day()); + if (weatherImg != 0) { + binding.weatherImg.setImageDrawable(getResources().getDrawable(weatherImg)); + } + binding.weatherName.setText(data.getResults()[0].getDaily()[0].getText_day()); + binding.weatherTemperature.setText(data.getResults()[0].getDaily()[0].getLow() + "掳C 锝� " + data.getResults()[0].getDaily()[0].getHigh() + "掳C"); + } + } catch (Exception e) { + e.printStackTrace(); + CrashReport.postCatchedException(e); + } + } + @Override + public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + binding = FragmentMainBinding.inflate(inflater, container, false); + + + //鑾峰彇鍒扮粡绾害鍚庤幏鍙栧ぉ姘斾俊鎭� + LiveEventBus + .get("location", LatLonBean.class) + .observeForever(myObserver); + + return binding.getRoot(); + } + } -- Gitblit v1.8.0