Android 中自定义View的应用 (自绘TextView) ---- 转

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

view plain copy to clipboard print ?
  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 copy to clipboard print ?
  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <A>
  3. <B></B>
  4. </A>

view plain copy to clipboard print ?
  1. 其中AextendsLinerLayout,BextendsTextView.

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

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

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

view plain copy to clipboard print ?
  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布局文件中,代码如下:

view plain copy to clipboard print ?
  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 绘图
  2. Android,开源还是封闭?
  3. js调用android本地代码失败 兼容问题
  4. android 绘图
  5. android源码下载并绑定到Eclipse中
  6. Google Inbox如何跨平台重用代码?
  7. Android(安卓)中自定义控件和属性(attr.xml,declare-styleable,T
  8. android studio for android learning (九) android之Adapter用法
  9. 【Android】Android(安卓)SDK安装

随机推荐

  1. android中的守护线程
  2. Android(安卓)AlarmManager 应用
  3. android DatePicker和TimePicke用法
  4. Android(安卓)Studio(Gradle)解决库依赖
  5. android UI menu code
  6. android Socket实现简单聊天小程序
  7. Android(安卓)Dialog 简单封装
  8. Android利用canvas画各种图形
  9. android 自定义LinearLayout
  10. Android(安卓)EditText 让编辑框只能输入