diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 21cb76f..815adac 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -15,6 +15,10 @@
android:supportsRtl="true"
android:theme="@style/Theme.Woka"
tools:targetApi="31">
+
) :
ListAdapter(config) {
- inner class BlogViewHolder(binding: BlogViewHolderBinding): ViewHolder(binding.root)
+ inner class BlogViewHolder(val binding: BlogViewHolderBinding): ViewHolder(binding.root)
+
+ companion object{
+ private val DIFF_UTILS = object : DiffUtil.ItemCallback(){
+ override fun areItemsTheSame(oldItem: Blog, newItem: Blog): Boolean =
+ oldItem.id == newItem.id
+
+ override fun areContentsTheSame(oldItem: Blog, newItem: Blog): Boolean =
+ oldItem == newItem
+ }
+
+ private val ASYNC_DIFF_CONFIG = AsyncDifferConfig.Builder(DIFF_UTILS)
+ .setBackgroundThreadExecutor(Executors.newSingleThreadExecutor())
+ .build()
+ }
+
+ constructor(): this(ASYNC_DIFF_CONFIG)
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): BlogViewHolder {
-
+ return BlogViewHolder(BlogViewHolderBinding.inflate(LayoutInflater.from(parent.context), parent, false))
}
override fun onBindViewHolder(holder: BlogViewHolder, position: Int) {
+ with(getItem(position)){
+ thumbnail_path?.let {
+ Glide.with(holder.binding.image)
+ .load(it)
+ .placeholder(android.R.color.darker_gray)
+ .error(R.drawable.woka_logo_half)
+ .into(holder.binding.image)
+ }
+
+ holder.binding.title.text = title
+ }
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/woka/home/HomeActivity.kt b/app/src/main/java/com/woka/home/HomeActivity.kt
index d20bbe9..2835d33 100644
--- a/app/src/main/java/com/woka/home/HomeActivity.kt
+++ b/app/src/main/java/com/woka/home/HomeActivity.kt
@@ -12,6 +12,7 @@ import android.graphics.Shader
import android.os.Build
import android.os.Bundle
import android.util.Log
+import android.view.HapticFeedbackConstants
import android.view.View.GONE
import android.view.View.VISIBLE
import android.view.WindowManager
@@ -26,6 +27,7 @@ import androidx.core.view.WindowInsetsCompat
import androidx.lifecycle.Observer
import androidx.lifecycle.ViewModelProvider
import com.bumptech.glide.Glide
+import com.google.android.exoplayer2.ExoPlayer
import com.jwplayer.pub.api.license.LicenseUtil
import com.woka.BuildConfig
import com.woka.R
@@ -37,6 +39,7 @@ import com.woka.home.BottomNavigation.Companion.MY_LIST
import com.woka.home.fragments.Home1Fragment
import com.woka.home.fragments.Home2Fragment
import com.woka.home.fragments.MyListFragment
+import com.woka.home.sidebar.AboutActivity
import com.woka.mvvm.userDataModels.UserDataResponse
import com.woka.networking.ApiResult
import com.woka.onboard.OnboardActivity
@@ -131,6 +134,8 @@ class HomeActivity : WokaBaseActivity(),
}
LicenseUtil().setLicenseKey(this, "LkYoNusv+gSIVJIrXa5Bf59iBNlUMxeg82PM/l8JWk+cD4BE")
+
+ viewModel.initPlayer(applicationContext)
}
override fun onResume() {
@@ -256,6 +261,11 @@ class HomeActivity : WokaBaseActivity(),
}
}
}
+
+ sbAboutWokaCard.setOnClickListener {
+ startActivity(Intent(this@HomeActivity, AboutActivity::class.java),
+ ActivityOptions.makeSceneTransitionAnimation(this@HomeActivity).toBundle())
+ }
}
}
@@ -267,10 +277,16 @@ class HomeActivity : WokaBaseActivity(),
Theme.THEME_ONE -> {
sbTheme1Selected.visibility = VISIBLE
sbTheme2Selected.visibility = GONE
+
+ sbTheme1.isPressable = false
+ sbTheme2.isPressable = true
}
Theme.THEME_TWO -> {
sbTheme2Selected.visibility = VISIBLE
sbTheme1Selected.visibility = GONE
+
+ sbTheme1.isPressable = true
+ sbTheme2.isPressable = false
}
}
}
@@ -310,6 +326,8 @@ class HomeActivity : WokaBaseActivity(),
if (!init){
binding.homeDrawer.closeDrawer(GravityCompat.END)
viewModel.sendLocaleChangeEvent(locale)
+
+ binding.root.performHapticFeedback(HapticFeedbackConstants.VIRTUAL_KEY)
}
}
}
diff --git a/app/src/main/java/com/woka/home/HomeViewModel.kt b/app/src/main/java/com/woka/home/HomeViewModel.kt
index 849eb7f..fa69c48 100644
--- a/app/src/main/java/com/woka/home/HomeViewModel.kt
+++ b/app/src/main/java/com/woka/home/HomeViewModel.kt
@@ -1,9 +1,13 @@
package com.woka.home
+import android.content.Context
+import android.net.Uri
import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
+import com.google.android.exoplayer2.ExoPlayer
+import com.google.android.exoplayer2.MediaItem
import com.woka.home.BottomNavigation.Companion.HOME
import com.woka.mvvm.UserApiService
import com.woka.mvvm.UserRepository
@@ -26,6 +30,20 @@ class HomeViewModel: ViewModel(){
val logoutLiveData: LiveData?>
get() = _logoutLiveData
+ var player: ExoPlayer? = null
+
+ fun initPlayer(context: Context) {
+ player = ExoPlayer.Builder(context).build()
+
+ player?.volume = 0f
+
+ val videoUri = Uri.parse("https://d3volyx7jx7oal.cloudfront.net/master.m3u8")
+ val mediaItem = MediaItem.fromUri(videoUri)
+ player?.setMediaItem(mediaItem)
+ player?.playWhenReady = true
+ player?.prepare()
+ }
+
fun sendLocaleChangeEvent(locale: String){
_localeChangeLiveData.postValue(locale)
}
@@ -36,4 +54,10 @@ class HomeViewModel: ViewModel(){
_logoutLiveData.postValue(userRepository.logout())
}
}
+
+ override fun onCleared() {
+ super.onCleared()
+ player?.release()
+ player = null
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/woka/home/MoreHomeActivity.kt b/app/src/main/java/com/woka/home/MoreHomeActivity.kt
index f80242b..e4aa76a 100644
--- a/app/src/main/java/com/woka/home/MoreHomeActivity.kt
+++ b/app/src/main/java/com/woka/home/MoreHomeActivity.kt
@@ -2,44 +2,93 @@ package com.woka.home
import android.graphics.Color
import android.os.Bundle
+import android.transition.Fade
import android.view.WindowManager
import androidx.activity.enableEdgeToEdge
-import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
-import androidx.lifecycle.ViewModelProvider
import com.woka.R
-import com.woka.modules.BlogsViewModel
+import com.woka.databinding.ActivityMoreHomeBinding
+import com.woka.modules.BlogsRepository
+import com.woka.networking.ApiResult
import com.woka.utils.WokaBaseActivity
+import com.woka.utils.hide
import com.woka.utils.lightStatusBar
+import com.woka.utils.show
+import com.woka.utils.toast
class MoreHomeActivity : WokaBaseActivity() {
- private lateinit var blogsViewModel: BlogsViewModel
+ private lateinit var binding: ActivityMoreHomeBinding
+
+ private lateinit var blogsAdapter: BlogsAdapter
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
+ with(window){
+ enterTransition = Fade()
+ }
enableEdgeToEdge()
- setContentView(R.layout.activity_more_home)
+ binding = ActivityMoreHomeBinding.inflate(layoutInflater)
+ setContentView(binding.root)
ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main)) { v, insets ->
val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars())
v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom)
insets
}
- window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS)
- window.statusBarColor = Color.TRANSPARENT
- window.navigationBarColor = getColor(R.color.more_bg)
- window.lightStatusBar()
+ with(window){
+ addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS)
+ statusBarColor = Color.TRANSPARENT
+ navigationBarColor = getColor(R.color.more_bg)
+ lightStatusBar()
+ }
- blogsViewModel = ViewModelProvider(this)[BlogsViewModel::class.java]
+ blogsAdapter = BlogsAdapter()
+
+ initViews()
+
+ clickEvents()
setObservers()
}
- private fun setObservers() {
- blogsViewModel.blogsLiveData.observe(this){
+ private fun clickEvents() {
+ binding.apply {
+ more.setOnClickListener {
+ onBackPressedDispatcher.onBackPressed()
+ }
+ }
+ }
+ private fun initViews(){
+ binding.apply {
+ rvBlogs.adapter = blogsAdapter
+ }
+ }
+
+ private fun setObservers() {
+ BlogsRepository.blogsLiveData.observe(this){
+ when(it){
+ is ApiResult.Error -> {
+ toast(it.errorMessage)
+ binding.blogsTxt.hide()
+ binding.rvBlogs.hide()
+ }
+ is ApiResult.Loading -> {
+ binding.blogsTxt.hide()
+ binding.rvBlogs.hide()
+ }
+ is ApiResult.Success -> {
+ it.data?.blogs?.let {blogList ->
+ binding.blogsTxt.show()
+ binding.rvBlogs.show()
+
+ blogsAdapter.submitList(blogList)
+ }
+ }
+ null -> {}
+ }
}
}
}
\ 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 8569608..288ed3e 100644
--- a/app/src/main/java/com/woka/home/fragments/Home1Fragment.kt
+++ b/app/src/main/java/com/woka/home/fragments/Home1Fragment.kt
@@ -2,6 +2,7 @@ package com.woka.home.fragments
import android.animation.ObjectAnimator
import android.animation.ValueAnimator
+import android.app.ActivityOptions
import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent
@@ -47,8 +48,6 @@ class Home1Fragment : Fragment() {
private var star1Animator: ValueAnimator? = null
private var star2Animator: ValueAnimator? = null
- private lateinit var player: ExoPlayer
-
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
@@ -56,7 +55,6 @@ class Home1Fragment : Fragment() {
binding = FragmentHome1Binding.inflate(inflater, container, false)
activity?.let {
viewModel = ViewModelProvider(it)[HomeViewModel::class.java]
- player = ExoPlayer.Builder(it).build()
}
initViews()
@@ -85,8 +83,8 @@ class Home1Fragment : Fragment() {
override fun onResume() {
super.onResume()
handleAnimations()
- if (!player.isPlaying){
- player.play()
+ if (viewModel.player?.isPlaying == false){
+ viewModel.player?.play()
}
binding.playerView.show()
@@ -100,29 +98,16 @@ class Home1Fragment : Fragment() {
if (star1Animator?.isRunning == true) star1Animator?.pause()
if (star2Animator?.isRunning == true) star2Animator?.pause()
- if (player.isPlaying) player.pause()
+ if (viewModel.player?.isPlaying == true) viewModel.player?.pause()
if (viewModel.isHomeBackgroundBlurred){
binding.playerView.hide()
}
}
- override fun onDestroy() {
- super.onDestroy()
- player.release()
- }
-
private fun initPlayerView() {
- binding.playerView.player = player
-
+ binding.playerView.player = viewModel.player
binding.playerView.useController = false
- player.volume = 0f
-
- val videoUri = Uri.parse("https://d3volyx7jx7oal.cloudfront.net/master.m3u8")
- val mediaItem = MediaItem.fromUri(videoUri)
- player.setMediaItem(mediaItem)
- player.playWhenReady = true
- player.prepare()
}
private fun setObservers() {
@@ -169,7 +154,8 @@ class Home1Fragment : Fragment() {
more.setOnClickListener {
activity?.let {
- startActivity(Intent(it, MoreHomeActivity::class.java))
+ startActivity(Intent(it, MoreHomeActivity::class.java),
+ ActivityOptions.makeSceneTransitionAnimation(it).toBundle())
} }
}
}
diff --git a/app/src/main/java/com/woka/home/fragments/Home2Fragment.kt b/app/src/main/java/com/woka/home/fragments/Home2Fragment.kt
index 1548e26..617fd47 100644
--- a/app/src/main/java/com/woka/home/fragments/Home2Fragment.kt
+++ b/app/src/main/java/com/woka/home/fragments/Home2Fragment.kt
@@ -31,8 +31,6 @@ class Home2Fragment : Fragment() {
private lateinit var viewModel: HomeViewModel
- private lateinit var player: ExoPlayer
-
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
@@ -41,7 +39,6 @@ class Home2Fragment : Fragment() {
activity?.let {
viewModel = ViewModelProvider(it)[HomeViewModel::class.java]
- player = ExoPlayer.Builder(it).build()
}
iniViews()
@@ -65,8 +62,8 @@ class Home2Fragment : Fragment() {
override fun onResume() {
super.onResume()
- if (!player.isPlaying){
- player.play()
+ if (viewModel.player?.isPlaying == false){
+ viewModel.player?.play()
}
binding.playerView.show()
@@ -74,32 +71,16 @@ class Home2Fragment : Fragment() {
override fun onPause() {
super.onPause()
- if (player.isPlaying) {
- player.pause()
- }
+ if (viewModel.player?.isPlaying == true) viewModel.player?.pause()
if (viewModel.isHomeBackgroundBlurred){
binding.playerView.hide()
}
}
- override fun onDestroy() {
- super.onDestroy()
- player.release()
- }
-
private fun initPlayerView() {
- binding.playerView.player = player
-
+ binding.playerView.player = viewModel.player
binding.playerView.useController = false
- player.volume = 0f
-
- val videoUri = Uri.parse("https://d3volyx7jx7oal.cloudfront.net/master.m3u8")
- val mediaItem = MediaItem.fromUri(videoUri)
- player.setMediaItem(mediaItem)
- player.playWhenReady = true
-
- player.prepare()
}
private fun clickEvents(){
diff --git a/app/src/main/java/com/woka/home/sidebar/AboutActivity.kt b/app/src/main/java/com/woka/home/sidebar/AboutActivity.kt
new file mode 100644
index 0000000..18f938e
--- /dev/null
+++ b/app/src/main/java/com/woka/home/sidebar/AboutActivity.kt
@@ -0,0 +1,49 @@
+package com.woka.home.sidebar
+
+import android.graphics.Color
+import android.os.Bundle
+import android.transition.Fade
+import android.transition.Slide
+import android.view.Gravity.END
+import androidx.activity.enableEdgeToEdge
+import androidx.appcompat.app.AppCompatActivity
+import androidx.core.view.ViewCompat
+import androidx.core.view.WindowInsetsCompat
+import com.woka.R
+import com.woka.databinding.ActivityAboutBinding
+import com.woka.utils.WokaBaseActivity
+import com.woka.utils.lightStatusBar
+
+class AboutActivity : WokaBaseActivity() {
+
+ private lateinit var binding: ActivityAboutBinding
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ window.enterTransition = Slide().apply {
+ slideEdge = END
+ }
+ enableEdgeToEdge()
+ binding = ActivityAboutBinding.inflate(layoutInflater)
+ setContentView(binding.root)
+ ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main)) { v, insets ->
+ val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars())
+ v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom)
+ insets
+ }
+
+ with(window){
+ lightStatusBar(true)
+ }
+
+ clickEvents()
+ }
+
+ private fun clickEvents() {
+ binding.apply {
+ backBtn.setOnClickListener {
+ onBackPressedDispatcher.onBackPressed()
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/woka/modules/BlogsRepository.kt b/app/src/main/java/com/woka/modules/BlogsRepository.kt
index 2249cc2..22afcf3 100644
--- a/app/src/main/java/com/woka/modules/BlogsRepository.kt
+++ b/app/src/main/java/com/woka/modules/BlogsRepository.kt
@@ -1,17 +1,39 @@
package com.woka.modules
+import androidx.lifecycle.LiveData
+import androidx.lifecycle.MutableLiveData
+import androidx.lifecycle.viewModelScope
import com.woka.modules.blogs.BlogsResponse
import com.woka.networking.ApiResult
import com.woka.networking.RetrofitHelper
import com.woka.networking.RetrofitHelper.handleApiCall
+import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.launch
+
+object BlogsRepository{
-class BlogsRepository {
private val apiService = RetrofitHelper.getRetrofit().create(ModuleApiService::class.java)
- suspend fun getBlogs(): ApiResult{
+ private val _blogsLiveData = MutableLiveData>()
+ val blogsLiveData: LiveData?>
+ get() = _blogsLiveData
+
+ init {
+ loadBlogs()
+ }
+
+ private suspend fun getBlogs(): ApiResult{
return handleApiCall{
apiService.getBlogs()
}
}
+ private fun loadBlogs(){
+ CoroutineScope(Dispatchers.IO).launch {
+ _blogsLiveData.postValue(ApiResult.Loading())
+ _blogsLiveData.postValue(getBlogs())
+ }
+ }
+
}
\ No newline at end of file
diff --git a/app/src/main/java/com/woka/modules/BlogsViewModel.kt b/app/src/main/java/com/woka/modules/BlogsViewModel.kt
deleted file mode 100644
index 7794ebd..0000000
--- a/app/src/main/java/com/woka/modules/BlogsViewModel.kt
+++ /dev/null
@@ -1,30 +0,0 @@
-package com.woka.modules
-
-import androidx.lifecycle.LiveData
-import androidx.lifecycle.MutableLiveData
-import androidx.lifecycle.ViewModel
-import androidx.lifecycle.viewModelScope
-import com.woka.modules.blogs.BlogsResponse
-import com.woka.networking.ApiResult
-import kotlinx.coroutines.launch
-
-class BlogsViewModel: ViewModel() {
-
- private val blogsRepository = BlogsRepository()
-
- private val _blogsLiveData = MutableLiveData>()
- val blogsLiveData: LiveData?>
- get() = _blogsLiveData
-
- init {
- loadBlogs()
- }
-
- private fun loadBlogs(){
- viewModelScope.launch {
- _blogsLiveData.postValue(ApiResult.Loading())
- _blogsLiveData.postValue(blogsRepository.getBlogs())
- }
- }
-
-}
\ 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 ecf6b0f..018a359 100644
--- a/app/src/main/java/com/woka/utils/Extensions.kt
+++ b/app/src/main/java/com/woka/utils/Extensions.kt
@@ -16,8 +16,8 @@ import androidx.fragment.app.Fragment
import com.woka.WokaApp.Companion.userPrefs
import java.util.Locale
-fun Window.lightStatusBar(){
- WindowCompat.getInsetsController(this, decorView).isAppearanceLightStatusBars = false
+fun Window.lightStatusBar(lightStatus: Boolean = false){
+ WindowCompat.getInsetsController(this, decorView).isAppearanceLightStatusBars = lightStatus
}
fun View.scaleAnimate(from: Float = 0.5f, to: Float = 1f, duration: Long = 500){
diff --git a/app/src/main/java/com/woka/utils/PressableCard.kt b/app/src/main/java/com/woka/utils/PressableCard.kt
index 6fcace7..24837ea 100644
--- a/app/src/main/java/com/woka/utils/PressableCard.kt
+++ b/app/src/main/java/com/woka/utils/PressableCard.kt
@@ -1,34 +1,20 @@
package com.woka.utils
import android.content.Context
+import android.os.Build
import android.util.AttributeSet
-import android.util.Log
+import android.view.HapticFeedbackConstants
import android.view.MotionEvent
import android.view.MotionEvent.ACTION_CANCEL
import android.view.MotionEvent.ACTION_DOWN
import android.view.MotionEvent.ACTION_OUTSIDE
import android.view.MotionEvent.ACTION_SCROLL
import android.view.MotionEvent.ACTION_UP
-import android.view.View
-import android.view.ViewGroup
import android.widget.FrameLayout
-import android.widget.ScrollView
-import androidx.core.view.ScrollingView
import com.woka.R
-import kotlin.math.abs
class PressableCard : FrameLayout {
- companion object {
- private const val DEFAULT_SCALE_WHEN_PRESS = 0.9f
- private const val DEFAULT_SCALE = 1f
-
- private const val DEFAULT_ALPHA_WHEN_PRESS = 0.5f
- private const val DEFAULT_ALPHA = 1f
-
- private const val MIN_MOMENT_AFTER_TOUCH = 25f
- }
-
enum class PressableType(value: Int){
SCALE(0), FADE(1);
}
@@ -48,39 +34,65 @@ class PressableCard : FrameLayout {
// attributes
private var pressType: PressableType? = PressableType.SCALE
+ private var scaleFrom = 0.9f
+ private var scaleTo = 1f
+
+ private var alphaFrom = 0.5f
+ private var alphaTo = 1f
+
+ private var isHapticEnabled = false
+ var isPressable = true
private fun setPressType(attrs: AttributeSet?){
val attributes = context.obtainStyledAttributes(attrs, R.styleable.PressableCard)
+
val value = attributes.getInt(R.styleable.PressableCard_pressType, 0)
pressType = when(value){
1 -> PressableType.FADE
else -> PressableType.SCALE
}
+
+ scaleFrom = attributes.getFloat(R.styleable.PressableCard_scaleFrom, 0.9f)
+ scaleTo = attributes.getFloat(R.styleable.PressableCard_scaleTo, 1f)
+
+ alphaFrom = attributes.getFloat(R.styleable.PressableCard_alphaFrom, 0.5f)
+ alphaTo = attributes.getFloat(R.styleable.PressableCard_alphaTo, 1f)
+
+ isHapticEnabled = attributes.getBoolean(R.styleable.PressableCard_isHapticEnabled, false)
+
attributes.recycle()
}
private fun refresh() {
if (isPressed) {
+ if (isHapticEnabled){
+ performHapticFeedback(HapticFeedbackConstants.VIRTUAL_KEY)
+ }
if (pressType == PressableType.SCALE){
- scaleX = (DEFAULT_SCALE_WHEN_PRESS)
- scaleY = (DEFAULT_SCALE_WHEN_PRESS)
+ scaleX = (scaleFrom)
+ scaleY = (scaleFrom)
}else if (pressType == PressableType.FADE){
- alpha = DEFAULT_ALPHA_WHEN_PRESS
+ alpha = alphaFrom
}
invalidate()
return
}
+
+ if (isHapticEnabled && Build.VERSION.SDK_INT >= Build.VERSION_CODES.O_MR1) {
+ performHapticFeedback(HapticFeedbackConstants.VIRTUAL_KEY_RELEASE)
+ }
if (pressType == PressableType.SCALE){
- scaleX = (DEFAULT_SCALE)
- scaleY = (DEFAULT_SCALE)
+ scaleX = (scaleTo)
+ scaleY = (scaleTo)
}else if (pressType == PressableType.FADE){
- alpha = DEFAULT_ALPHA
+ alpha = alphaTo
}
invalidate()
}
override fun setPressed(pressed: Boolean) {
super.setPressed(pressed)
+ if (!isPressable) return
refresh()
}
diff --git a/app/src/main/res/drawable-hdpi/img_about.png b/app/src/main/res/drawable-hdpi/img_about.png
new file mode 100644
index 0000000..6826ea4
Binary files /dev/null and b/app/src/main/res/drawable-hdpi/img_about.png differ
diff --git a/app/src/main/res/drawable-hdpi/img_about_bg.png b/app/src/main/res/drawable-hdpi/img_about_bg.png
new file mode 100644
index 0000000..301d593
Binary files /dev/null and b/app/src/main/res/drawable-hdpi/img_about_bg.png differ
diff --git a/app/src/main/res/drawable-ldpi/img_about.png b/app/src/main/res/drawable-ldpi/img_about.png
new file mode 100644
index 0000000..b4afad5
Binary files /dev/null and b/app/src/main/res/drawable-ldpi/img_about.png differ
diff --git a/app/src/main/res/drawable-ldpi/img_about_bg.png b/app/src/main/res/drawable-ldpi/img_about_bg.png
new file mode 100644
index 0000000..79887de
Binary files /dev/null and b/app/src/main/res/drawable-ldpi/img_about_bg.png differ
diff --git a/app/src/main/res/drawable-mdpi/img_about.png b/app/src/main/res/drawable-mdpi/img_about.png
new file mode 100644
index 0000000..a0b1d1f
Binary files /dev/null and b/app/src/main/res/drawable-mdpi/img_about.png differ
diff --git a/app/src/main/res/drawable-mdpi/img_about_bg.png b/app/src/main/res/drawable-mdpi/img_about_bg.png
new file mode 100644
index 0000000..6a5d32b
Binary files /dev/null and b/app/src/main/res/drawable-mdpi/img_about_bg.png differ
diff --git a/app/src/main/res/drawable-xhdpi/img_about.png b/app/src/main/res/drawable-xhdpi/img_about.png
new file mode 100644
index 0000000..7687672
Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/img_about.png differ
diff --git a/app/src/main/res/drawable-xhdpi/img_about_bg.png b/app/src/main/res/drawable-xhdpi/img_about_bg.png
new file mode 100644
index 0000000..eee3c88
Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/img_about_bg.png differ
diff --git a/app/src/main/res/drawable-xxhdpi/img_about.png b/app/src/main/res/drawable-xxhdpi/img_about.png
new file mode 100644
index 0000000..740b5f8
Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/img_about.png differ
diff --git a/app/src/main/res/drawable-xxhdpi/img_about_bg.png b/app/src/main/res/drawable-xxhdpi/img_about_bg.png
new file mode 100644
index 0000000..cbc9741
Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/img_about_bg.png differ
diff --git a/app/src/main/res/drawable-xxxhdpi/img_about.png b/app/src/main/res/drawable-xxxhdpi/img_about.png
new file mode 100644
index 0000000..39a70eb
Binary files /dev/null and b/app/src/main/res/drawable-xxxhdpi/img_about.png differ
diff --git a/app/src/main/res/drawable-xxxhdpi/img_about_bg.png b/app/src/main/res/drawable-xxxhdpi/img_about_bg.png
new file mode 100644
index 0000000..c19619a
Binary files /dev/null and b/app/src/main/res/drawable-xxxhdpi/img_about_bg.png differ
diff --git a/app/src/main/res/drawable/about_bg.xml b/app/src/main/res/drawable/about_bg.xml
new file mode 100644
index 0000000..8e3fbf3
--- /dev/null
+++ b/app/src/main/res/drawable/about_bg.xml
@@ -0,0 +1,22 @@
+
+
+ -
+
+
+
+
+
+
+ -
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_arrow_back_full.xml b/app/src/main/res/drawable/ic_arrow_back_full.xml
new file mode 100644
index 0000000..075e95d
--- /dev/null
+++ b/app/src/main/res/drawable/ic_arrow_back_full.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/app/src/main/res/layout/activity_about.xml b/app/src/main/res/layout/activity_about.xml
new file mode 100644
index 0000000..f9d5dcd
--- /dev/null
+++ b/app/src/main/res/layout/activity_about.xml
@@ -0,0 +1,85 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_home.xml b/app/src/main/res/layout/activity_home.xml
index eee78f2..4fa598a 100644
--- a/app/src/main/res/layout/activity_home.xml
+++ b/app/src/main/res/layout/activity_home.xml
@@ -206,89 +206,108 @@
android:gravity="center"
>
-
-
+
-
-
-
+
-
+
-
+
+
+
+
+
+
+
+
-
+
-
-
-
+
-
+
+
+
+
+
+
+
+
+
@@ -366,24 +385,28 @@
android:layout_marginBottom="10dp"
/>
-
- android:text="@string/about_woka"
- android:fontFamily="@font/exo_2_bold"
- android:textColor="@color/white"
- android:textSize="@dimen/_14ssp"
+
- android:foreground="?android:attr/selectableItemBackground"
- />
+
@@ -67,6 +65,8 @@
android:layout_marginTop="15dp"
android:layout_marginBottom="5dp"
+ android:layout_marginHorizontal="15dp"
+
/>
@@ -31,16 +37,18 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:contentDescription="@string/image"
- android:src="@color/black"
+ android:src="@drawable/woka_logo_half"
+ android:scaleType="fitXY"
/>
diff --git a/app/src/main/res/layout/fragment_home2.xml b/app/src/main/res/layout/fragment_home2.xml
index da34b78..127f82d 100644
--- a/app/src/main/res/layout/fragment_home2.xml
+++ b/app/src/main/res/layout/fragment_home2.xml
@@ -556,6 +556,82 @@
/>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/values/custom_resources.xml b/app/src/main/res/values/custom_resources.xml
index dab1d37..679e9f7 100644
--- a/app/src/main/res/values/custom_resources.xml
+++ b/app/src/main/res/values/custom_resources.xml
@@ -6,6 +6,13 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index d983e22..4532bff 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -135,7 +135,7 @@
GAMES
Coming soonn on Woka
WOKA LIVE TV
- BLOGS
+ Blogs
MASILA
PLAY TRAILER
\ No newline at end of file