From 6468827290ce449d4175b5805c5a8da1bdfb4707 Mon Sep 17 00:00:00 2001 From: takahirom Date: Wed, 27 Dec 2017 23:27:11 +0900 Subject: [PATCH] Apply design partially and Adjust layout and styles for sessions --- .../confsched2018/presentation/App.kt | 6 +++ .../common/binding/ImageBinding.kt | 11 ++++ .../favorite/FavoriteSessionsFragment.kt | 2 + .../presentation/search/SearchFragment.kt | 2 + .../search/item/HorizontalSessionItem.kt | 5 +- .../sessions/AllSessionsFragment.kt | 3 ++ .../sessions/RoomSessionsFragment.kt | 2 + .../presentation/sessions/item/SessionItem.kt | 2 +- .../confsched2018/util/ext/ContextExt.kt | 7 ++- ...24dp.xml => ic_filter_list_white_24dp.xml} | 2 +- .../main/res/drawable/shape_circle_button.xml | 6 +++ .../main/res/drawable/shape_round_corner.xml | 2 +- app/src/main/res/layout/activity_main.xml | 1 + .../main/res/layout/fragment_all_sessions.xml | 12 +---- .../res/layout/fragment_room_sessions.xml | 10 +--- app/src/main/res/layout/fragment_search.xml | 11 +--- app/src/main/res/layout/fragment_sessions.xml | 1 + .../res/layout/item_horizontal_session.xml | 7 +-- app/src/main/res/layout/item_session.xml | 50 ++++++------------- app/src/main/res/menu/search.xml | 2 +- app/src/main/res/values/colors.xml | 17 +++++-- app/src/main/res/values/styles.xml | 33 +++++++++--- app/src/main/res/values/themes.xml | 13 +++++ 23 files changed, 119 insertions(+), 88 deletions(-) rename app/src/main/res/drawable/{ic_filter_list_black_24dp.xml => ic_filter_list_white_24dp.xml} (88%) create mode 100644 app/src/main/res/drawable/shape_circle_button.xml create mode 100644 app/src/main/res/values/themes.xml diff --git a/app/src/main/java/io/github/droidkaigi/confsched2018/presentation/App.kt b/app/src/main/java/io/github/droidkaigi/confsched2018/presentation/App.kt index 421273cc..edcb2f7f 100644 --- a/app/src/main/java/io/github/droidkaigi/confsched2018/presentation/App.kt +++ b/app/src/main/java/io/github/droidkaigi/confsched2018/presentation/App.kt @@ -3,6 +3,7 @@ package io.github.droidkaigi.confsched2018.presentation import android.annotation.SuppressLint import android.app.Activity import android.support.multidex.MultiDexApplication +import android.support.v7.app.AppCompatDelegate import com.facebook.stetho.Stetho import com.google.firebase.FirebaseApp import com.google.firebase.firestore.FirebaseFirestore @@ -22,6 +23,7 @@ open class App : MultiDexApplication(), HasActivityInjector { super.onCreate() setupTimber() setupFirebase() + setupVectorDrawable() setupThreeTenABP() setupLeakCanary() setupDagger() @@ -42,6 +44,10 @@ open class App : MultiDexApplication(), HasActivityInjector { } } + private fun setupVectorDrawable() { + AppCompatDelegate.setCompatVectorFromResourcesEnabled(true) + } + private fun setupThreeTenABP() { AndroidThreeTen.init(this) } diff --git a/app/src/main/java/io/github/droidkaigi/confsched2018/presentation/common/binding/ImageBinding.kt b/app/src/main/java/io/github/droidkaigi/confsched2018/presentation/common/binding/ImageBinding.kt index ce3a7f25..4e13af65 100644 --- a/app/src/main/java/io/github/droidkaigi/confsched2018/presentation/common/binding/ImageBinding.kt +++ b/app/src/main/java/io/github/droidkaigi/confsched2018/presentation/common/binding/ImageBinding.kt @@ -1,7 +1,11 @@ package io.github.droidkaigi.confsched2018.presentation.common.binding +import android.databinding.BindingAdapter import android.databinding.BindingMethod import android.databinding.BindingMethods +import android.graphics.drawable.Drawable +import android.support.annotation.ColorInt +import android.support.v4.graphics.drawable.DrawableCompat import android.widget.ImageView @BindingMethods( @@ -10,3 +14,10 @@ import android.widget.ImageView method = "setImageDrawable")) class ImageBinding {} +@BindingAdapter("bind:colorTint", "app:srcCompat") +fun ImageView.setColorTint(@ColorInt color: Int, drawable: Drawable) { + drawable ?: return + val wrappedDrawable = DrawableCompat.wrap(drawable.mutate()) + DrawableCompat.setTint(wrappedDrawable, color) + setImageDrawable(wrappedDrawable) +} diff --git a/app/src/main/java/io/github/droidkaigi/confsched2018/presentation/favorite/FavoriteSessionsFragment.kt b/app/src/main/java/io/github/droidkaigi/confsched2018/presentation/favorite/FavoriteSessionsFragment.kt index 9b651637..ac95e8ea 100644 --- a/app/src/main/java/io/github/droidkaigi/confsched2018/presentation/favorite/FavoriteSessionsFragment.kt +++ b/app/src/main/java/io/github/droidkaigi/confsched2018/presentation/favorite/FavoriteSessionsFragment.kt @@ -9,6 +9,7 @@ import android.support.transition.TransitionManager import android.support.v4.app.Fragment import android.support.v7.widget.LinearLayoutManager import android.support.v7.widget.RecyclerView +import android.support.v7.widget.SimpleItemAnimator import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -95,6 +96,7 @@ class FavoriteSessionsFragment : Fragment(), Injectable { } binding.sessionsRecycler.apply { adapter = groupAdapter + (itemAnimator as SimpleItemAnimator).supportsChangeAnimations = false addOnScrollListener( onScrollStateChanged = { _: RecyclerView?, newState: Int -> diff --git a/app/src/main/java/io/github/droidkaigi/confsched2018/presentation/search/SearchFragment.kt b/app/src/main/java/io/github/droidkaigi/confsched2018/presentation/search/SearchFragment.kt index cb1c8c54..f3c01799 100644 --- a/app/src/main/java/io/github/droidkaigi/confsched2018/presentation/search/SearchFragment.kt +++ b/app/src/main/java/io/github/droidkaigi/confsched2018/presentation/search/SearchFragment.kt @@ -14,6 +14,7 @@ import android.support.v4.app.FragmentStatePagerAdapter import android.support.v7.widget.LinearLayoutManager import android.support.v7.widget.RecyclerView import android.support.v7.widget.SearchView +import android.support.v7.widget.SimpleItemAnimator import android.view.* import com.xwray.groupie.GroupAdapter import com.xwray.groupie.ViewHolder @@ -95,6 +96,7 @@ class SearchFragment : Fragment(), Injectable { } binding.sessionsRecycler.apply { adapter = groupAdapter + (itemAnimator as SimpleItemAnimator).supportsChangeAnimations = false addOnScrollListener( onScrollStateChanged = { _: RecyclerView?, newState: Int -> diff --git a/app/src/main/java/io/github/droidkaigi/confsched2018/presentation/search/item/HorizontalSessionItem.kt b/app/src/main/java/io/github/droidkaigi/confsched2018/presentation/search/item/HorizontalSessionItem.kt index cb785d57..b1381220 100644 --- a/app/src/main/java/io/github/droidkaigi/confsched2018/presentation/search/item/HorizontalSessionItem.kt +++ b/app/src/main/java/io/github/droidkaigi/confsched2018/presentation/search/item/HorizontalSessionItem.kt @@ -11,7 +11,7 @@ import io.github.droidkaigi.confsched2018.model.Session import io.github.droidkaigi.confsched2018.util.CustomGlideApp import io.github.droidkaigi.confsched2018.util.ViewSizeCalculator.calculateViewSizeByScreenAndCount import io.github.droidkaigi.confsched2018.util.ext.context -import io.github.droidkaigi.confsched2018.util.ext.getDisplaySize +import io.github.droidkaigi.confsched2018.util.ext.displaySize import io.github.droidkaigi.confsched2018.util.ext.getFloat import io.github.droidkaigi.confsched2018.util.ext.toGone import io.github.droidkaigi.confsched2018.util.lang @@ -29,7 +29,7 @@ class HorizontalSessionItem( val binding = viewHolder.binding val width = calculateViewSizeByScreenAndCount( - binding.context.getDisplaySize().width, + binding.context.displaySize().width, binding.context.resources.getFloat(R.dimen.horizontal_visible_item_count)) itemView.layoutParams.width = width return viewHolder @@ -85,5 +85,4 @@ class HorizontalSessionItem( return session.hashCode() } - } diff --git a/app/src/main/java/io/github/droidkaigi/confsched2018/presentation/sessions/AllSessionsFragment.kt b/app/src/main/java/io/github/droidkaigi/confsched2018/presentation/sessions/AllSessionsFragment.kt index 506d868b..0ac7ad64 100644 --- a/app/src/main/java/io/github/droidkaigi/confsched2018/presentation/sessions/AllSessionsFragment.kt +++ b/app/src/main/java/io/github/droidkaigi/confsched2018/presentation/sessions/AllSessionsFragment.kt @@ -9,6 +9,7 @@ import android.support.transition.TransitionManager import android.support.v4.app.Fragment import android.support.v7.widget.LinearLayoutManager import android.support.v7.widget.RecyclerView +import android.support.v7.widget.SimpleItemAnimator import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -27,6 +28,7 @@ import io.github.droidkaigi.confsched2018.util.ext.setTextIfChanged import timber.log.Timber import javax.inject.Inject + class AllSessionsFragment : Fragment(), Injectable { private lateinit var binding: FragmentAllSessionsBinding @@ -95,6 +97,7 @@ class AllSessionsFragment : Fragment(), Injectable { } binding.sessionsRecycler.apply { adapter = groupAdapter + (itemAnimator as SimpleItemAnimator).supportsChangeAnimations = false addOnScrollListener( onScrollStateChanged = { _: RecyclerView?, newState: Int -> diff --git a/app/src/main/java/io/github/droidkaigi/confsched2018/presentation/sessions/RoomSessionsFragment.kt b/app/src/main/java/io/github/droidkaigi/confsched2018/presentation/sessions/RoomSessionsFragment.kt index 3443f3c5..341e101a 100644 --- a/app/src/main/java/io/github/droidkaigi/confsched2018/presentation/sessions/RoomSessionsFragment.kt +++ b/app/src/main/java/io/github/droidkaigi/confsched2018/presentation/sessions/RoomSessionsFragment.kt @@ -9,6 +9,7 @@ import android.support.transition.TransitionManager import android.support.v4.app.Fragment import android.support.v7.widget.LinearLayoutManager import android.support.v7.widget.RecyclerView +import android.support.v7.widget.SimpleItemAnimator import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -103,6 +104,7 @@ class RoomSessionsFragment : Fragment(), Injectable { } binding.sessionsRecycler.apply { adapter = groupAdapter + (itemAnimator as SimpleItemAnimator).supportsChangeAnimations = false addOnScrollListener( onScrollStateChanged = { _: RecyclerView?, newState: Int -> diff --git a/app/src/main/java/io/github/droidkaigi/confsched2018/presentation/sessions/item/SessionItem.kt b/app/src/main/java/io/github/droidkaigi/confsched2018/presentation/sessions/item/SessionItem.kt index cecc017e..59091dce 100644 --- a/app/src/main/java/io/github/droidkaigi/confsched2018/presentation/sessions/item/SessionItem.kt +++ b/app/src/main/java/io/github/droidkaigi/confsched2018/presentation/sessions/item/SessionItem.kt @@ -21,7 +21,7 @@ data class SessionItem( override fun bind(viewBinding: ItemSessionBinding, position: Int) { viewBinding.session = session - viewBinding.topic.text = session.topic.getNameByLang(lang()) + viewBinding.topic.text = session.topic.name viewBinding.level.text = session.level.getNameByLang(lang()) val speakerImages = arrayOf( viewBinding.speakerImage1, diff --git a/app/src/main/java/io/github/droidkaigi/confsched2018/util/ext/ContextExt.kt b/app/src/main/java/io/github/droidkaigi/confsched2018/util/ext/ContextExt.kt index 1eca1744..136cb66b 100644 --- a/app/src/main/java/io/github/droidkaigi/confsched2018/util/ext/ContextExt.kt +++ b/app/src/main/java/io/github/droidkaigi/confsched2018/util/ext/ContextExt.kt @@ -2,14 +2,17 @@ package io.github.droidkaigi.confsched2018.util.ext import android.content.Context import android.graphics.Point +import android.support.annotation.ColorRes +import android.support.v4.content.ContextCompat import android.view.WindowManager - -fun Context.getDisplaySize(): Size { +fun Context.displaySize(): Size { val point = Point() val manager = getSystemService(Context.WINDOW_SERVICE) as WindowManager manager.defaultDisplay.getSize(point) return Size(point.x, point.y) } +fun Context.color(@ColorRes color: Int): Int = ContextCompat.getColor(this, color) + data class Size(val width: Int, val height: Int) diff --git a/app/src/main/res/drawable/ic_filter_list_black_24dp.xml b/app/src/main/res/drawable/ic_filter_list_white_24dp.xml similarity index 88% rename from app/src/main/res/drawable/ic_filter_list_black_24dp.xml rename to app/src/main/res/drawable/ic_filter_list_white_24dp.xml index ebaf89de..e4df2490 100644 --- a/app/src/main/res/drawable/ic_filter_list_black_24dp.xml +++ b/app/src/main/res/drawable/ic_filter_list_white_24dp.xml @@ -5,7 +5,7 @@ android:viewportWidth="24.0" > diff --git a/app/src/main/res/drawable/shape_circle_button.xml b/app/src/main/res/drawable/shape_circle_button.xml new file mode 100644 index 00000000..871e1824 --- /dev/null +++ b/app/src/main/res/drawable/shape_circle_button.xml @@ -0,0 +1,6 @@ + + + + diff --git a/app/src/main/res/drawable/shape_round_corner.xml b/app/src/main/res/drawable/shape_round_corner.xml index 6e044b13..87fad9c6 100644 --- a/app/src/main/res/drawable/shape_round_corner.xml +++ b/app/src/main/res/drawable/shape_round_corner.xml @@ -8,5 +8,5 @@ android:topLeftRadius="30dp" android:topRightRadius="30dp" /> - + diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index d53e0526..8cf3d7de 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -31,6 +31,7 @@ app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" + app:titleTextColor="@color/app_bar_text_color" /> - - - - @@ -235,14 +212,17 @@ diff --git a/app/src/main/res/menu/search.xml b/app/src/main/res/menu/search.xml index 4e70d3a7..1b5c1e7c 100644 --- a/app/src/main/res/menu/search.xml +++ b/app/src/main/res/menu/search.xml @@ -10,7 +10,7 @@ /> diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index 0c1b301c..9c9a7a10 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -1,8 +1,17 @@ - #3F51B5 - #303F9F - #FF4081 + #FBC812 + #FEAD22 + #F57C00 + + #f2f2f2 + + #d7a611 + #FFF + + #FFF + + #8a000000 + #f6f6f6 - #f2f2f2 diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 03f90016..0addaa04 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -1,12 +1,31 @@ - - + + + + + diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml new file mode 100644 index 00000000..59fd9aea --- /dev/null +++ b/app/src/main/res/values/themes.xml @@ -0,0 +1,13 @@ + + + + + +