<?xml version="1.0" encoding="utf-8"?>
<example.com.exampledrawview.CustomLinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical">
<example.com.exampledrawview.CustomTextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TextView"/>
</example.com.exampledrawview.CustomLinearLayout>
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
Log.d("Drawing View", "onCreate() executed")
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
}
override fun onStart() {
Log.d("Drawing View", "onStart() executed")
super.onStart()
}
override fun onResume() {
Log.d("Drawing View", "onResume() executed")
super.onResume()
}
override fun onWindowFocusChanged(hasFocus: Boolean) {
Log.d("Drawing View", "onWindowFocusChanged() executed")
super.onWindowFocusChanged(hasFocus)
}
}
class CustomLinearLayout(context: Context?, attrs: AttributeSet?) : LinearLayout(context, attrs) {
override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) {
Log.d("Drawing View", "LinearLayout: entering onMeasure(). Measured width: $measuredWidth")
super.onMeasure(widthMeasureSpec, heightMeasureSpec)
Log.d("Drawing View", "LinearLayout: leaving onMeasure(). Measured width: $measuredWidth")
}
override fun onLayout(changed: Boolean, l: Int, t: Int, r: Int, b: Int) {
Log.d("Drawing View", "LinearLayout: entering onLayout(). Actual width: $width")
super.onLayout(changed, l, t, r, b)
Log.d("Drawing View", "LinearLayout: leaving onLayout(). Actual width: $width")
}
}
class CustomTextView(context: Context?, attrs: AttributeSet?) : TextView(context, attrs) {
override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) {
Log.d("Drawing View", "TextView: entering onMeasure(). Measured width: $measuredWidth")
super.onMeasure(widthMeasureSpec, heightMeasureSpec)
Log.d("Drawing View", "TextView: leaving onMeasure(). Measured width: $measuredWidth")
}
override fun layout(l: Int, t: Int, r: Int, b: Int) {
Log.d("Drawing View", "TextView: entering layout(). Actual width: $width")
super.layout(l, t, r, b)
Log.d("Drawing View", "TextView: leaving layout(). Actual width: $width")
}
override fun draw(canvas: Canvas?) {
Log.d("Drawing View", "TextView: draw() executed")
super.draw(canvas)
}
}