Android自定义View

来源:互联网 发布:名片制作软件 绿色版 编辑:程序博客网 时间:2024/04/30 17:01

参考:http://blog.csdn.net/guolin_blog/article/details/17357967

分类:自绘控件,组合控件,继承控件

  1. 自绘控件
    自绘控件是在View上所展示的内容全部都是我们自己画出来的,绘画的代码在onDraw()方法中。
public class CustomView extends View implements View.OnClickListener {    private Paint mPaint;    private Rect mBounds;    private int mCount = 0;    public CustomView(Context context, AttributeSet attrs) {        super(context, attrs);        mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);        mBounds = new Rect();        setOnClickListener(this);    }    @Override    protected void onDraw(Canvas canvas) {        super.onDraw(canvas);        mPaint.setColor(Color.BLUE);        canvas.drawRect(0, 0, getWidth(), getHeight(), mPaint);        mPaint.setColor(Color.YELLOW);        mPaint.setTextSize(30);        String text = String.valueOf(mCount);        mPaint.getTextBounds(text, 0, text.length(), mBounds);        float textWidth = mBounds.width();        float textHeight = mBounds.height();        canvas.drawText(text, getWidth() / 2 - textWidth / 2, getHeight() / 2                + textHeight / 2, mPaint);    }    @Override    public void onClick(View v) {        mCount++;        invalidate();//重绘    }}

2.组合控件
组合控件就是将系统的控件组合在一起,创建出来的控件称为组合空间。

public class TitleView extends FrameLayout {      private Button leftButton;      private TextView titleText;      public TitleView(Context context, AttributeSet attrs) {          super(context, attrs);          LayoutInflater.from(context).inflate(R.layout.title, this);          titleText = (TextView) findViewById(R.id.title_text);          leftButton = (Button) findViewById(R.id.button_left);          leftButton.setOnClickListener(new OnClickListener() {              @Override              public void onClick(View v) {                  ((Activity) getContext()).finish();              }          });      }      public void setTitleText(String text) {          titleText.setText(text);      }      public void setLeftButtonText(String text) {          leftButton.setText(text);      }      public void setLeftButtonListener(OnClickListener l) {          leftButton.setOnClickListener(l);      }  }  

3.继承控件

demo下载地址

0 0