onDraw()先于dispatchDraw()执行,用于本身控件的绘制,dispatchDraw()用于子控件的绘制
onDraw()绘制的内容可能会被子控件覆盖而dispatchDraw()是子控件的绘制,所以是覆盖在onDraw()上的
布局:
<? version=\"1.0\" encoding=\"utf-8\"?>
<LinearLayout ns:android=\"http://schemas.android.com/apk/res/android\"
ns:tools=\"http://schemas.android.com/tools\"
android:layout_width=\"match_parent\"
android:layout_height=\"match_parent\"
android:orientation=\"vertical\"
tools:context=\".MainActivity\">
<com.example.myviewpage.ViewPagerIndicator
android:layout_width=\"match_parent\"
android:layout_height=\"50dp\"
android:background=\"#999999\"
android:id=\"@+id/main_vpi\">
<TextView
android:layout_width=\"0dp\"
android:layout_height=\"match_parent\"
android:layout_weight=\"1\"
android:text=\"标题1\"
android:background=\"#f00\"
android:gravity=\"center\"/>
<TextView
android:layout_width=\"0dp\"
android:layout_height=\"match_parent\"
android:layout_weight=\"1\"
android:text=\"标题2\"
android:gravity=\"center\"/>
<TextView
android:layout_width=\"0dp\"
android:layout_height=\"match_parent\"
android:layout_weight=\"1\"
android:text=\"标题3\"
android:gravity=\"center\"/>
</com.example.myviewpage.ViewPagerIndicator>
<android.support.v4.view.ViewPager
android:layout_width=\"match_parent\"
android:layout_height=\"match_parent\"
android:id=\"@+id/mian_vp\"/>
</LinearLayout>
ViwPagerIndicator是继承自LinearLayout的自定义控件目的是绘制一个三角形的指示器
ViwPagerIndicator使用dispatchDraw():
@Override
protected void dispatchDraw(Canvas canvas) {
super.dispatchDraw(canvas);
canvas.save();
canvas.translate(minitTrianslationX+mTrianslationX,getHeight());
canvas.drawPath(path,paint);
canvas.restore();
Log.i(TAG, \"dispatchDraw: \");
}
效果:
ViwPagerIndicator使用onDraw():
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.save();
canvas.translate(minitTrianslationX+mTrianslationX,getHeight());
canvas.drawPath(path,paint);
canvas.restore();
Log.i(TAG, \"onDraw: \");
}
效果:
可以看出,这种情况是应该使用dispatchDraw()保证绘制的内容不被子控件覆盖
---------------------
作者:久不见天晴
来源:CSDN
原文:https://blog.csdn.net/qq_34888942/article/details/80192848
版权声明:本文为博主原创文章,转载请附上博文链接!
继续阅读与本文标签相同的文章
PAT-L1-049 天梯赛座位分配
-
Spring Cloud Alibaba实战(一) - 概述
2026-05-18栏目: 教程
-
php系列----->通过PHP数组实现队列
2026-05-18栏目: 教程
-
MySQL 数据库铁律
2026-05-18栏目: 教程
-
Java 13 明天发布,最新最全新特性解读
2026-05-18栏目: 教程
-
如何使用phpMyAdmin导出Joomla数据库
2026-05-18栏目: 教程
