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

view plain
  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>

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

view plain
  1. <?xmlversion= "1.0" encoding= "utf-8" ?>
  2. <A>
  3. <B></B>
  4. </A>
view plain
  1. 其中A extends LinerLayout,B extends TextView.

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

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

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

view plain
  1. package com.android.tutor;
  2. import android.content.Context;
  3. import android.graphics.Canvas;
  4. import android.graphics.Color;
  5. import android.graphics.Paint;
  6. import android.graphics.Rect;
  7. import android.graphics.Paint.Style;
  8. import android.util.AttributeSet;
  9. import android.view.View;
  10. public class MyView extends View{
  11. private PaintmPaint;
  12. private ContextmContext;
  13. private static final StringmString= "WelcometoMrWei'sblog" ;
  14. public MyView(Contextcontext){
  15. super (context);
  16. }
  17. public MyView(Contextcontext,AttributeSetattr)
  18. {
  19. super (context,attr);
  20. }
  21. @Override
  22. protected void onDraw(Canvascanvas){
  23. //TODOAuto-generatedmethodstub
  24. super .onDraw(canvas);
  25. mPaint=new Paint();
  26. //设置画笔颜色
  27. mPaint.setColor(Color.RED);
  28. //设置填充
  29. mPaint.setStyle(Style.FILL);
  30. //画一个矩形,前俩个是矩形左上角坐标,后面俩个是右下角坐标
  31. canvas.drawRect(new Rect( 10 , 10 , 100 , 100 ),mPaint);
  32. mPaint.setColor(Color.BLUE);
  33. //绘制文字
  34. canvas.drawText(mString,10 , 110 ,mPaint);
  35. }
  36. }

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

view plain
  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>

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

OK,大功告成,今天就写到这里,开始做饭了,老婆孩子等我做饭了,lol~

更多相关文章

  1. Android(安卓)Reveal圆形Activity转场动画
  2. 通过Html网页调用本地安卓(android)app程序代码
  3. Android中Fragment的使用
  4. Android中各种Adapter的使用方法
  5. Android动画之属性动画(Property Animation)(三)
  6. android 百分比控件的使用
  7. Android(安卓)机器人:使用系统资源
  8. 安卓NDK——原生开发工具包
  9. 【Android】显示网络图片代码分析

随机推荐

  1. Android Studio导入项目时出现,弹框说SDK
  2. android录制视频流程
  3. android中改变标题栏的背景色
  4. Android如何查找应用中调用的系统资源
  5. android 图片旋转 反锯齿
  6. Delphi XE5 for Android(安卓)(五)
  7. Android的crash的类型及原因
  8. 从中间扩展和缩小
  9. Android Paint Style
  10. android maven Unable to execute dex: M