Android ViewPager2, веб-просмотр, полноэкранные и сенсорные события - PullRequest
0 голосов
/ 22 января 2020

Я пытаюсь проверить концепцию, когда веб-просмотр загружает локальные HTML файлы, и пользователи могут перемещаться влево / вправо до go до следующего файла, находясь в полноэкранном режиме. Я использую ViewPager2 и обычные веб-представления. У меня эта часть работает, но я хочу, чтобы пользователь нажал один раз, отобразил или скрыл панель инструментов, строку состояния и элементы управления навигацией. Прямо сейчас у меня есть код setOnTouchListener на viewPager, но похоже, что сенсорные события потребляются веб-просмотром.

Как я могу выполнить sh, когда одним нажатием можно переключаться между полноэкранным и неэкранным режимами? -полноэкранный режим, не прерывая подкачку ViewPager и долгое нажатие в веб-представлении?

Вот большая часть моего кода. Я оставляю детали для краткости, которые не должны быть связаны.

class MyActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        setContentView(R.layout.activity_my)
        supportActionBar?.setDisplayHomeAsUpEnabled(true)

        viewPager.setOnTouchListener { _, event ->
            when(event.action) {
                MotionEvent.ACTION_DOWN -> {
                    initialX = event.rawX
                    initialY = event.rawY
                    moved = false
                }

                MotionEvent.ACTION_MOVE -> {
                    if (event.rawX != initialX || event.rawY != initialY) {
                        moved = true
                    }
                }

                MotionEvent.ACTION_UP -> {
                    if (!moved) {
                        toggle()
                    }
                }
            }
            true
        }

        viewPager.adapter = MyAdapter(items, this)
    }
}
class MyAdapter(private val items: List<String>) : RecyclerView.Adapter<MyViewHolder>() {

    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyViewHolder {
        val view = LayoutInflater.from(parent.context)
            .inflate(R.layout.view_pager_item, parent, false) as WebView
        return MyViewHolder(view, items)
    }

    override fun onBindViewHolder(holder: MyViewHolder, position: Int) {
        holder.bind(position)
    }

    override fun getItemCount(): Int {
        return items.size
    }
}

class MyViewHolder (private val webView: WebView, private val items: List<String>) :
    RecyclerView.ViewHolder(webView) {
    internal fun bind(position: Int) {
        webView.loadUrl("file://" + items[position])
    }
}
...