ImageVerifierCode 换一换
格式:DOCX , 页数:13 ,大小:28.72KB ,
资源ID:754450      下载积分:1 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-754450.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Android自定义View.docx)为本站会员(b****2)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

Android自定义View.docx

1、Android自定义ViewAndroid高手进阶教程(三)之-Android 中自定义View的应用. 2010-04-18 21:11:25标签:Android 进阶 View 定义 教程 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。 大家好我们今天的教程是在Android 教程中自定义View 的学习,对于初学着来说,他们习惯了Android 传统的页面布局方式,如下代码:view plaincopy to clipboardprint?1. 2. 7. 12. 13. 14. 19. 24. 当然上面的布局方式可以帮助我们完成

2、简单应用的开发了,但是如果你想写一个复杂的应用,这样就有点牵强了,大家不信可以下源码都研究看看,高手写的布局方式,如上面的布局高手通常是这样写的:view plaincopy to clipboardprint?1. 2. 3. 4. 5. 6. 7. 8. view plaincopy to clipboardprint?其中A extends LinerLayout, B extends TextView. 其中A extends LinerLayout, B extends TextView.为了帮助大家更容易理解,我写了一个简单的Demo ,具体步骤如下:首先新建一个Android 工

3、程 命名为ViewDemo .然后自定义一个View 类,命名为MyView(extends View) .代码如下:1. viewplaincopytoclipboardprint? 2. packagecom.android.tutor; 3. importandroid.content.Context; 4. importandroid.graphics.Canvas; 5. importandroid.graphics.Color; 6. importandroid.graphics.Paint; 7. importandroid.graphics.Rect; 8. importand

4、roid.graphics.Paint.Style; 9. importandroid.util.AttributeSet; 10. importandroid.view.View; 11. publicclassMyViewextendsView 12. privatePaintmPaint; 13. privateContextmContext; 14. privatestaticfinalStringmString=WelcometoMrWeisblog; 15. 16. publicMyView(Contextcontext) 17. super(context); 18. 19. 2

5、0. publicMyView(Contextcontext,AttributeSetattr) 21. 22. super(context,attr); 23. 24. 25. Override 26. protectedvoidonDraw(Canvascanvas) 27. /TODOAuto-generatedmethodstub 28. super.onDraw(canvas); 29. 30. mPaint=newPaint(); 31. 32. /设置画笔颜色 33. mPaint.setColor(Color.RED); 34. /设置填充 35. mPaint.setStyl

6、e(Style.FILL); 36. 37. /画一个矩形,前俩个是矩形左上角坐标,后面俩个是右下角坐标 38. canvas.drawRect(newRect(10,10,100,100),mPaint); 39. 40. mPaint.setColor(Color.BLUE); 41. /绘制文字 42. canvas.drawText(mString,10,110,mPaint); 43. 44. 45. packagecom.android.tutor; 46. importandroid.content.Context; 47. importandroid.graphics.Canv

7、as; 48. importandroid.graphics.Color; 49. importandroid.graphics.Paint; 50. importandroid.graphics.Rect; 51. importandroid.graphics.Paint.Style; 52. importandroid.util.AttributeSet; 53. importandroid.view.View; 54. publicclassMyViewextendsView 55. privatePaintmPaint; 56. privateContextmContext; 57.

8、privatestaticfinalStringmString=WelcometoMrWeisblog; 58. 59. publicMyView(Contextcontext) 60. super(context); 61. 62. 63. publicMyView(Contextcontext,AttributeSetattr) 64. 65. super(context,attr); 66. 67. 68. Override 69. protectedvoidonDraw(Canvascanvas) 70. /TODOAuto-generatedmethodstub 71. super.

