Android自定义ViewWord文件下载.docx
- 文档编号:1008333
- 上传时间:2023-04-30
- 格式:DOCX
- 页数:13
- 大小:28.72KB
Android自定义ViewWord文件下载.docx
《Android自定义ViewWord文件下载.docx》由会员分享,可在线阅读,更多相关《Android自定义ViewWord文件下载.docx(13页珍藏版)》请在冰点文库上搜索。
TextView
8.
9.
wrap_content"
10.
text="
@string/hello"
11.
/>
12.<
/LinearLayout>
13.<
14.<
15.
16.
17.
18.
19.<
20.
21.
22.
23.
24.<
当然上面的布局方式可以帮助我们完成简单应用的开发了,但是如果你想写一个复杂的应用,这样就有点牵强了,大家不信可以下源码都研究看看,高手写的布局方式,如上面的布局高手通常是这样写的:
A>
<
B>
/B>
4.<
/A>
5.<
6.<
7.
8.<
其中AextendsLinerLayout,BextendsTextView.
其中AextendsLinerLayout,BextendsTextView.
为了帮助大家更容易理解,我写了一个简单的Demo,具体步骤如下:
首先新建一个Android工程命名为ViewDemo.
然后自定义一个View类,命名为MyView(extendsView).代码如下:
1.view
plaincopy
to
clipboardprint?
2.package
com.android.tutor;
3.import
android.content.Context;
4.import
android.graphics.Canvas;
5.import
android.graphics.Color;
6.import
android.graphics.Paint;
7.import
android.graphics.Rect;
8.import
android.graphics.Paint.Style;
9.import
android.util.AttributeSet;
10.import
android.view.View;
11.public
class
MyView
extends
View
{
12.
private
Paint
mPaint;
13.
Context
mContext;
14.
static
final
String
mString
=
"
Welcome
Mr
Wei'
s
blog"
;
public
MyView(Context
context)
super(context);
19.
}
context,AttributeSet
attr)
super(context,attr);
24.
25.
@Override
26.
protected
void
onDraw(Canvas
canvas)
27.
//
TODO
Auto-generated
method
stub
28.
super.onDraw(canvas);
29.
30.
mPaint
new
Paint();
31.
32.
//设置画笔颜色
33.
mPaint.setColor(Color.RED);
34.
//设置填充
35.
mPaint.setStyle(Style.FILL);
36.
37.
//画一个矩形,前俩个是矩形左上角坐标,后面俩个是右下角坐标
38.
canvas.drawRect(new
Rect(10,
10,
100,
100),
mPaint);
39.
40.
mPaint.setColor(Color.BLUE);
41.
//绘制文字
42.
canvas.drawText(mString,
110,
43.
44.}
45.package
46.import
47.import
48.import
49.import
50.import
51.import
52.import
53.import
54.public
{
55.
56.
57.
58.
59.
60.
61.
62.
}
63.
attr)
64.
65.
66.
67.
68.
@Override
69.
70.
stub
71.
72.
73.
74.
75.
//设置画笔颜色
76.
77.
//设置填充
78.
79.
80.
//画一个矩形,前俩个是矩形左上角坐标,后面俩个是右下角坐标
81.
82.
83.
84.
//绘制文字
85.
86.
87.}
88.
89.然后将我们自定义的View
加入到main.xml
布局文件中,代码如下:
90.view
91.<
92.<
93.
94.
95.
96.
97.<
98.
99.
100.
101.
102.<
com.android.tutor.MyView
103.
104.
105./>
106.<
107.<
108.<
109.
110.
111.
112.
113.<
114.
115.
116.
117.
118.<
119.
120.
121./>
122.<
最后执行之,效果如下图:
OK,大功告成,今天就写到这里,开始做饭了,老婆孩子等我做饭了,lol~
对于Android系统的自定义View可能大家都熟悉了,对于自定义View的属性添加,以及Android的Layout的命名空间问题,很多网友还不是很清楚,今天Android123一起再带大家温习一下。
1.CwjViewmyView=newCwjView(context);
复制代码
如果用于游戏或整个窗体的界面,我们可能直接在onCreate中setContentView(myView);
当然如果是控件,我们可能会需要从Layout的xml中声明,比如
1.
<
.android123.CwjView
2.
android:
/>
当然,我们也可以直接从父类声明比如
Viewclass="
.android123.CwjView"
上面我们仅用了父类View的两个属性,均来自android命名空间,而名称为layout_width或layout_height,我们自定义的控件可能有更多的功能,比如
cwj:
age="
22"
university="
sjtu"
city="
shanghai"
我们可以看到上面的三个属性,是我们自定义的。
作为标准xml规范,可能还包含了类似xmlns:
这样的语句,对于定义完整的View,我们的命名空间为cwj,这里可以写为xmlns:
cwj=或xmlns:
cwj=都可以。
对于定义的cwj命名空间和age、university以及city的三个属性我们如何定义呢?
在工程的res/values目录中我们新建一个cwj_attr.xml文件,编码方式为utf-8是一个好习惯,内容如下
xmlversion="
encoding="
?
resources>
declare-styleablename="
CwjView"
attrname="
age"
format="
integer"
city"
string"
university"
/declare-styleable>
/resources>
这里我们可能对format不是很熟悉,目前Android系统内置的格式类型有integer比如ProgressBar的进度值,float比如RatingBar的值可能是3.5颗星,boolean比如ToggleButton的是否勾选,string比如TextView的text属性,当然除了我们常见的基础类型外,Android的属性还有特殊的比如color是用于颜色属性的,可以识别为#FF0000等类型,当然还有dimension的尺寸类型,比如23dip,15px,18sp的长度单位,还有一种特殊的为reference,一般用于引用@+id/cwj@drawable/xxx这样的类型。
当然什么时候用reference呢?
我们就以定义一个颜色为例子,
red"
color|reference"
这里我们用了逻辑或的运算符,定义的红色是颜色类型的,同时可以被引用
当然,对于我们自定义的类中,我们需要使用一个名为obtainStyledAttributes的方法来获取我们的定义。
在我们自定义View的构造方法(Contextcontext,AttributeSetattrs)的重载类型中可以用
publicCwjView(Contextcontext,AttributeSetattrs){
super(context,attrs);
TypedArraya=context.obtainStyledAttributes(attrs,
R.styleable.cwj_attr);
mAge=a.getInteger(R.styleable.CwjView_age,22);
mCity=a.getString(R.styleable.CwjView_city,"
);
mUniversity=a.getString(R.styleable.CwjView_university,"
a.recycle();
//Android123提示大家不要忘了回收资源
10.
11.}
这样类的全局成员变量mAge、mCity就获取了我们需要的内容,当然根据layout中的数值我们自定义的CwjView需要动态的处理一些数据的情况,可以使用AttributeSet类的getAttributeResourceValue方法获取。
1.publicCwjView(Contextcontext,AttributeSetattrs)
2.{
resId=attrs.getAttributeResourceValue("
"
100);
//resID就可以任意使用了
7.}
以上两种方法中,参数的最后一个数值为默认的,如果您有不明白的地方可以来函到android123@我们会在第一时间回复。
(文/Android开发网)
Android自定义View
2009年10月13日星期二18:
12
在values/attrs.xml中:
MyView"
textColor"
color"
textSize"
dimension"
imgBackground"
textPaddingLeft"
textPaddingTop"
编写MyView.java,继承View
packagetest.cuntomizedview;
importjava.util.Calendar;
importtest.cuntomizedview.R;
importandroid.content.Context;
importandroid.content.res.TypedArray;
importandroid.graphics.Canvas;
importandroid.graphics.Color;
importandroid.graphics.Paint;
importandroid.os.SystemClock;
importandroid.util.AttributeSet;
importandroid.view.View;
publicclassMyViewextendsView
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Android 自定义 View