Android中的View组件的作用类似于Swing编程中的Panel。对于Android应用的其它UI组件来说,它们都继承自View组件。基于Android UI组件的实现原理,开发者完全可以通过继承View来派生自定义组件

       下面以一个实例来说明如何开发自定义的UI组件:

实例:跟随手指的小球——开发自定义的UI组件,这个组件将会在指定位置绘制一个小球,这个位置可以动态改变。当用户通过手指在屏幕上拖动时,程序监听到这个手指事件,并把手指动作的位置传入自定义UI组件,并通知该组件重绘。

 

public class DrawView extends View {private float currentX=40;private float currentY=50;      //定义并创建画笔Paint p=new Paint();    public DrawView(Context context) {super(context);}public DrawView(Context context,AttributeSet set) {super(context,set);}@Overrideprotected void onDraw(Canvas canvas){          //设置画笔的颜色          p.setColor(Color.RED);          //绘制圆    canvas.drawCircle(currentX,currentY,15,p);}@Overridepublic boolean onTouchEvent(MotionEvent event) {          //获得(更新)位置坐标    this.currentX=event.getX();    this.currentY=event.getY();    //通知当前组件重绘    this.invalidate();    return true;}}

 

Activity类中,我们把该组件添加到指定容器中。

 

public class MainActivity extends Activity {    private LinearLayout layout=null;    private DrawView draw=null;    @Override    protected void onCreate(Bundle savedInstanceState)     {        super.onCreate(savedInstanceState);  super.setContentView(R.layout.activity_main);        //获取LinearLayout容器        this.layout=(LinearLayout) super.findViewById(R.id.layout);        //创建DrawView组件     this.draw=new DrawView(this);        //设置组件相关属性       draw.setMinimumWidth(300);  draw.setMinimumHeight(500);   this.layout.addView(draw);    }}


 

       当然,为了在手机屏幕上显示出自定义的DrawView组件,我们也可以不在Activity类中动态添加,而是选择XML布局文件中添加该组件(实际上更推荐这种方法)。

    <nku.jerry.demo.DrawView         android:layout_width="match_parent"        android:layout_height="match_parent" />   


        注意,XML文件中DrawView的路径要写完整,否则会提示找不到该组件。

 

            此时,Activity程序中只需如下代码即可:

public class MainActivity extends Activity {    @Override    protected void onCreate(Bundle savedInstanceState)     {        super.onCreate(savedInstanceState);  super.setContentView(R.layout.activity_main);    }}


 

更多相关文章

  1. 【Android的从零单排开发日记】之入门篇(十一)——Android的Intent
  2. Android周学习Step By Step(5)--常用widget组件
  3. Android省市区三级联动滚轮选择(真实项目中提取出来的组件)
  4. 深度探索Android应用程序的基本原理
  5. 《Android/OPhone 开发完全讲义》样章和目录下载
  6. Android应用程序四大组件
  7. [Android官方API阅读]___
  8. Android(安卓)里的Intent是什么意思
  9. Android(安卓)组件化架构概要

随机推荐

  1. 在c语言中,一条简单语句的结束符为什么?
  2. 逻辑运算符两侧运算对象的数据类型是什么
  3. strcat函数的作用是什么?
  4. c语言中数组的下标从什么开始?
  5. C语言“fread”函数的用法?
  6. c语言中实现循环结构的控制语句有哪些?
  7. c语言getch()的用法是什么?
  8. c语言的标识符只能由哪三种字符组成?
  9. C语言中用户标识符的命名规则是什么
  10. C语言中 gets 和 getchar 区别?