【问题标题】:Android Anko Kotlin - Preload ViewsAndroid Anko Kotlin - 预加载视图
【发布时间】:2019-10-16 20:32:31
【问题描述】:

我对 Android 中的 Kotlin 有点陌生,我注意到 Anko 库为布局创建、滑动活动视图和使用代码定义视图提供了一个很好的工具。

我正在尝试使用 Anko 定义不同的模板视图以显示异步,但在显示新视图之前,我想预加载它,例如网页或远程图像等。

我无法找到任何关于这是否可行的信息。

    override fun onCreate(savedInstanceState: Bundle?, persistentState: PersistableBundle?) {
        super.onCreate(savedInstanceState, persistentState)
        MyActivityUI().load("http://some.address.ip")
        val handler = Handler()
        handler.postDelayed({
            MyActivityUI().setContentView(this)
        }, 5000)
    }
}

class MyActivityUI : AnkoComponent<MyActivity> {
    lateinit var wv: WebView

    override fun createView(ui: AnkoContext<MyActivity>) = with(ui) {
        verticalLayout {
            wv = webView {
                webViewClient = WebViewClient()
            }.lparams(width = matchParent, height = matchParent)
        }
    }
}

这是部分但显示了我打算做什么,所以当 5s 计时器完成时,网页已经加载到视图,而不是开始加载

有什么建议吗?

【问题讨论】:

    标签: android kotlin anko


    【解决方案1】:

    要准确回答您的问题,您可以保留对父视图的引用并调用 addView 并将 webview 传入。但是您可能会考虑将可见性设置为 View.GONE/View.INVISIBLE 我不确定你的目标是什么。还可以考虑使用确定页面完成加载的回调,而不是一般的 5 秒。希望这可以帮助。

    【讨论】:

    • 嗯,是的,超时只是一个例子。发生的事情是我已经定义了几个布局并使用“.setContentView(this)”在它们之间进行更改。也许我需要在一个大视图中嵌入几个不同的视图,但这是我试图避免的。
    • @Hiny 你可以只拥有一个父视图并调用 view.add/remove 在它们之间切换。还可以考虑导航组件developer.android.com/guide/navigation/… 您可以预加载您的 webview,然后在导航组件加载后在片段上调用 ​​setContentView。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多