大家好我们今天的教程是在Android教程中自定义View的学习,对于初学着来说,他们习惯了Android传统的页面布局方式,如下代码:

[java] view plain copy
  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
  3. android:orientation="vertical"
  4. android:layout_width="fill_parent"
  5. android:layout_height="fill_parent"
  6. >
  7. <TextView
  8. android:layout_width="fill_parent"
  9. android:layout_height="wrap_content"
  10. android:text="@string/hello"
  11. />
  12. </LinearLayout>

当然上面的布局方式可以帮助我们完成简单应用的开发了,但是如果你想写一个复杂的应用,这样就有点牵强了,大家不信可以下源码都研究看看,高手写的布局方式,如上面的布局高手通常是这样写的:

[java] view plain copy
  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <A>
  3. <B></B>
  4. </A>

[java] view plain copy
  1. 其中AextendsLinerLayout,BextendsTextView.

为了帮助大家更容易理解,我写了一个简单的Demo,具体步骤如下:

首先新建一个Android工程 命名为ViewDemo.

然后自定义一个View类,命名为MyView(extends View).代码如下:

[java] view plain copy
  1. packagecom.android.tutor;
  2. importandroid.content.Context;
  3. importandroid.graphics.Canvas;
  4. importandroid.graphics.Color;
  5. importandroid.graphics.Paint;
  6. importandroid.graphics.Rect;
  7. importandroid.graphics.Paint.Style;
  8. importandroid.util.AttributeSet;
  9. importandroid.view.View;
  10. publicclassMyViewextendsView{
  11. privatePaintmPaint;
  12. privateContextmContext;
  13. privatestaticfinalStringmString="WelcometoMrWei'sblog";
  14. publicMyView(Contextcontext){
  15. super(context);
  16. }
  17. publicMyView(Contextcontext,AttributeSetattr)
  18. {
  19. super(context,attr);
  20. }
  21. @Override
  22. protectedvoidonDraw(Canvascanvas){
  23. //TODOAuto-generatedmethodstub
  24. super.onDraw(canvas);
  25. mPaint=newPaint();
  26. //设置画笔颜色
  27. mPaint.setColor(Color.RED);
  28. //设置填充
  29. mPaint.setStyle(Style.FILL);
  30. //画一个矩形,前俩个是矩形左上角坐标,后面俩个是右下角坐标
  31. canvas.drawRect(newRect(10,10,100,100),mPaint);
  32. mPaint.setColor(Color.BLUE);
  33. //绘制文字
  34. canvas.drawText(mString,10,110,mPaint);
  35. }
  36. }

然后将我们自定义的View加入到main.xml布局文件中,代码如下:

[java] view plain copy
  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
  3. android:orientation="vertical"
  4. android:layout_width="fill_parent"
  5. android:layout_height="fill_parent"
  6. >
  7. <TextView
  8. android:layout_width="fill_parent"
  9. android:layout_height="wrap_content"
  10. android:text="@string/hello"
  11. />
  12. <com.android.tutor.MyView
  13. android:layout_width="fill_parent"
  14. android:layout_height="fill_parent"
  15. />
  16. </LinearLayout>

最后执行之,效果如下图:


更多相关文章

  1. [置顶] Android(安卓)Studio 配置优化
  2. Google确认下一个Android版本将不会使用Oracle的Java API,转而使
  3. Android源代码下载指南(图解)
  4. Android(安卓)录音实现追踪(Android(安卓)7.1)
  5. Android日志系统Logcat源代码简要分析
  6. Android(安卓)资源(resource)学习小结
  7. Android调用webservice
  8. Android获取其他包的Context实例,然后调用它的方法
  9. android应用程序分享,蓝牙文件传输(代码)

随机推荐

  1. Android四大组件之Activity
  2. android 各版本发布时间
  3. Android日志工具
  4. Android(安卓)一些注意
  5. 避免在Android上冷启动
  6. 探索Android中的Parcel
  7. android 开发环境安装和测试中常出现的问
  8. Android读取JSON格式数据
  9. Android(安卓)Animation学习
  10. androidUI控件