Android 自定义 View 的使用

0
Android Java XML C/C++ 30279 次浏览
Android教程中自定义View的学习,对于初学着来说,他们习惯了Android传统的页面布局方式,如下代码:
<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns: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> 
当然上面的布局方式可以帮助我们完成简单应用的开发了,但是如果你想写一个复杂的应用,这样就有点牵强了,大家不信可以下源码都研究看看,高手写的布局方式,如上面的布局高手通常是这样写的:
<?xml version="1.0" encoding="utf-8"?> 
<A> 
  <B></B> 
</A>
其中A extends LinerLayout, B extends TextView. 

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

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

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

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 extends View { 
  private Paint mPaint; 
  private Context mContext; 
  private static final String mString = "Welcome to Mr Wei's blog"; 

  public MyView(Context context) { 
    super(context); 
  } 
  public MyView(Context context,AttributeSet attr) 
  { 
    super(context,attr); 
  } 
  @Override 
  protected void onDraw(Canvas canvas) { 
  // TODO Auto-generated method stub 
    super.onDraw(canvas); 
    mPaint = new Paint(); 
  //设置画笔颜色 
    mPaint.setColor(Color.RED); 
  //设置填充 
    mPaint.setStyle(Style.FILL); 
  //画一个矩形,前俩个是矩形左上角坐标,后面俩个是右下角坐标 
    canvas.drawRect(new Rect(10, 10, 100, 100), mPaint); 
    mPaint.setColor(Color.BLUE); 
  //绘制文字 
    canvas.drawText(mString, 10, 110, mPaint); 
  } 
} 
然后将我们自定义的View加入到main.xml布局文件中,代码如下:
<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns: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 的使用

请尽量让自己的答案能够对别人有帮助

7个答案

默认排序 按投票排序