我有自定义的LinearLayout和自定义TextView,TextView位于中心。看到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>
我在两个类中重写onDraw
方法,并在MyTextView中添加一个类似&#34; onDraw的日志输出,名为&#34;。
我在TextView上设置onClickListener
,我在其中调用invalidate()
。
tv=(MyTextView)findViewById(R.id.test);
tv.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
System.out.println("onClick");
tv.invalidate();
}
});
示例1:硬件加速: true / false ,TextView背景颜色: 0xff00ff00 结果:...-&gt; onClick-&gt; MyTextView中的onDraw .. < / p>
(请注意,背景颜色现在变为半透明)
示例2:硬件加速:错误,TextView背景颜色: 0x4400ff00 结果:... - &gt; onClick-&gt; onLraw in MyLinearLayout - &gt; MyTextView中的onDraw ..
示例3:硬件加速: true ,TextView背景颜色: 0x4400ff00 结果:... - &gt; onTime-&gt; MyTextView中的onDraw ..
问题1:document表示在软渲染管道中,视图层次中与脏区域相交的任何视图也将被重绘。因此,根据示例1,它是否已经优化?
问题2:在示例3中,为什么MyLinearLayout中的onDraw
方法没有被调用?怎么会这样?是不是需要首先绘制父项,然后使用TextView进行alpha混合?