Android ViewStub显示VISIBLE与消失GONE,Kotlin(2)
Android ViewStub显示VISIBLE与消失GONE,Kotlin(2)
在 Android ViewStub显示VISIBLE与消失GONE,Kotlin-CSDN博客 基础上完善。
import android.os.Bundle
import android.util.Log
import android.view.View
import android.view.ViewStub
import android.widget.Button
import androidx.appcompat.app.AppCompatActivity
import androidx.tracing.Traceclass ImageActivity : AppCompatActivity() {companion object {const val TAG = "fly/ImageActivity"}private var mCheckBox: MyView? = nulloverride fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_img)Log.d(TAG, "Trace.isEnabled()=${Trace.isEnabled()}")val viewStub = findViewById<ViewStub>(R.id.vs)val button = findViewById<Button>(R.id.button)var choose = falsebutton.setOnClickListener {val label = "${TAG}:onClick"Trace.beginSection(label)choose = !chooseLog.d(TAG, "choose=$choose")if (choose) {viewStub.visibility = View.VISIBLEmCheckBox = findViewById<MyView>(R.id.cb)}mCheckBox?.isChecked = choose//如果有逻辑控制需要,单独控制CheckBox的显示/隐藏。//ViewStub的显示、隐藏,会inflate view。Trace.endSection()}}
}
特别注意:
ViewStub的首次显示(View.VISIBLE)、隐藏(View.INVISIBLE),会inflate view。
Android ViewStub显示VISIBLE与消失GONE,Kotlin-CSDN博客文章浏览阅读682次,点赞20次,收藏25次。CPU返回后,会直接将GraphicBuffer提交给SurfaceFlinger,告诉SurfaceFlinger进行合成,但是这个时候GPU可能并未完成之前的图像渲染,这时候就牵扯到一个同步,Android中,用的是Fence机制,SurfaceFlinger合成前会查询Fence,如果GPU渲染没有结束,则等待GPU渲染结束,GPU结束后,会通知SurfaceFlinger进行合成,SF合成后,提交显示,最终完成图像的渲染显示。https://zhangphil.blog.csdn.net/article/details/147121950