乖乖败北

Android 自定义View的使用纪要!!!

      前几天做了个手机UI的任务,虽然没用到,但是集中精力弄了弄自定义View,感觉还是蛮有收获的,特此分享。本文并不全面,网上有许多大牛写好的自定义View的文章,我就不献丑了,本文只是是缺补漏,对一些大牛忽视了的小问题,给大家提个醒,呵呵,方便后来学习的同学。

1:通过Layout/main.XML ! 大牛文章如下:http://weizhulin.blog.51cto.com/1556324/311453.

几个注意的地方:

  1. 一定要重写View的两个构造函数,View共有三个构造函数。一定不要要重写MyView(Context context,AttributeSet attrSet)。否则会出现FC错误。可以在这里给自定义的属性赋默认值,可以通过xml文件修改。
  2. 有一个疑问。不可以给自定义的View附件点击事件?!我确信自己的程序没有错误。我给自定义View附加点击监听后,却在手机中无法响应。而TextView就可以。
  3. 不可以使用自定义的构造函数。就算定义了,使用起来也是无效的。举例:mView = new MyView(this,mRect);mRect(Rect)并不会被真正使用。

2:通过加载View或者通过LinearLayout加载View。

1 ll = new LinearLayout(this.getBaseContext());   
2 ll.setOrientation(LinearLayout.VERTICAL);
3 LinearLayout.LayoutParams lp1 = new LinearLayout.LayoutParams(
4 LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
5 lp1.weight = 1;
6 ll.addView(mView, lp1);
7 setContentView(ll);

几个注意的地方:

  1. 通过setContView(mView);也可以。但是如果程序中有了LinearLayout则必须使用Linearlayout。
  2. 通过这种方法实现的自定义View可以使用自定义的构造函数。mView = new MyView(this,mRect);可以使用了。
  3. 无法实现自定义属性。即AttributeSet无效。
  4. 可以给自定义View附加点击监听,而且有效!

总结,可以不难看出,两种方法各有优缺点,所以采用何种方式比较好,要看具体情况,具体分析了。

一些编程上的经验总结:

  1. 修改程序的时候不能乱修改。要学会分析,改之前多问自己几个为什么,要由针对性。
  2. 可以通过Graphical Layout来检查XML文件是否有除语法之外的其他错误。也可以对界面进行一定的预览。
  3. 代码修改的时候,尤其是上下移动的时候,要注意是否有逻辑错误,典型的就是先使用后赋值。
  4. 随时给新定义的变量赋初始值是个好习惯。

posted on 2011-08-02 10:17  乖乖败北  阅读(786)  评论(0)    收藏  举报

导航