程序开发中,常常需要完成某一个特殊效果而绘制一些内容。
下面简单说明如何在View中绘制简单内容并显示出来。
在自定义的View中绘制内容,主要是在onDraw方法中添加绘图操作。如果Paint可以共享,不妨把它放到类变量里面去,具体参考如下:
public class MyView extends View { private Paint mPaint; private void initial() { mPaint = new Paint(); mPaint.setAntiAlias(true); this.setKeepScreenOn(true); mPaint.setColor(Color.RED); } public MyView(Context context) { super(context); initial(); } public MyView(Context context, AttributeSet attrs) { super(context, attrs); initial(); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); canvas.drawColor(Color.WHITE); canvas.drawText("绘制文字", 10, 20, mPaint); canvas.drawCircle(35, 50, 20, mPaint); } }
说明:
- 抗锯齿设置:mPaint.setAntiAlias(true);
- 设置画笔颜色:mPaint.setColor(Color.RED);
- 绘制背景颜色:canvas.drawColor(Color.WHITE);
- 绘制文字:canvas.drawText("绘制文字", 10, 20, mPaint);
- 绘制圆:canvas.drawCircle(35, 50, 20, mPaint);
开发文档对参数的讲解比较详细,在此不赘述!
下面看看如何显示到界面上,分别从代码和XML文件两个方面简单说明。
1、代码引用
public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(new MyView(this)); } }为了更好的看到坐标的相对关系,这里通过代码设置了全屏和无标题栏(也可以从Manifest文件中设置):
- 全屏:getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
- 无标题栏:requestWindowFeature(Window.FEATURE_NO_TITLE);
2、XML文件引用
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <com.test.MyView android:layout_width="wrap_content" android:layout_height="wrap_content"/> </LinearLayout>
说明:
- 注意MyView中构造函数的声明,从XML文件指定的View,需要实现含有AttributeSet参数的构造函数,否则会提示错误;
效果如图:
希望对你有所帮助!:)
相关推荐
自定义view 画笔绘制记录一下而已,好记性不如烂笔头
Android自定义View基本绘制流程及实例
自定义View,绘制水平/垂直居中文本。精确度无限接近原生TextView 博客地址http://blog.csdn.net/u014702653/article/details/51985821
* onMeasure() (在这个方法里指定自己的宽高) -> onDraw() (绘制自己的内容) * * ViewGroup * onMeasure() (指定自己的宽高, 所有子View的宽高)-> onLayout() (摆放所有子View) -> onDraw() (绘制内容)
自定义View绘制一个太极旋转图片demo
该demo 用的是自定义View实现了绘制一个机器人,其中用到了自定义View中的,Paint,Canvas类中的各种方法,对于新手应该有比较大的帮助..
自定义view控件 canvas绘制自己的组件小demo
安卓自定义View基础-绘制饼图,详见http://blog.csdn.net/z1353095373/article/details/71627922
android里面自定义view的简化绘制流程图,方便大家记忆。
安卓自定义View基础-绘制点、线、矩形、圆形等详情查看http://blog.csdn.net/z1353095373/article/details/71601293
android自定义View之NotePad出鞘记,自定义NotePad,android自定义笔记本
雨松MOMO带大家盘点Android 中的自定义View界面的绘制 欢迎大家下载阅读。。
自定义view:简单了解Paint常用设置,Canvas的常用方法;
自定义View—日历的绘制,有onMesure、onLayout、onDraw方法等,具体讲解请看博客。
最简单的方法是利用ShapeDrawable,比如说你想用虚线要隔开两个控件,就可以在这两个控件中加个View,然后给它个虚线背景。 嗯,理论上就是这样子的,实现上也很简单。 <!-- drawable 文件 --> <?xml ...
自定义view(自动滚动文本框),AlwaysMarqueeTextView.java,复制到项目工程中即可使用
Android 粒子效果之雨(自定义View)Android 自定义 View 基础和原理实现 1.绘制下雨场景的个体、雨点(直线) 2.让直线动起来 3.处理边界问题 4.构造雨点对象 5.雨点大小设置 6.速度设置和角度设置等 7.添加多个...
Android 自定义画布canvas 实现绘制和清空画布功能,内含源码、apk
我们都知道 Android 中使用 Spannable 可以实现 TextView 富文本的显示,但是在自定义控件中如何使用 Spannable 绘制不同样式的文字呢? 例如这种效果,标题中的 分...那如何在自定义View 中使用 Spannable 呢? 答