9、onDraw(canvas); 72. 73. mPaint=newPaint(); 74. 75. /设置画笔颜色 76. mPaint.setColor(Color.RED); 77. /设置填充 78. mPaint.setStyle(Style.FILL); 79. 80. /画一个矩形,前俩个是矩形左上角坐标,后面俩个是右下角坐标 81. canvas.drawRect(newRect(10,10,100,100),mPaint); 82. 83. mPaint.setColor(Color.BLUE); 84. /绘制文字 85. canvas.drawText(mString,1

10、0,110,mPaint); 86. 87. 88. 89. 然后将我们自定义的View加入到main.xml布局文件中,代码如下: 90. viewplaincopytoclipboardprint? 91. 92. 97. 102. 106. 107. 108. 113. 118. 122. 最后执行之,效果如下图:OK,大功告成,今天就写到这里,开始做饭了,老婆孩子等我做饭了,lol对于Android系统的自定义View可能大家都熟悉了,对于自定义View的属性添加,以及Android的Layout的命名空间问题,很多网友还不是很清楚,今天Android123一起再带大家温习一下。 1.

11、 CwjView myView=new CwjView(context);复制代码如果用于游戏或整个窗体的界面,我们可能直接在onCreate中setContentView(myView); 当然如果是控件,我们可能会需要从Layout的xml中声明,比如 1. 复制代码当然,我们也可以直接从父类声明比如 1. 复制代码上面我们仅用了父类View的两个属性,均来自android命名空间,而名称为layout_width或layout_height,我们自定义的控件可能有更多的功能,比如 1. 复制代码我们可以看到上面的三个属性,是我们自定义的。作为标准xml规范,可能还包含了类似 xmlns:

12、android= 这样的语句,对于定义完整的View,我们的命名空间为cwj,这里可以写为 xmlns:cwj= 或 xmlns:cwj= 都可以。对于定义的cwj命名空间和age、university以及city的三个属性我们如何定义呢? 在工程的res/values目录中我们新建一个cwj_attr.xml文件,编码方式为utf-8是一个好习惯,内容如下 1. 2. 3. 4. 5. 6. 7. 8. 复制代码这里我们可能对format不是很熟悉,目前Android系统内置的格式类型有integer比如ProgressBar的进度值,float比如 RatingBar的值可能是3.5颗星,

13、boolean比如ToggleButton的是否勾选,string比如TextView的text属性,当然除了我们常见的基础类型外,Android的属性还有特殊的比如color是用于颜色属性的,可以识别为#FF0000等类型,当然还有 dimension的尺寸类型,比如23dip,15px,18sp的长度单位,还有一种特殊的为reference,一般用于引用+id/cwj drawable/xxx这样的类型。当然什么时候用reference呢? 我们就以定义一个颜色为例子, 1. 复制代码这里我们用了逻辑或的运算符,定义的红色是颜色类型的,同时可以被引用当然,对于我们自定义的类中,我们需要使用

14、一个名为obtainStyledAttributes的方法来获取我们的定义。在我们自定义View的构造方法(Context context, AttributeSet attrs)的重载类型中可以用 1. public CwjView(Context context, AttributeSet attrs) 2. super(context, attrs);3. TypedArray a = context.obtainStyledAttributes(attrs,4. R.styleable.cwj_attr);5. mAge = a.getInteger(R.styleable.CwjVi

15、ew_age, 22);6. mCity = a.getString(R.styleable.CwjView_city, shanghai);7. mUniversity= a.getString(R.styleable.CwjView_university, sjtu);8. 9. a.recycle(); /Android123提示大家不要忘了回收资源10. 11. 复制代码这样类的全局成员变量 mAge、mCity就获取了我们需要的内容,当然根据layout中的数值我们自定义的CwjView需要动态的处理一些数据的情况,可以使用AttributeSet类的getAttributeReso

16、urceValue方法获取。 1. public CwjView(Context context, AttributeSet attrs)2. 3. super(context, attrs);4. resId = attrs.getAttributeResourceValue(.android123.CwjView, age, 100); 5. resId = attrs.getAttributeResourceValue(.android123.CwjView, city, shanghai);6. /resID就可以任意使用了7. 复制代码以上两种方法中,参数的最后一个数值为默认的,如果

17、您有不明白的地方可以来函到 android123 我们会在第一时间回复。(文/Android开发网)Android 自定义View2009年10月13日 星期二 18:12在values/attrs.xml中:编写MyView.java,继承Viewpackage test.cuntomizedview;import java.util.Calendar;import test.cuntomizedview.R;import android.content.Context;import android.content.res.TypedArray;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.os.SystemClock;import android.util.AttributeSet;import android.view.View;public class MyView extends View

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2