当前位置: 首页 > article >正文

Android AsyncLayoutInflater异步加载xml布局文件,Kotlin

Android AsyncLayoutInflater异步加载xml布局文件,Kotlin

 

 

implementation "androidx.asynclayoutinflater:asynclayoutinflater:1.1.0-alpha01"

 

 



import android.os.Bundle
import android.util.Log
import android.view.View
import android.view.ViewGroup
import androidx.appcompat.app.AppCompatActivity
import androidx.asynclayoutinflater.view.AsyncLayoutInflater

class MyActivity : AppCompatActivity() {
    companion object {
        const val TAG = "fly/MyActivity"
    }

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        Log.d(TAG, "onCreate开始...")

        AsyncLayoutInflater(this).inflate(R.layout.activity_my, null, object : AsyncLayoutInflater.OnInflateFinishedListener {
            override fun onInflateFinished(view: View, resid: Int, parent: ViewGroup?) {
                Log.d(TAG, "onInflateFinished")
                setContentView(view)
            }
        })

        Log.d(TAG, "onCreate结束")
    }
}

 

 

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="hello,world!" />

    <com.appdemo.MyLongTimeView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:scaleType="centerCrop"
        android:src="@mipmap/image" />
</LinearLayout>

 

 



import android.content.Context
import android.util.AttributeSet
import android.util.Log
import androidx.appcompat.widget.AppCompatImageView

class MyLongTimeView : AppCompatImageView {
    companion object {
        const val TAG = "fly/MyLongTimeView"
    }

    constructor(ctx: Context, attribute: AttributeSet) : super(ctx, attribute) {
        Log.d(TAG, "开始sleep...")
        Thread.sleep(6000)
        Log.d(TAG, "sleep结束")
    }
}

 

 

 

Android ViewStub延迟初始化加载布局View,Kotlin-CSDN博客文章浏览阅读274次。CPU返回后,会直接将GraphicBuffer提交给SurfaceFlinger,告诉SurfaceFlinger进行合成,但是这个时候GPU可能并未完成之前的图像渲染,这时候就牵扯到一个同步,Android中,用的是Fence机制,SurfaceFlinger合成前会查询Fence,如果GPU渲染没有结束,则等待GPU渲染结束,GPU结束后,会通知SurfaceFlinger进行合成,SF合成后,提交显示,最终完成图像的渲染显示。而对SF来说,只要有合成任务,它就得再去申请VSYNC-sf。 https://blog.csdn.net/zhangphil/article/details/145861445

 


http://www.kler.cn/a/567986.html

相关文章:

  • 支持向量机(Support Vector Machine,SVM)详细解释(带示例)
  • 关于手眼标定的数学模型及标定流程
  • Seaborn知识总结
  • 【基于PHP的CMS动态网站的渗透测试流程】
  • android studio gradle 阿里镜像
  • Spark内存迭代计算
  • 电脑软件:推荐一款非常实用的PDF合并分割工具PDFsam
  • 第十三届蓝桥杯大赛软件赛决赛C/C++ 大学 B 组
  • PySpark实现Snowflake数据导出到Amazon Redshift
  • Vue进阶之Vue2源码解析
  • python 使用 venv 创建虚拟环境 (VSCode)
  • 网络运维学习笔记(DeepSeek优化版)009网工初级(HCIA-Datacom与CCNA-EI)路由理论基础与静态路由
  • 游戏引擎学习第131天
  • 定制开发开源AI大模型S2B2C商城小程序在私域流量池构建中的应用探索
  • Linux(ftrace)__mcount的实现原理
  • SpringMVC(2)传递JSON、 从url中获取参数、上传文件、cookie 、session
  • bean的管理-03.第三方bean
  • ChatGPT与DeepSeek:AI语言模型的巅峰对决
  • C++-第二十章:智能指针
  • 【Java】I/O 流篇 —— 打印流与压缩流