diff --git a/app/src/main/java/com/woka/home/HomeActivity.kt b/app/src/main/java/com/woka/home/HomeActivity.kt index 76c56b1..5909efd 100644 --- a/app/src/main/java/com/woka/home/HomeActivity.kt +++ b/app/src/main/java/com/woka/home/HomeActivity.kt @@ -32,19 +32,30 @@ import com.woka.home.fragments.Home2Fragment import com.woka.home.fragments.MyListFragment import com.woka.mvvm.userDataModels.UserDataResponse import com.woka.networking.ApiResult +import com.woka.onboard.OnboardActivity +import com.woka.onboard.OnboardActivity.Companion.LOG_IN_INTENT +import com.woka.onboard.OnboardActivity.Companion.ONBOARD_ACTIVITY_INTENT +import com.woka.utils.DecisionDialog import com.woka.utils.LOCALE_ENGLISH import com.woka.utils.LOCALE_HINDI +import com.woka.utils.ProgressView import com.woka.utils.TAG +import com.woka.utils.UserType import com.woka.utils.WokaBaseActivity import com.woka.utils.changeLocale +import com.woka.utils.hide +import com.woka.utils.show +import com.woka.utils.toast class HomeActivity : WokaBaseActivity(), - Observer>, + Observer?>, BottomNavigation.OnBottomTabSelectListener { private lateinit var binding: ActivityHomeBinding private lateinit var viewModel: HomeViewModel + private lateinit var progressView: ProgressView + private lateinit var decisionDialog: DecisionDialog private var minuteReceiver: BroadcastReceiver? = null private var currentBackground: TimePeriod? = null @@ -66,9 +77,32 @@ class HomeActivity : WokaBaseActivity(), WindowCompat.getInsetsController(window, window.decorView).isAppearanceLightStatusBars = false viewModel = ViewModelProvider(this)[HomeViewModel::class.java] + progressView = ProgressView(this) + decisionDialog = DecisionDialog(this) userPrefs?.userLiveData?.observe(this, this) + viewModel.logoutLiveData.observe(this){ + when(it){ + is ApiResult.Error -> { + progressView.hide() + toast(it.errorMessage) + } + is ApiResult.Loading -> { + progressView.show(getString(R.string.logging_you_out)) + } + is ApiResult.Success -> { + startActivity(Intent(this, OnboardActivity::class.java).apply { + addFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK) + }) + finish() + + userPrefs?.logout() + } + null -> {} + } + } + minuteReceiver = object : BroadcastReceiver(){ override fun onReceive(context: Context?, intent: Intent?) { // this function is called every minute @@ -83,6 +117,10 @@ class HomeActivity : WokaBaseActivity(), initViews() clickEvents() + + if (userPrefs?.userLiveData?.isInitialized == false){ + userPrefs?.loadUserData() + } } override fun onBackPressed() { @@ -105,11 +143,43 @@ class HomeActivity : WokaBaseActivity(), bottomNav.setOnBottomTabSelectListener(this@HomeActivity) bottomNav.selectTab(viewModel.selectedBottomTab) + + sbBtn.text = if (userPrefs?.userType == UserType.GUEST || userPrefs?.userType == UserType.NONE){ + + // hiding menu options + sbDeActivateAccount.hide() + sbMyOrders.hide() + sbMyProfile.hide() + + notifications.hide() + + getString(R.string.login_register) + }else{ + // hiding menu options + sbDeActivateAccount.show() + sbMyOrders.show() + sbMyProfile.show() + + notifications.show() + + getString(R.string.logout) + } } viewModel.localeChangeLiveData.observe(this){ // locale has changed - binding.bottomNav.initTitles() + binding.apply { + bottomNav.initTitles() + themeTxt.text = getString(R.string.theme) + helloTxt.text = getString(R.string.hello) + sbBtn.text = getString(R.string.logout) + + sbBtn.text = if (userPrefs?.userType == UserType.GUEST || userPrefs?.userType == UserType.NONE){ + getString(R.string.login_register) + }else{ + getString(R.string.logout) + } + } } selectTheme(userPrefs?.appTheme?: Theme.THEME_ONE, true) @@ -142,6 +212,26 @@ class HomeActivity : WokaBaseActivity(), sbHindi.setOnClickListener { selectLanguage(LOCALE_HINDI) } + + sbBtn.setOnClickListener { + if (userPrefs?.userType == UserType.GUEST || userPrefs?.userType == UserType.NONE){ + // guest or none user + startActivity(Intent(this@HomeActivity, OnboardActivity::class.java).apply { + putExtra(ONBOARD_ACTIVITY_INTENT, LOG_IN_INTENT) + }) + }else{ + // signing out user + decisionDialog.apply { + title = getString(R.string.woka) + message = getString(R.string.do_you_want_to_log_out) + setPositiveButton(getString(R.string.yes)){ + viewModel.logout() + } + setNegativeButton(getString(R.string.no)) + show() + } + } + } } } @@ -234,6 +324,8 @@ class HomeActivity : WokaBaseActivity(), when(binding.bottomNav.getSelectedTab()){ HOME -> { if (userPrefs?.appTheme == Theme.THEME_ONE){ + binding.root.backgroundTintList = null + val timePeriod = TimePeriod.getCurrentTimePeriod() if (currentBackground != timePeriod){ // time period has changed @@ -262,7 +354,7 @@ class HomeActivity : WokaBaseActivity(), } // observer for userdata changes - override fun onChanged(value: ApiResult) { + override fun onChanged(value: ApiResult?) { when(value){ is ApiResult.Error -> {} is ApiResult.Loading -> {} @@ -279,11 +371,20 @@ class HomeActivity : WokaBaseActivity(), .into(sbUserImage) } - sbUserName.text = it.fullname + val name = if (userPrefs?.userType == UserType.GUEST) userPrefs?.guestUserName + else it.fullname + + if (!name.isNullOrEmpty()) { + val text = ", ${name.split(" ")[0]}" + sbUserName.text = text + } + sbBtn.text = getString(R.string.logout) } } } + + null -> {} } } } \ No newline at end of file diff --git a/app/src/main/java/com/woka/home/HomeViewModel.kt b/app/src/main/java/com/woka/home/HomeViewModel.kt index 83f363a..59666e3 100644 --- a/app/src/main/java/com/woka/home/HomeViewModel.kt +++ b/app/src/main/java/com/woka/home/HomeViewModel.kt @@ -3,17 +3,36 @@ package com.woka.home import androidx.lifecycle.LiveData import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel +import androidx.lifecycle.viewModelScope import com.woka.home.BottomNavigation.Companion.HOME +import com.woka.mvvm.UserApiService +import com.woka.mvvm.UserRepository +import com.woka.networking.ApiResult +import com.woka.networking.RetrofitHelper +import kotlinx.coroutines.launch class HomeViewModel: ViewModel(){ + private val userRepository = UserRepository(RetrofitHelper.getRetrofit().create(UserApiService::class.java)) + var selectedBottomTab: Int = HOME private val _localeChangeLiveData = MutableLiveData() val localeChangeLiveData: LiveData get() = _localeChangeLiveData + private val _logoutLiveData = MutableLiveData?>() + val logoutLiveData: LiveData?> + get() = _logoutLiveData + fun sendLocaleChangeEvent(locale: String){ _localeChangeLiveData.postValue(locale) } + + fun logout(){ + viewModelScope.launch { + _logoutLiveData.postValue(ApiResult.Loading()) + _logoutLiveData.postValue(userRepository.logout()) + } + } } \ No newline at end of file diff --git a/app/src/main/java/com/woka/home/PressableImageView.kt b/app/src/main/java/com/woka/home/PressableImageView.kt index 51c23e6..cba7593 100644 --- a/app/src/main/java/com/woka/home/PressableImageView.kt +++ b/app/src/main/java/com/woka/home/PressableImageView.kt @@ -17,11 +17,13 @@ class PressableImageView : AppCompatImageView { private fun refresh() { if (isPressed) { - setAlpha(DEFAULT_ALPHA_WHEN_PRESS) + scaleX = (DEFAULT_SCALE_WHEN_PRESS) + scaleY = (DEFAULT_SCALE_WHEN_PRESS) invalidate() return } - setAlpha(DEFAULT_ALPHA) + scaleX = (DEFAULT_SCALE) + scaleY = (DEFAULT_SCALE) invalidate() } @@ -50,7 +52,7 @@ class PressableImageView : AppCompatImageView { } companion object { - private const val DEFAULT_ALPHA_WHEN_PRESS = 0.5f - private const val DEFAULT_ALPHA = 1f + private const val DEFAULT_SCALE_WHEN_PRESS = 0.9f + private const val DEFAULT_SCALE = 1f } } \ No newline at end of file diff --git a/app/src/main/java/com/woka/home/fragments/Home1Fragment.kt b/app/src/main/java/com/woka/home/fragments/Home1Fragment.kt index 857da08..34968f1 100644 --- a/app/src/main/java/com/woka/home/fragments/Home1Fragment.kt +++ b/app/src/main/java/com/woka/home/fragments/Home1Fragment.kt @@ -1,5 +1,6 @@ package com.woka.home.fragments +import android.animation.AnimatorSet import android.animation.ObjectAnimator import android.animation.ValueAnimator import android.content.BroadcastReceiver @@ -22,10 +23,12 @@ import com.woka.WokaApp.Companion.userPrefs import com.woka.databinding.FragmentHome1Binding import com.woka.home.HomeViewModel import com.woka.home.TimePeriod -import com.woka.mvvm.userDataModels.UserData import com.woka.mvvm.userDataModels.UserDataResponse import com.woka.networking.ApiResult import com.woka.utils.UserType +import com.woka.utils.hide +import com.woka.utils.scaleAnimate +import com.woka.utils.show class Home1Fragment : Fragment() { @@ -44,12 +47,14 @@ class Home1Fragment : Fragment() { override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View? { + ): View { binding = FragmentHome1Binding.inflate(inflater, container, false) activity?.let { viewModel = ViewModelProvider(it)[HomeViewModel::class.java] } + handleScaleAnimations() + updateBackground() minuteReceiver = object : BroadcastReceiver() { @@ -76,11 +81,11 @@ class Home1Fragment : Fragment() { override fun onPause() { super.onPause() - tvAnimator?.pause() - cloud1Animator?.pause() - cloud2Animator?.pause() - star1Animator?.pause() - star2Animator?.pause() + if (tvAnimator?.isRunning == true) tvAnimator?.pause() + if (cloud1Animator?.isRunning == true) cloud1Animator?.pause() + if (cloud2Animator?.isRunning == true) cloud2Animator?.pause() + if (star1Animator?.isRunning == true) star1Animator?.pause() + if (star2Animator?.isRunning == true) star2Animator?.pause() } private fun setObservers() { @@ -122,9 +127,39 @@ class Home1Fragment : Fragment() { binding.apply { val name = if (userPrefs?.userType == UserType.GUEST) userPrefs?.guestUserName else data?.result?.fullname - val text = ", $name" - userName.text = text + if (!name.isNullOrEmpty()) { + val text = ", ${name.split(" ")[0]}" + userName.text = text + } + } + } + + private fun handleScaleAnimations(){ + binding.apply { + webSeriesLl.post { + webSeriesLl.scaleAnimate() + } + + liveTvLl.post { + liveTvLl.scaleAnimate() + } + + shopLl.post { + shopLl.scaleAnimate() + } + + karaokeLl.post { + karaokeLl.scaleAnimate() + } + + audioBooksLl.post { + audioBooksLl.scaleAnimate() + } + + playLl.post { + playLl.scaleAnimate() + } } } @@ -144,7 +179,7 @@ class Home1Fragment : Fragment() { start() } } - } else { + } else if (tvAnimator?.isPaused == true){ tvAnimator?.resume() } @@ -163,7 +198,7 @@ class Home1Fragment : Fragment() { start() } } - } else { + } else if (cloud1Animator?.isPaused == true){ cloud1Animator?.resume() } @@ -182,10 +217,14 @@ class Home1Fragment : Fragment() { start() } } - } else { + } else if (cloud2Animator?.isPaused == true) { cloud2Animator?.resume() } + handleNightAnimations() + } + + private fun handleNightAnimations(){ if (currentBackground == TimePeriod.NIGHT && star1Animator == null) { binding.star1.post { star1Animator = ObjectAnimator.ofFloat(binding.star1, "alpha", 0.3f, 1f).apply { @@ -195,7 +234,7 @@ class Home1Fragment : Fragment() { start() } } - } else { + } else if (star1Animator?.isPaused == true){ star1Animator?.resume() } @@ -208,7 +247,7 @@ class Home1Fragment : Fragment() { start() } } - } else { + } else if (star2Animator?.isPaused == true) { star2Animator?.resume() } } @@ -240,9 +279,9 @@ class Home1Fragment : Fragment() { ) ) - binding.star1.visibility = GONE - binding.star2.visibility = GONE - binding.moon.visibility = GONE + binding.star1.hide() + binding.star2.hide() + binding.moon.hide() binding.grass.setImageResource(R.drawable.img_grass_d) } @@ -268,9 +307,9 @@ class Home1Fragment : Fragment() { ) ) - binding.star1.visibility = GONE - binding.star2.visibility = GONE - binding.moon.visibility = GONE + binding.star1.hide() + binding.star2.hide() + binding.moon.hide() binding.grass.setImageResource(R.drawable.img_grass_d) } @@ -281,9 +320,9 @@ class Home1Fragment : Fragment() { binding.welcomeText.setTextColor(ContextCompat.getColor(it, R.color.white)) binding.helloTxt.setTextColor(ContextCompat.getColor(it, R.color.white)) - binding.star1.visibility = GONE - binding.star2.visibility = GONE - binding.moon.visibility = GONE + binding.star1.hide() + binding.star2.hide() + binding.moon.hide() binding.grass.setImageResource(R.drawable.img_grass_d) } @@ -294,12 +333,12 @@ class Home1Fragment : Fragment() { binding.welcomeText.setTextColor(ContextCompat.getColor(it, R.color.white)) binding.helloTxt.setTextColor(ContextCompat.getColor(it, R.color.white)) - binding.star1.visibility = VISIBLE - binding.star2.visibility = VISIBLE - binding.moon.visibility = VISIBLE + binding.star1.show() + binding.star2.show() + binding.moon.show() currentBackground = timePeriod - handleAnimations() + handleNightAnimations() binding.grass.setImageResource(R.drawable.img_grass_n) } diff --git a/app/src/main/java/com/woka/mvvm/UserApiService.kt b/app/src/main/java/com/woka/mvvm/UserApiService.kt index 8406de1..e838f39 100644 --- a/app/src/main/java/com/woka/mvvm/UserApiService.kt +++ b/app/src/main/java/com/woka/mvvm/UserApiService.kt @@ -9,4 +9,7 @@ interface UserApiService { @GET("get_user_data") suspend fun getUserData(): Response> + + @GET("user_logout") + suspend fun logout(): Response> } \ No newline at end of file diff --git a/app/src/main/java/com/woka/mvvm/UserRepository.kt b/app/src/main/java/com/woka/mvvm/UserRepository.kt index e099d50..ba7b66d 100644 --- a/app/src/main/java/com/woka/mvvm/UserRepository.kt +++ b/app/src/main/java/com/woka/mvvm/UserRepository.kt @@ -11,4 +11,10 @@ class UserRepository(private val userApiService: UserApiService) { userApiService.getUserData() } } + + suspend fun logout(): ApiResult{ + return handleApiCall { + userApiService.logout() + } + } } \ No newline at end of file diff --git a/app/src/main/java/com/woka/mvvm/userDataModels/UserData.kt b/app/src/main/java/com/woka/mvvm/userDataModels/UserData.kt index 8edb279..fe39ab0 100644 --- a/app/src/main/java/com/woka/mvvm/userDataModels/UserData.kt +++ b/app/src/main/java/com/woka/mvvm/userDataModels/UserData.kt @@ -7,7 +7,7 @@ data class UserData( val child_detail: ChildDetail?, val email: String?, val fullname: String?, - val gender: String?, +// val gender: Gender?, val id: Int?, val is_active: String?, val language: Language?, diff --git a/app/src/main/java/com/woka/mvvm/userDataModels/UserDataResponse.kt b/app/src/main/java/com/woka/mvvm/userDataModels/UserDataResponse.kt index a65e4d7..3915879 100644 --- a/app/src/main/java/com/woka/mvvm/userDataModels/UserDataResponse.kt +++ b/app/src/main/java/com/woka/mvvm/userDataModels/UserDataResponse.kt @@ -2,6 +2,6 @@ package com.woka.mvvm.userDataModels data class UserDataResponse( val result: UserData?, - val userNotificationData: UserNotificationData?, +// val userNotificationData: UserNotificationData?, val userNotificationsCount: Int? ) \ No newline at end of file diff --git a/app/src/main/java/com/woka/onboard/OnboardActivity.kt b/app/src/main/java/com/woka/onboard/OnboardActivity.kt index bb31bd5..0ce9797 100644 --- a/app/src/main/java/com/woka/onboard/OnboardActivity.kt +++ b/app/src/main/java/com/woka/onboard/OnboardActivity.kt @@ -12,6 +12,12 @@ import com.woka.utils.WokaBaseActivity class OnboardActivity : WokaBaseActivity() { + companion object { + const val ONBOARD_ACTIVITY_INTENT = "onboard_act_intent" + + const val LOG_IN_INTENT = "login_intent" + } + private var player: MediaPlayer? = null override fun onCreate(savedInstanceState: Bundle?) { @@ -24,12 +30,17 @@ class OnboardActivity : WokaBaseActivity() { insets } -// val hostFragment = supportFragmentManager.findFragmentById(R.id.fc_onboard) as NavHostFragment -// hostFragment.navController.navigate(R.id.action_onboardFragment_to_signInFragment, -// null, -// NavOptions.Builder() -// .setPopUpTo(R.id.onboardFragment, true) -// .build()) + if (intent.getStringExtra(ONBOARD_ACTIVITY_INTENT) == LOG_IN_INTENT) { + val hostFragment = + supportFragmentManager.findFragmentById(R.id.fc_onboard) as NavHostFragment + hostFragment.navController.navigate( + R.id.action_onboardFragment_to_signInFragment, + null, + NavOptions.Builder() + .setPopUpTo(R.id.onboardFragment, true) + .build() + ) + } player = MediaPlayer.create(this, R.raw.audiotwo) player?.isLooping = true diff --git a/app/src/main/java/com/woka/onboard/fragments/SelectAvatarFragment.kt b/app/src/main/java/com/woka/onboard/fragments/SelectAvatarFragment.kt index 619b19b..86c1688 100644 --- a/app/src/main/java/com/woka/onboard/fragments/SelectAvatarFragment.kt +++ b/app/src/main/java/com/woka/onboard/fragments/SelectAvatarFragment.kt @@ -143,6 +143,8 @@ class SelectAvatarFragment : Fragment() { userPrefs?.accessToken = result.remember_token?:"no_token_received" userPrefs?.userType = UserType.createUserType(result.user_type) + userPrefs?.loadUserData() + startActivity(Intent(activity, HomeActivity::class.java).apply { addFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK) }) diff --git a/app/src/main/java/com/woka/onboard/fragments/SignInFragment.kt b/app/src/main/java/com/woka/onboard/fragments/SignInFragment.kt index ade8844..232ae42 100644 --- a/app/src/main/java/com/woka/onboard/fragments/SignInFragment.kt +++ b/app/src/main/java/com/woka/onboard/fragments/SignInFragment.kt @@ -109,8 +109,44 @@ class SignInFragment : Fragment() { } is ApiResult.Success -> { progressView.hide() - toast(it.message) - gotoHomeActivity() + it.data?.result?.let {data-> + toast(it.message) + + // saving to user prefs + userPrefs?.accessToken = data.remember_token?:"no_value_received" + userPrefs?.userType = UserType.createUserType(data.user_type) + + gotoHomeActivity() + } + } + null -> {} + } + } + + viewModel.guestLogin.observe(viewLifecycleOwner){ + when (it){ + is ApiResult.Error -> { + progressView.hide() + toast(it.errorMessage) + } + is ApiResult.Loading -> { + progressView.show() + } + is ApiResult.Success -> { + progressView.hide() + it.data?.let {data -> + toast(it.message) + + userPrefs?.userType = UserType.GUEST + userPrefs?.guestUserName = data.fullname + + activity?.let { activity-> + startActivity(Intent(activity, HomeActivity::class.java).apply { + addFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK) + }) + activity.finish() + } + } } null -> {} } @@ -120,6 +156,7 @@ class SignInFragment : Fragment() { override fun onDestroyView() { super.onDestroyView() viewModel.clearLoginLiveData() + viewModel.clearGuestLoginData() } private fun clickEvents() { @@ -135,6 +172,18 @@ class SignInFragment : Fragment() { activity?.onBackPressedDispatcher?.onBackPressed() } + continueAsGuest.setOnClickListener { + if (userPrefs?.guestUserName == null){ + // no guest available + viewModel.guestLogin() + }else{ + startActivity(Intent(activity, HomeActivity::class.java).apply { + addFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK) + }) + activity?.finish() + } + } + createAccount.setOnClickListener { findNavController().navigate(R.id.action_signInFragment_to_age_select_fragment) } @@ -158,6 +207,9 @@ class SignInFragment : Fragment() { } private fun gotoHomeActivity(){ + + userPrefs?.loadUserData() + activity?.let { activity-> startActivity(Intent(activity, HomeActivity::class.java).apply { addFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK) diff --git a/app/src/main/java/com/woka/onboard/fragments/SplashFragment.kt b/app/src/main/java/com/woka/onboard/fragments/SplashFragment.kt index a9f8127..f903bb7 100644 --- a/app/src/main/java/com/woka/onboard/fragments/SplashFragment.kt +++ b/app/src/main/java/com/woka/onboard/fragments/SplashFragment.kt @@ -30,7 +30,7 @@ import kotlinx.coroutines.launch /* Root fragment to the launcher activity i.e. WelcomeActivity */ -class SplashFragment : Fragment(), Observer> { +class SplashFragment : Fragment(), Observer?> { private lateinit var binding: FragmentSplashBinding @@ -113,7 +113,7 @@ class SplashFragment : Fragment(), Observer> { } } - override fun onChanged(value: ApiResult) { + override fun onChanged(value: ApiResult?) { // on user data loaded when (value){ is ApiResult.Error -> { @@ -123,6 +123,8 @@ class SplashFragment : Fragment(), Observer> { is ApiResult.Success -> { goForward() } + + null -> {} } } } \ No newline at end of file diff --git a/app/src/main/java/com/woka/userPreference/UserPreference.kt b/app/src/main/java/com/woka/userPreference/UserPreference.kt index 626b685..90c1a4c 100644 --- a/app/src/main/java/com/woka/userPreference/UserPreference.kt +++ b/app/src/main/java/com/woka/userPreference/UserPreference.kt @@ -59,8 +59,8 @@ class UserPreference(context: Context) { private val userRepository = UserRepository(RetrofitHelper.getRetrofit().create(UserApiService::class.java)) - private val _userLiveData = MutableLiveData>() - val userLiveData: LiveData> + private val _userLiveData = MutableLiveData?>() + val userLiveData: LiveData?> get() = _userLiveData fun loadUserData() { @@ -69,4 +69,10 @@ class UserPreference(context: Context) { _userLiveData.postValue(userRepository.getUserData()) } } + + fun logout(){ + accessToken = null + userType = if (guestUserName == null) UserType.NONE else UserType.GUEST + _userLiveData.postValue(null) + } } \ No newline at end of file diff --git a/app/src/main/java/com/woka/utils/Extensions.kt b/app/src/main/java/com/woka/utils/Extensions.kt index d09c7b1..e2e6360 100644 --- a/app/src/main/java/com/woka/utils/Extensions.kt +++ b/app/src/main/java/com/woka/utils/Extensions.kt @@ -1,5 +1,7 @@ package com.woka.utils +import android.animation.AnimatorSet +import android.animation.ObjectAnimator import android.app.Activity import android.content.Context import android.content.res.Configuration @@ -12,6 +14,18 @@ import androidx.fragment.app.Fragment import com.woka.WokaApp.Companion.userPrefs import java.util.Locale +fun View.scaleAnimate(from: Float = 0.5f, to: Float = 1f, duration: Long = 500){ + val animationSet = AnimatorSet() + + val scaleYAnimator = ObjectAnimator.ofFloat(this, "scaleY", from, to) + val scaleXAnimator = ObjectAnimator.ofFloat(this, "scaleX", from, to) + + animationSet.apply { + playTogether(scaleXAnimator, scaleYAnimator) + setDuration(duration) + start() + } +} fun View.show(){ this.visibility = VISIBLE diff --git a/app/src/main/res/drawable-hdpi/ic_woka.png b/app/src/main/res/drawable-hdpi/ic_woka.png deleted file mode 100644 index c13b161..0000000 Binary files a/app/src/main/res/drawable-hdpi/ic_woka.png and /dev/null differ diff --git a/app/src/main/res/drawable-hdpi/img_notification.png b/app/src/main/res/drawable-hdpi/img_notification.png new file mode 100644 index 0000000..c6be655 Binary files /dev/null and b/app/src/main/res/drawable-hdpi/img_notification.png differ diff --git a/app/src/main/res/drawable-hdpi/img_woka_w.png b/app/src/main/res/drawable-hdpi/img_woka_w.png new file mode 100644 index 0000000..cb62c2b Binary files /dev/null and b/app/src/main/res/drawable-hdpi/img_woka_w.png differ diff --git a/app/src/main/res/drawable-ldpi/ic_woka.png b/app/src/main/res/drawable-ldpi/ic_woka.png deleted file mode 100644 index 7724760..0000000 Binary files a/app/src/main/res/drawable-ldpi/ic_woka.png and /dev/null differ diff --git a/app/src/main/res/drawable-ldpi/img_notification.png b/app/src/main/res/drawable-ldpi/img_notification.png new file mode 100644 index 0000000..e0bc1be Binary files /dev/null and b/app/src/main/res/drawable-ldpi/img_notification.png differ diff --git a/app/src/main/res/drawable-ldpi/img_woka_w.png b/app/src/main/res/drawable-ldpi/img_woka_w.png new file mode 100644 index 0000000..7c44e2d Binary files /dev/null and b/app/src/main/res/drawable-ldpi/img_woka_w.png differ diff --git a/app/src/main/res/drawable-mdpi/ic_woka.png b/app/src/main/res/drawable-mdpi/ic_woka.png deleted file mode 100644 index c8ee5d7..0000000 Binary files a/app/src/main/res/drawable-mdpi/ic_woka.png and /dev/null differ diff --git a/app/src/main/res/drawable-mdpi/img_notification.png b/app/src/main/res/drawable-mdpi/img_notification.png new file mode 100644 index 0000000..57fd501 Binary files /dev/null and b/app/src/main/res/drawable-mdpi/img_notification.png differ diff --git a/app/src/main/res/drawable-mdpi/img_woka_w.png b/app/src/main/res/drawable-mdpi/img_woka_w.png new file mode 100644 index 0000000..02267a0 Binary files /dev/null and b/app/src/main/res/drawable-mdpi/img_woka_w.png differ diff --git a/app/src/main/res/drawable-xhdpi/ic_woka.png b/app/src/main/res/drawable-xhdpi/ic_woka.png deleted file mode 100644 index 99b5eff..0000000 Binary files a/app/src/main/res/drawable-xhdpi/ic_woka.png and /dev/null differ diff --git a/app/src/main/res/drawable-xhdpi/img_notification.png b/app/src/main/res/drawable-xhdpi/img_notification.png new file mode 100644 index 0000000..65ec243 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/img_notification.png differ diff --git a/app/src/main/res/drawable-xhdpi/img_woka_w.png b/app/src/main/res/drawable-xhdpi/img_woka_w.png new file mode 100644 index 0000000..fe0b1c8 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/img_woka_w.png differ diff --git a/app/src/main/res/drawable-xxhdpi/ic_woka.png b/app/src/main/res/drawable-xxhdpi/ic_woka.png deleted file mode 100644 index b37dcf1..0000000 Binary files a/app/src/main/res/drawable-xxhdpi/ic_woka.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxhdpi/img_notification.png b/app/src/main/res/drawable-xxhdpi/img_notification.png new file mode 100644 index 0000000..614a6ca Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/img_notification.png differ diff --git a/app/src/main/res/drawable-xxhdpi/img_woka_w.png b/app/src/main/res/drawable-xxhdpi/img_woka_w.png new file mode 100644 index 0000000..e45c717 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/img_woka_w.png differ diff --git a/app/src/main/res/drawable-xxxhdpi/ic_woka.png b/app/src/main/res/drawable-xxxhdpi/ic_woka.png deleted file mode 100644 index 96ebabd..0000000 Binary files a/app/src/main/res/drawable-xxxhdpi/ic_woka.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxxhdpi/img_notification.png b/app/src/main/res/drawable-xxxhdpi/img_notification.png new file mode 100644 index 0000000..8f3a8aa Binary files /dev/null and b/app/src/main/res/drawable-xxxhdpi/img_notification.png differ diff --git a/app/src/main/res/drawable-xxxhdpi/img_woka_w.png b/app/src/main/res/drawable-xxxhdpi/img_woka_w.png new file mode 100644 index 0000000..60f8635 Binary files /dev/null and b/app/src/main/res/drawable-xxxhdpi/img_woka_w.png differ diff --git a/app/src/main/res/layout/activity_home.xml b/app/src/main/res/layout/activity_home.xml index b649867..8c7cfb3 100644 --- a/app/src/main/res/layout/activity_home.xml +++ b/app/src/main/res/layout/activity_home.xml @@ -16,6 +16,25 @@ android:layout_width="match_parent" android:layout_height="match_parent"> + + @@ -95,25 +117,49 @@ android:layout_marginTop="15dp" /> - - android:maxLines="1" - android:ellipsize="end" + + android:textSize="@dimen/_14ssp" + + /> + + + +