3.Android中自定义View的应用

来源:互联网 发布:mac dock自动隐藏 编辑:程序博客网 时间:2024/05/16 04:59

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


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

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


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

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

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

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


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
package com.android.tutor;
 
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Rect;
import android.graphics.Paint.Style;
import android.util.AttributeSet;
import android.view.View;
 
public class MyView extendsView {
    privatePaint mPaint;
    privateContext mContext;
    privatestatic final String mString = "Welcome to Mr Wei's blog";
     
    publicMyView(Context context) {
        super(context);
    }
     
    publicMyView(Context context,AttributeSet attr) {
        super(context,attr);
    }
     
    @Override
    protectedvoid onDraw(Canvas canvas) {
        // TODO Auto-generated method stub
        super.onDraw(canvas);
         
        mPaint =new Paint();
         
        //设置画笔颜色
        mPaint.setColor(Color.RED);
         
        //设置填充
        mPaint.setStyle(Style.FILL);
         
        //画一个矩形,前俩个是矩形左上角坐标,后面俩个是右下角坐标
        canvas.drawRect(newRect(10,10, 100,100), mPaint);
         
        mPaint.setColor(Color.BLUE);
        //绘制文字
        canvas.drawText(mString,10, 110, mPaint);
    }
}

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


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

最后执行,效果如下图:

Android-View


原创粉丝点击