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. java 抓取百度根据关键词搜索域名

    package baidusearch; import com.sun.glass.ui.SystemClipboard; import java.util.*; import java.util.H ...

  2. shell编程的一些例子1

    1.$0-$9及$# $@的使用 demo_arg 内容 #!/bin/bash echo "程序名:$0" echo "命令传递参数个数:$#" echo & ...

  3. norflash移植及uboot 保存环境变量实验

    一.实验环境 实验板:TQ2440开发板 SDRAM:64M norflash:EN29LV160AB(2M) nandflash:(256M) 二.移植 本文不详谈从smdk2410移植到TQ244 ...

  4. vs2015安装没有wim32

    刚开始在官网上下载VS2015没在意太多,选择了默认安装,结果是没有win64的,所以就不能写c代码.默认安装很多库都没有,所以要什么都得下载.转载一篇文章

  5. Hust 1231 Coin

    题目链接 题意: 亮亮有N个有瑕疵的硬币,有瑕疵意味着抛一枚硬币正面向上的概率 不等于 反面向上的概率 也即概率不等于0.5. 现在亮亮一次抛N个硬币 , 恰好有K个硬币正面向上 ,接着他又想抛一次 ...

  6. A simple brute force problem.

    hdu4971:http://acm.hdu.edu.cn/showproblem.php?pid=4971 题意:给你n个项目,每完成一个项目会有一定的收益,但是为了完成某个项目,要先学会一些技能, ...

  7. 【UVA1416】(LA4080) Warfare And Logistics (单源最短路)

    题目: Sample Input4 6 10001 3 21 4 42 1 32 3 33 4 14 2 2Sample Output28 38 题意: 给出n个节点m条无向边的图,每条边权都为正.令 ...

  8. Error creating bean with name 'bookDao'

    “Error creating bean with name 'bookDao' defined in ServletContext resource [/WEB-INF/applicationCon ...

  9. python装饰器之使用情景分析

    http://blog.csdn.net/yueguanghaidao/article/details/10089181

  10. VARCHAR2字段关联

    SQL> create table a1(id int,name varchar2(10)); Table created. SQL> create table a2(id int,nam ...