added resize refresh when rotating

remotes/origin/devel
yattoz 2019-12-13 22:04:45 +01:00
parent 53614b3c86
commit a971343c3b
2 changed files with 25 additions and 7 deletions

View File

@ -11,6 +11,7 @@ import androidx.fragment.app.Fragment
import androidx.lifecycle.ViewModelProviders import androidx.lifecycle.ViewModelProviders
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout
import fr.forum_thalie.tsumugi.R import fr.forum_thalie.tsumugi.R
class NewsFragment : Fragment() { class NewsFragment : Fragment() {
@ -47,17 +48,18 @@ class NewsFragment : Fragment() {
Log.d(tag, "webview already created!?") Log.d(tag, "webview already created!?")
} }
newsViewModel.root.addOnLayoutChangeListener(orientationLayoutListener)
return newsViewModel.root return newsViewModel.root
} }
newsViewModel = newsViewModel =
ViewModelProviders.of(this).get(NewsViewModel::class.java) ViewModelProviders.of(this).get(NewsViewModel::class.java)
val root = inflater.inflate(R.layout.fragment_news, container, false) as androidx.swiperefreshlayout.widget.SwipeRefreshLayout newsViewModel.root = inflater.inflate(R.layout.fragment_news, container, false) as SwipeRefreshLayout
viewManager = LinearLayoutManager(context) viewManager = LinearLayoutManager(context)
viewAdapter = NewsAdapter(newsViewModel.newsArray, context!!) viewAdapter = NewsAdapter(newsViewModel.newsArray, context!!)
recyclerView = root.findViewById<RecyclerView>(R.id.news_recycler).apply { recyclerView = newsViewModel.root.findViewById<RecyclerView>(R.id.news_recycler).apply {
// use this setting to improve performance if you know that changes // use this setting to improve performance if you know that changes
// in content do not change the layout size of the RecyclerView // in content do not change the layout size of the RecyclerView
setHasFixedSize(true) setHasFixedSize(true)
@ -69,13 +71,28 @@ class NewsFragment : Fragment() {
adapter = viewAdapter adapter = viewAdapter
} }
root.setOnRefreshListener { (newsViewModel.root as SwipeRefreshLayout).setOnRefreshListener {
newsViewModel.fetch((newsViewModel.root as SwipeRefreshLayout), viewAdapter, context!!)
newsViewModel.fetch(root, viewAdapter, context!!)
} }
return root newsViewModel.root.addOnLayoutChangeListener(orientationLayoutListener)
return newsViewModel.root
}
private val orientationLayoutListener : View.OnLayoutChangeListener = View.OnLayoutChangeListener { _: View, _: Int, _: Int, _: Int, _: Int, _: Int, _: Int, _: Int, _: Int ->
val viewHeight = (newsViewModel.root.rootView?.height ?: 1)
val viewWidth = (newsViewModel.root.rootView?.width ?: 1)
val newRatio = if (viewWidth > 0)
(viewHeight*100)/viewWidth
else
100
if (newsViewModel.screenRatio != newRatio) {
newsViewModel.fetch((newsViewModel.root as SwipeRefreshLayout), viewAdapter, context!!)
newsViewModel.screenRatio = newRatio
}
} }
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {

View File

@ -26,6 +26,7 @@ import kotlin.math.min
class NewsViewModel : ViewModel() { class NewsViewModel : ViewModel() {
var screenRatio: Int = 100
lateinit var root: View lateinit var root: View
var webView: WebView? = null var webView: WebView? = null
var webViewNews: WebViewNews? = null var webViewNews: WebViewNews? = null