diff --git a/app/build.gradle b/app/build.gradle index aca270e..7fa70d2 100755 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,16 +1,18 @@ apply plugin: 'com.android.application' +apply plugin: 'kotlin-android' +apply plugin: 'kotlin-android-extensions' +apply plugin: 'kotlin-kapt' android { - compileSdkVersion 26 - buildToolsVersion '26.0.1' + compileSdkVersion 28 defaultConfig { applicationId "com.example.android.sunshine" minSdkVersion 14 - targetSdkVersion 26 + targetSdkVersion 28 versionCode 1 versionName "1.0" - testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } buildTypes { release { @@ -18,7 +20,9 @@ android { } } - dataBinding.enabled = true + dataBinding { + enabled = true + } compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 @@ -28,21 +32,37 @@ android { // Versions number variables are defined in the module build.gradle file dependencies { - compile "com.android.support:appcompat-v7:$support_version" - compile "com.android.support:recyclerview-v7:$support_version" - compile "com.android.support:preference-v7:$support_version" - compile "com.android.support.constraint:constraint-layout:$constraint_layout_version" - compile "com.firebase:firebase-jobdispatcher:$firebase_jobdispatcher_version" - compile "android.arch.lifecycle:runtime:$arch_version" - compile "android.arch.lifecycle:extensions:$arch_version" - annotationProcessor "android.arch.lifecycle:compiler:$arch_version" - compile "android.arch.persistence.room:runtime:$arch_version" - annotationProcessor "android.arch.persistence.room:compiler:$arch_version" + // kotlin + implementation"org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" + + // androidx appcompat + implementation "androidx.appcompat:appcompat:$appcompat_version" + + // androidx core + implementation "androidx.core:core-ktx:$androidx_version" + + // android material + implementation "com.google.android.material:material:$androidx_version" + + // androidx constraint layout + implementation "androidx.constraintlayout:constraintlayout:$constraint_version" + + // firebase + implementation "com.firebase:firebase-jobdispatcher:$firebase_jobdispatcher_version" + + // lifecycle + implementation "android.arch.lifecycle:runtime:$arch_version" + implementation "android.arch.lifecycle:extensions:$arch_version" + kapt "android.arch.lifecycle:compiler:$arch_version" + + // room + implementation "android.arch.persistence.room:runtime:$arch_version" + kapt "android.arch.persistence.room:compiler:$arch_version" // Instrumentation dependencies use androidTestCompile" // (as opposed to testCompile for local unit tests run in the JVM" - androidTestCompile "junit:junit:$junit_version" - androidTestCompile "com.android.support:support-annotations:$support_version" - androidTestCompile "com.android.support.test:runner:$support_test_version" - androidTestCompile "com.android.support.test:rules:$support_test_version" + androidTestImplementation "junit:junit:$junit_version" + androidTestImplementation "androidx.annotation:annotation:$annotation_version" + androidTestImplementation "androidx.test:runner:$arch_version" + androidTestImplementation "androidx.test:rules:$arch_version" } diff --git a/app/src/main/java/com/example/android/sunshine/AppExecutors.java b/app/src/main/java/com/example/android/sunshine/AppExecutors.java index 0c3aa18..0ff2b4c 100644 --- a/app/src/main/java/com/example/android/sunshine/AppExecutors.java +++ b/app/src/main/java/com/example/android/sunshine/AppExecutors.java @@ -18,7 +18,7 @@ import android.os.Handler; import android.os.Looper; -import android.support.annotation.NonNull; +import androidx.annotation.NonNull; import java.util.concurrent.Executor; import java.util.concurrent.Executors; diff --git a/app/src/main/java/com/example/android/sunshine/data/SunshineRepository.java b/app/src/main/java/com/example/android/sunshine/data/SunshineRepository.java index 4ef393d..87f90bf 100644 --- a/app/src/main/java/com/example/android/sunshine/data/SunshineRepository.java +++ b/app/src/main/java/com/example/android/sunshine/data/SunshineRepository.java @@ -16,9 +16,9 @@ package com.example.android.sunshine.data; -import android.arch.lifecycle.LiveData; import android.util.Log; +import androidx.lifecycle.LiveData; import com.example.android.sunshine.AppExecutors; import com.example.android.sunshine.data.database.ListWeatherEntry; import com.example.android.sunshine.data.database.WeatherDao; diff --git a/app/src/main/java/com/example/android/sunshine/data/database/DateConverter.java b/app/src/main/java/com/example/android/sunshine/data/database/DateConverter.java index 13c01ba..486d5c1 100644 --- a/app/src/main/java/com/example/android/sunshine/data/database/DateConverter.java +++ b/app/src/main/java/com/example/android/sunshine/data/database/DateConverter.java @@ -16,7 +16,7 @@ package com.example.android.sunshine.data.database; -import android.arch.persistence.room.TypeConverter; +import androidx.room.TypeConverter; import java.util.Date; diff --git a/app/src/main/java/com/example/android/sunshine/data/database/SunshineDatabase.java b/app/src/main/java/com/example/android/sunshine/data/database/SunshineDatabase.java index 6a924d1..aa436fb 100644 --- a/app/src/main/java/com/example/android/sunshine/data/database/SunshineDatabase.java +++ b/app/src/main/java/com/example/android/sunshine/data/database/SunshineDatabase.java @@ -16,12 +16,12 @@ package com.example.android.sunshine.data.database; -import android.arch.persistence.room.Database; -import android.arch.persistence.room.Room; -import android.arch.persistence.room.RoomDatabase; -import android.arch.persistence.room.TypeConverters; import android.content.Context; import android.util.Log; +import androidx.room.Database; +import androidx.room.Room; +import androidx.room.RoomDatabase; +import androidx.room.TypeConverters; /** * {@link SunshineDatabase} database for the application including a table for {@link WeatherEntry} @@ -29,7 +29,7 @@ */ // List of the entry classes and associated TypeConverters -@Database(entities = {WeatherEntry.class}, version = 1) +@Database(entities = {WeatherEntry.class}, version = 1, exportSchema = false) @TypeConverters(DateConverter.class) public abstract class SunshineDatabase extends RoomDatabase { diff --git a/app/src/main/java/com/example/android/sunshine/data/database/WeatherDao.java b/app/src/main/java/com/example/android/sunshine/data/database/WeatherDao.java index e71df5f..b645535 100644 --- a/app/src/main/java/com/example/android/sunshine/data/database/WeatherDao.java +++ b/app/src/main/java/com/example/android/sunshine/data/database/WeatherDao.java @@ -16,11 +16,11 @@ package com.example.android.sunshine.data.database; -import android.arch.lifecycle.LiveData; -import android.arch.persistence.room.Dao; -import android.arch.persistence.room.Insert; -import android.arch.persistence.room.OnConflictStrategy; -import android.arch.persistence.room.Query; +import androidx.lifecycle.LiveData; +import androidx.room.Dao; +import androidx.room.Insert; +import androidx.room.OnConflictStrategy; +import androidx.room.Query; import java.util.Date; import java.util.List; diff --git a/app/src/main/java/com/example/android/sunshine/data/database/WeatherEntry.java b/app/src/main/java/com/example/android/sunshine/data/database/WeatherEntry.java index 200a745..496618b 100644 --- a/app/src/main/java/com/example/android/sunshine/data/database/WeatherEntry.java +++ b/app/src/main/java/com/example/android/sunshine/data/database/WeatherEntry.java @@ -16,11 +16,11 @@ package com.example.android.sunshine.data.database; -import android.arch.persistence.room.Entity; -import android.arch.persistence.room.Ignore; -import android.arch.persistence.room.Index; -import android.arch.persistence.room.PrimaryKey; -import android.arch.persistence.room.Room; + +import androidx.room.Entity; +import androidx.room.Ignore; +import androidx.room.Index; +import androidx.room.PrimaryKey; import java.util.Date; diff --git a/app/src/main/java/com/example/android/sunshine/data/network/OpenWeatherJsonParser.java b/app/src/main/java/com/example/android/sunshine/data/network/OpenWeatherJsonParser.java index a7e5fed..0d7af2a 100644 --- a/app/src/main/java/com/example/android/sunshine/data/network/OpenWeatherJsonParser.java +++ b/app/src/main/java/com/example/android/sunshine/data/network/OpenWeatherJsonParser.java @@ -15,8 +15,7 @@ */ package com.example.android.sunshine.data.network; -import android.support.annotation.Nullable; - +import androidx.annotation.Nullable; import com.example.android.sunshine.data.database.WeatherEntry; import com.example.android.sunshine.utilities.SunshineDateUtils; diff --git a/app/src/main/java/com/example/android/sunshine/data/network/WeatherNetworkDataSource.java b/app/src/main/java/com/example/android/sunshine/data/network/WeatherNetworkDataSource.java index 008573b..8a6e649 100644 --- a/app/src/main/java/com/example/android/sunshine/data/network/WeatherNetworkDataSource.java +++ b/app/src/main/java/com/example/android/sunshine/data/network/WeatherNetworkDataSource.java @@ -15,12 +15,12 @@ */ package com.example.android.sunshine.data.network; -import android.arch.lifecycle.LiveData; -import android.arch.lifecycle.MutableLiveData; import android.content.Context; import android.content.Intent; import android.util.Log; +import androidx.lifecycle.LiveData; +import androidx.lifecycle.MutableLiveData; import com.example.android.sunshine.AppExecutors; import com.example.android.sunshine.data.database.WeatherEntry; import com.firebase.jobdispatcher.Constraint; diff --git a/app/src/main/java/com/example/android/sunshine/data/network/WeatherResponse.java b/app/src/main/java/com/example/android/sunshine/data/network/WeatherResponse.java index c5e50cd..c551106 100644 --- a/app/src/main/java/com/example/android/sunshine/data/network/WeatherResponse.java +++ b/app/src/main/java/com/example/android/sunshine/data/network/WeatherResponse.java @@ -15,8 +15,7 @@ */ package com.example.android.sunshine.data.network; -import android.support.annotation.NonNull; - +import androidx.annotation.NonNull; import com.example.android.sunshine.data.database.WeatherEntry; /** diff --git a/app/src/main/java/com/example/android/sunshine/ui/detail/DetailActivity.java b/app/src/main/java/com/example/android/sunshine/ui/detail/DetailActivity.java index f3dc2b7..e01b7e9 100755 --- a/app/src/main/java/com/example/android/sunshine/ui/detail/DetailActivity.java +++ b/app/src/main/java/com/example/android/sunshine/ui/detail/DetailActivity.java @@ -15,11 +15,11 @@ */ package com.example.android.sunshine.ui.detail; -import android.arch.lifecycle.LifecycleActivity; -import android.arch.lifecycle.ViewModelProviders; -import android.databinding.DataBindingUtil; import android.os.Bundle; - +import androidx.appcompat.app.AppCompatActivity; +import androidx.databinding.DataBindingUtil; +import androidx.lifecycle.LifecycleOwner; +import androidx.lifecycle.ViewModelProviders; import com.example.android.sunshine.R; import com.example.android.sunshine.data.database.WeatherEntry; import com.example.android.sunshine.databinding.ActivityDetailBinding; @@ -32,7 +32,7 @@ /** * Displays single day's forecast */ -public class DetailActivity extends LifecycleActivity { +public class DetailActivity extends AppCompatActivity { public static final String WEATHER_ID_EXTRA = "WEATHER_ID_EXTRA"; diff --git a/app/src/main/java/com/example/android/sunshine/ui/detail/DetailActivityViewModel.java b/app/src/main/java/com/example/android/sunshine/ui/detail/DetailActivityViewModel.java index ddf3604..deb61b6 100644 --- a/app/src/main/java/com/example/android/sunshine/ui/detail/DetailActivityViewModel.java +++ b/app/src/main/java/com/example/android/sunshine/ui/detail/DetailActivityViewModel.java @@ -16,9 +16,8 @@ package com.example.android.sunshine.ui.detail; -import android.arch.lifecycle.LiveData; -import android.arch.lifecycle.ViewModel; - +import androidx.lifecycle.LiveData; +import androidx.lifecycle.ViewModel; import com.example.android.sunshine.data.SunshineRepository; import com.example.android.sunshine.data.database.WeatherEntry; diff --git a/app/src/main/java/com/example/android/sunshine/ui/detail/DetailViewModelFactory.java b/app/src/main/java/com/example/android/sunshine/ui/detail/DetailViewModelFactory.java index d6ec613..ccf6bce 100644 --- a/app/src/main/java/com/example/android/sunshine/ui/detail/DetailViewModelFactory.java +++ b/app/src/main/java/com/example/android/sunshine/ui/detail/DetailViewModelFactory.java @@ -16,8 +16,8 @@ package com.example.android.sunshine.ui.detail; -import android.arch.lifecycle.ViewModel; -import android.arch.lifecycle.ViewModelProvider; +import androidx.lifecycle.ViewModel; +import androidx.lifecycle.ViewModelProvider; import com.example.android.sunshine.data.database.WeatherEntry; import com.example.android.sunshine.data.SunshineRepository; diff --git a/app/src/main/java/com/example/android/sunshine/ui/list/ForecastAdapter.java b/app/src/main/java/com/example/android/sunshine/ui/list/ForecastAdapter.java index c500d16..c1719cd 100755 --- a/app/src/main/java/com/example/android/sunshine/ui/list/ForecastAdapter.java +++ b/app/src/main/java/com/example/android/sunshine/ui/list/ForecastAdapter.java @@ -16,15 +16,13 @@ package com.example.android.sunshine.ui.list; import android.content.Context; -import android.support.annotation.NonNull; -import android.support.v7.util.DiffUtil; -import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.TextView; +import androidx.annotation.NonNull; import com.example.android.sunshine.R; import com.example.android.sunshine.data.database.ListWeatherEntry; import com.example.android.sunshine.data.database.WeatherEntry; @@ -34,6 +32,9 @@ import java.util.Date; import java.util.List; +import androidx.recyclerview.widget.DiffUtil; +import androidx.recyclerview.widget.RecyclerView; + /** * Exposes a list of weather forecasts from a list of {@link WeatherEntry} to a {@link RecyclerView}. */ @@ -81,7 +82,7 @@ class ForecastAdapter extends RecyclerView.Adapter - - - - + \ No newline at end of file diff --git a/app/src/main/res/layout/forecast_list_item.xml b/app/src/main/res/layout/forecast_list_item.xml index dc13541..8676417 100644 --- a/app/src/main/res/layout/forecast_list_item.xml +++ b/app/src/main/res/layout/forecast_list_item.xml @@ -15,7 +15,7 @@ ~ limitations under the License. --> - - - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/layout/list_item_forecast_today.xml b/app/src/main/res/layout/list_item_forecast_today.xml index e739855..2bc7afb 100644 --- a/app/src/main/res/layout/list_item_forecast_today.xml +++ b/app/src/main/res/layout/list_item_forecast_today.xml @@ -26,7 +26,7 @@ - but again, we wanted to avoid making things too complicated. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> - - - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/layout/primary_weather_info.xml b/app/src/main/res/layout/primary_weather_info.xml index fec6304..2242601 100644 --- a/app/src/main/res/layout/primary_weather_info.xml +++ b/app/src/main/res/layout/primary_weather_info.xml @@ -26,7 +26,7 @@ xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools"> - @@ -34,7 +34,7 @@ - This Guideline divides the screen into a left half and a right half and is used to - - anchor the views to the middle of the screen. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> - - + \ No newline at end of file diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 8fe9873..d036fbc 100755 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -22,7 +22,6 @@ @color/colorPrimaryDark @color/colorAccent - @style/PreferenceThemeOverlay diff --git a/build.gradle b/build.gradle index e773608..39eb708 100755 --- a/build.gradle +++ b/build.gradle @@ -1,29 +1,31 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { + ext.kotlin_version = '1.3.21' repositories { google() jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:3.0.0-beta2' - + classpath 'com.android.tools.build:gradle:3.3.2' + classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } } -ext.arch_version = "1.0.0-alpha8" -ext.support_version = "26.0.1" -ext.constraint_layout_version = "1.1.0-beta1" +ext.arch_version = "1.1.1" ext.firebase_jobdispatcher_version = "0.7.0" ext.junit_version = "4.12" -ext.support_test_version = "1.0.0" +ext.androidx_version = "1.1.0-alpha05" +ext.appcompat_version = "1.1.0-alpha04" +ext.constraint_version = "1.1.3" +ext.annotation_version = "1.0.2" allprojects { repositories { jcenter() - maven { url 'https://maven.google.com' } + google() } } diff --git a/gradle.properties b/gradle.properties new file mode 100644 index 0000000..23339e0 --- /dev/null +++ b/gradle.properties @@ -0,0 +1,21 @@ +# Project-wide Gradle settings. +# IDE (e.g. Android Studio) users: +# Gradle settings configured through the IDE *will override* +# any settings specified in this file. +# For more details on how to configure your build environment visit +# http://www.gradle.org/docs/current/userguide/build_environment.html +# Specifies the JVM arguments used for the daemon process. +# The setting is particularly useful for tweaking memory settings. +org.gradle.jvmargs=-Xmx1536m +# When configured, Gradle will run in incubating parallel mode. +# This option should only be used with decoupled projects. More details, visit +# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects +# org.gradle.parallel=true +# AndroidX package structure to make it clearer which packages are bundled with the +# Android operating system, and which are packaged with your app's APK +# https://developer.android.com/topic/libraries/support-library/androidx-rn +android.useAndroidX=true +# Automatically convert third-party libraries to use AndroidX +android.enableJetifier=true +# Kotlin code style for this project: "official" or "obsolete": +kotlin.code.style=official diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index c8d55e4..b7ccf64 100755 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Thu Aug 03 09:55:05 PDT 2017 +#Fri May 03 23:32:23 MSK 2019 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-rc-1-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.1-all.zip