OSD600 - 나의 네 번째 Hacktoberfest 기여
1. 소개
이번 학기에는 Android 플랫폼용 모바일 애플리케이션 개발에 관한 Mobile App Development - Android(MAP524)에도 참석합니다. 모바일 앱 디자인에 관심이 많아서 Git Hub에서 Hacktoberfest 레이블이 있는 모든 Android 프로젝트를 검색했습니다. 운 좋게도 Androapps이라는 이름을 찾았습니다. 이 프로젝트에는 많은 개발자가 기여한 많은 Android 애플리케이션이 포함되어 있습니다. 그리고 나는 참여하기로 결정했습니다.
2. 문제
issue 저에게 할당된 작업은 날씨 예보 응용 프로그램을 만드는 것입니다. 관리자는 매우 태평합니다. 그는 앱이 어떻게 보여야 하는지에 대해 엄격하지 않았지만 저에게 창의력을 발휘할 수 있는 자유를 주었습니다.
3. 솔루션
내 응용 프로그램을 만들기 위해 수행한 단계는 다음과 같습니다.
UI 디자인
EditText
, 입력을 제출하는 Button
, 정보를 표시하는 일부TextView
로 간단한 UI를 디자인할 것입니다. 및 앱 배경용 ImageView
. 1) Volley 라이브러리를 사용하여 API에서 데이터를 요청합니다.
2) 응답에서 JSON 개체/데이터 가져오기:
// gets JSON objects
JSONObject mainWeather = response.getJSONObject("main");
JSONObject weather = response.getJSONArray("weather").getJSONObject(0);
JSONObject windInfo = response.getJSONObject("wind");
JSONObject sunInfo = response.getJSONObject("sys");
int humidity = mainWeather.getInt("humidity");
double windSpeed = windInfo.getDouble("speed");
3) 데이터 계산:
// converts unix time stamp to date
Date dateInfo = new Date(response.getLong("dt")*1000);
Date sunRiseD = new Date(sunInfo.getLong("sunrise") * 1000);
Date sunSetD = new Date(sunInfo.getLong("sunset") * 1000);
int timezone = response.getInt("timezone");
// formats output and changes timezone
@SuppressLint("SimpleDateFormat") SimpleDateFormat dateFormat = new SimpleDateFormat("EEEE, dd MMM yyyy");
dateFormat.setTimeZone(TimeZone.getTimeZone(ZoneOffset.ofTotalSeconds(timezone)));
@SuppressLint("SimpleDateFormat") SimpleDateFormat timeFormat = new SimpleDateFormat("HH:mm a");
timeFormat.setTimeZone(TimeZone.getTimeZone(ZoneOffset.ofTotalSeconds(timezone)));
int tempC = (int) (Math.round(mainWeather.getDouble("temp") - 273.15));
int feelTemp = (int)(Math.round(mainWeather.getDouble("feels_like") - 273.15));
4) 데이터를 UI에 적절하게 표시합니다.
currentDate.setText(dateStr);
currentTime.setText(timeStr);
temperature.setText(tempC + "°");
location.setText(city.toUpperCase());
displayWeather.setText(weather.getString("main"));
feels.setText("Feels like: " + feelTemp + "°C");
humid.setText(humidity + "%");
wind.setText(windSpeed + "m/s");
sunRise.setText(sunRiseStr);
sunSet.setText(sunSetStr);
5) 시간에 따른 글자색
ImageView
및 글자색을 설정하는 기능void setBackground(int hour, ImageView imgV){...}
View the app
메인테이너는 PR을 매우 빠르게 검토했고, 요구 사항 없이 내 PR을 병합했습니다.
앱에 대한 자세한 정보를 얻으려면 여기PR를 살펴보십시오.
4. 전반적으로
이 문제를 완료한 후 많은 새로운 정보를 얻었습니다. 고통스럽고 동시에 즐거웠습니다.
게시물을 읽어 주셔서 감사합니다.
즐거운 코딩!
Reference
이 문제에 관하여(OSD600 - 나의 네 번째 Hacktoberfest 기여), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/vivianvu/osd600-my-fourth-hacktoberfest-contribution-1a17텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)