Android开 发中,在Activity中关联视图View是一般使用setContentView方法,该方法一种参数是使用XML资源直接创 建:setContentView (int layoutResID),指定layout中的一个XML的ID即可,这种方法简单。另一个方法是 setContentView(android.view.View),参数是指定一个视图View对象,这种方法可以使用自定义的视图类。

在一些场合中,需要对View进行一些定制处理,比如获取到Canvas进行图像绘制,需要重载View::onDraw方法,这时需要对View
进行派生一个类,重载所需要的方法,然后使用setContentView(android.view.View)与Activity进行关联,具体代码
举例如下:

  1. public class temp extends Activity {
  2. /** 在Activity中关联视图view */
  3. @Override
  4. public void onCreate(Bundle savedInstanceState) {
  5. super.onCreate(savedInstanceState);
  6. setContentView(new DrawView(this));
  7. }
  8. /*自定义类*/
  9. private class DrawView extends View {
  10. private Paint paint;
  11. /**
  12. * Constructor
  13. */
  14. public DrawView(Context context) {
  15. super(context);
  16. paint = new Paint();
  17. // set's the paint's colour
  18. paint.setColor(Color.GREEN);
  19. // set's paint's text size
  20. paint.setTextSize();
  21. // smooth's out the edges of what is being drawn
  22. paint.setAntiAlias(true);
  23. }
  24. protected void onDraw(Canvas canvas) {
  25. super.onDraw(canvas);
  26. canvas.drawText(, , paint);
  27. // if the view is visible onDraw will be called at some point in the
  28. // future
  29. invalidate();
  30. }
  31. }
  32. }

第二个例子,动态绘图

  1. public class MyAndroidProjectActivity extends Activity {
  2. /** Called when the activity is first created. */
  3. /*
  4. public void onCreate(Bundle savedInstanceState) {
  5. super.onCreate(savedInstanceState);
  6. setContentView(R.layout.main);
  7. }*/
  8. ;
  9. /** Called when the activity is first created. */
  10. @Override
  11. public void onCreate(Bundle savedInstanceState) {
  12. super.onCreate(savedInstanceState);
  13. setContentView(new DrawView(this));
  14. }
  15. private class DrawView extends View {
  16. Paint vPaint = new Paint();
  17. ;
  18. public DrawView(Context context) {
  19. super(context);
  20. }
  21. protected void onDraw(Canvas canvas) {
  22. super.onDraw(canvas);
  23. System.out.println("this run " + (times++) +" times!");
  24. // 设定绘图样式
  25. vPaint.setColor( 0xff00ffff ); //画笔颜色
  26. vPaint.setAntiAlias( true );   //反锯齿
  27. vPaint.setStyle( Paint.Style.STROKE );
  28. // 绘制一个弧形
  29. canvas.drawArc(, , , ), , i, true, vPaint );
  30. // 弧形角度
  31. ) >  )
  32. i = ;
  33. // 重绘, 再一次执行onDraw 程序
  34. invalidate();
  35. }
  36. }
  37. }

Android编程动态创建视图View的方法的更多相关文章

  1. android 代码动态创建视图

    LinearLayout 如何动态设置 margin? LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LinearLayou ...

  2. android2.3 View视图框架源码分析之一:android是如何创建一个view的?

    View是所有控件的一个基类,无论是布局(Layout),还是控件(Widget)都是继承自View类.只不过layout是一个特殊的view,它里面创建一个view的数组可以包含其他的view而已. ...

  3. ViewContainerRef 动态创建视图

    Angular DOM 操作 相关的APIs和类: 查询DOM节点 template variable ref: 模版变量引用,相当于react中的ref ViewChild: 查询DOM,返回单个元 ...

  4. Oracle创建视图view权限不足问题剖析

    问题: 使用USER1等其他用户登录Oracle以后,创建视图,提示"权限不够",怎么解决? 这是因为USER1这个帐户目前没有创建视图的权限. 解决方法为: 首先使用system ...

  5. [转]android:动态创建多个按钮 及 批量设置监听

    之前投机取巧,先创建好多个按钮,再根据需要的数量进行部分隐藏,不过还是逃不过呀. 这样根本无法批量地 findId,批量地 设置监听. 所以今天还是认认真真地研究回“动态创建按钮”,终于,通过不断尝试 ...

  6. oracle创建视图(view)

    视图:是基于一个表或多个表或视图的逻辑表,本身不包含数据,通过它可以对表里面的数据进行查询和修改.视图基于的表称为基表,Oracle的数据库对象分为五种:表,视图,序列,索引和同义词. 视图是存储在数 ...

  7. 动态创建TeeChart的简便方法

    最近在项目中使用Teechart ocx版本替换了labview的老版本控件,显示效果和效率均有提高,但是却遇到多线程下报access violation的问题. 翻遍大小论坛,最后在官网论坛找到相同 ...

  8. C#反射动态创建实例并调用方法

    在.Net 中,程序集(Assembly)中保存了元数据(MetaData)信息,因此就可以通过分析元数据来获取程序集中的内容,比如类,方法,属性等,这大大方便了在运行时去动态创建实例. MSDN解释 ...

  9. jQuery中动态创建、添加元素的方法总结

    <input type="button" value="创建元素" id="btn"> <div id="box ...

随机推荐

  1. .Net C/S系统开发框架(楚楚原创)

    C/S系统开发框架-企业版 V4.0 (Enterprise Edition) 简介: http://www.csframework.com/cs-framework-4.0.htm 视频下载: 百度 ...

  2. 实用lsof常用命令行

    1, 使用 lsof 命令行列出所有打开的文件 # lsof 这可是一个很长的列表,包括打开的文件和网络 上述屏幕截图中包含很多列,例如 PID.user.FD 和 TYPE 等等. FD - Fil ...

  3. iOS: 学习笔记, 值与引用类型(译自: https://developer.apple.com/swift/blog/ Aug 15, 2014 Value and Reference Types)

    值和引用类型 Value and Reference Types 在Swift中,有两种数据类型. 一是"值类型"(value type), 它是每一个实例都保存有各自的数据,通常 ...

  4. UI设计网站参考

    1. https://dribbble.com/colors/6A969A 2. 设计师网站导航:http://hao.uisdc.com/ 3. bootstrap的UI:http://www.bo ...

  5. HTTP-304 NOT Modified

    http://www.douban.com/note/161120791/ http://blog.sina.com.cn/s/blog_4c98b9600100jd4z.html http://ww ...

  6. Palindrome

    poj3974:http://poj.org/problem?id=3974 题意:求给定长度最长回文串的长度. 题解:直接套manacher,搞定. #include<iostream> ...

  7. 14.8.2 Role of the .frm File for InnoDB Tables InnoDB 表得到 .frm文件的作用

    14.8.2 Role of the .frm File for InnoDB Tables InnoDB 表得到 .frm文件的作用 Vsftp:/data01/mysql/zjzc# ls -lt ...

  8. 大数A-B

    还没写过大数减法,今天比赛还WA了两次... #include<iostream> #include<string> using namespace std; void sub ...

  9. BZOJ1135: [POI2009]Lyz

    1135: [POI2009]Lyz Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 264  Solved: 106[Submit][Status] ...

  10. 重装VS2010时出现未能正确加载 "radlangsvc.package,radlangsvc.vs...

    解决办法: 开始-->所有程序--Microsoft visual studio2010-->visual studio tools-->visual studio 2010命令提示 ...