开发自定义View

View组件就类似于一个矩形空白区域,刚开始它里面什么都没有,对于android应用的其他UI组件来说,他们都继承了VIew组件,然后在View组件的空白区域上绘制外观.

基于这个原理,开发者可以开发出项目定制的组件,当android系统提供的UI不能满足开发需求时,可以自定义类去继承View类或者View类的相关子类.然后重写View类中的某些方法; 当这个自定义类写完后,可以通过代码把该自定义组件添加到指定容器中

通常情况下,会写一个构造器; 例如定义一个随手指触摸移动的球体

public class DrawCircle extends View {

    public float startx=30;
    public float starty=40;
    public DrawCircle(Context context) {
        super(context);
    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        Paint p = new Paint();
        p.setColor(Color.RED);
        canvas.drawCircle(startx, starty, 15, p);
    }
}
public class MainActivity extends Activity {
    private DrawCircle dc;
    private LinearLayout ll;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        ll = (LinearLayout) findViewById(R.id.ll_root);
        dc = new DrawCircle(this);
        
        //设置自定义组件的宽高
        dc.setMinimumHeight(500);
        dc.setMinimumWidth(300);

        dc.setOnTouchListener(new OnTouchListener() {

            @Override
            public boolean onTouch(View v, MotionEvent event) {
                dc.startx = event.getX();
                dc.starty = event.getY();
                //视图发生变化,进行重绘
                dc.invalidate();
                return true;
            }
        });
        ll.addView(dc);
    }

}

 

 

 

 

 

posted @ 2013-06-16 22:10  半夜点烟  阅读(288)  评论(0)    收藏  举报