Android 什么';当硬件加速为真和假时,绘图模型的区别是什么?

Android 什么';当硬件加速为真和假时,绘图模型的区别是什么?,android,hardware-acceleration,Android,Hardware Acceleration,我有一个自定义线性布局和自定义文本视图,文本视图位于中心。请参见xml布局: <com.example.androidtest.MyLinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/container" android:layout_width="match_parent

我有一个自定义线性布局和自定义文本视图,文本视图位于中心。请参见xml布局:

<com.example.androidtest.MyLinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#ffff0000"
tools:context="com.example.androidtest.MainActivity"
tools:ignore="MergeRootFrame" >

<com.example.androidtest.MyTextView 
    android:id="@+id/test"
    android:text="abc"
    android:layout_gravity="center"
    android:background="#4400ff00"
    android:clickable="true"
    android:layout_width="100px"
    android:layout_height="100px"
    />

</com.example.androidtest.MyLinearLayout>
示例1:硬件加速:true/false,文本视图背景色:0xff00ff00结果:…->onClick->onDraw在MyTextView中

(请注意,背景色现在变为半透明)

示例2:硬件加速:false,文本视图背景色:0x4400ff00结果:…->在MyLinearLayout中单击onDraw->onDraw->MyTextView中的onDraw

示例3:硬件加速:true,文本视图背景色:0x4400ff00结果:…->onClick->onDraw在MyTextView中

问题1:表示在软渲染管道中,视图层次结构中与脏区域相交的任何视图也将重新绘制。那么根据示例1,它已经优化了吗


问题2:在示例3中,为什么不调用MyLinearLayout中的
onDraw
方法?怎么可能呢?是否需要先绘制父视图,然后使用TextView进行alpha混合?

q2:通过硬件加速,布局视图将从显示列表中绘制,并且不应调用onDraw,只应调用无效视图的onDraw。是的,我实现了这一点。应该有一个硬件纹理来备份父对象。
    tv=(MyTextView)findViewById(R.id.test);
    tv.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
                    System.out.println("onClick");
            tv.invalidate();
        }
    });