天天看点

android中如何使用自定义view,自定义控件属性,及动态自定义控件

如何自定义View  

好处:特殊的效果,满足个性的需求

流程:

1) 创建一个类,继承View或它的子类

2) 添加构造方法

  一个参数:在代码中创建对象

  两个参数:在布局文件中使用  

3) 重写onDraw()方法           一个矩形区域,画布Canvas  画笔Paint

  设置画笔属性

       // 创建画笔

       Paint paint = new Paint();

       paint.setColor(Color.RED);

       paint.setAntiAlias(true);

       paint.setTextSize(30);

4) 使用canvas绘制

  例如:canvas.rotate(90);

        canvas.drawText("VerticalTextView", 20, 0, paint);

如何使用自定义控件

在布局文件中拖拽自定义控件

自定义控件属性的步骤:

1) 在values目录中创建attrs.xml

  (从ApiDemos中拷贝)

2) 定义属性

  例如:  

   <declare-styleable name="VerticalTextView">

       <attr name="content" format="string" />

3) 在自定义控件代码中读取布局中配置的属性,进行设置

  参考ApiDemos中的LabelView  

使用自定义属性:

1) 在布局文件中添加自定义控件的命名空间

  例如: xmlns:yuchen="http://schemas.android.com/apk/res/org.yuchen.templete"  

2) 配置属性,例如:yuchen:content="sdf"

动态:

1) 修改重新绘制的内容

2) 触发系统重新调用onDraw()方法

  调用invalidate()方法

  例如:

       // 动态自定义控件

       postDelayed(new Runnable()

       {

           @Override

           public void run()

           {

               text = new Date().toLocaleString();

               invalidate();

               postDelayed(this, 1000);

           }

       }, 1000);

运行效果如下:(动态生成)

代码如下: