Android编程动态创建视图View的方法

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(25);

  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("Hello World", 5, 30, 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. static int times = 1;
  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. private int i = 0;

  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(new RectF(60, 120, 260, 320), 0, i, true, vPaint );
  30. // 弧形角度

  31. if( (i+=10) > 360 )

  32. i = 0;
  33. // 重绘, 再一次执行onDraw 程序

  34. invalidate();

  35. }

  36. }
  37. }

Android编程动态创建视图View的方法,布布扣,bubuko.com

时间: 2024-12-29 07:12:54

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

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

View是所有控件的一个基类,无论是布局(Layout),还是控件(Widget)都是继承自View类.只不过layout是一个特殊的view,它里面创建一个view的数组可以包含其他的view而已. 这一篇文章把所有的layout和widget都统称为view,那么android是如何创建一个view的呢? 一.在代码中直接new出来. 比如说你要创建一个TextView的实例,那么你可以这样写: Java代码   TextView text = new TextView(c);  //c为c

C#在运行时动态创建类型的实现方法

本文实例讲述了C#在运行时动态创建类型的实现方法.是C#项目开发中很实用的技巧.分享给大家供大家参考.具体分析如下: 具体来说, C# 在运行时动态的创建类型是通过动态生成C#源代码,然后通过编译器编译成程序集的方式实现动态创建类型的 . 主要功能代码如下: public static Assembly NewAssembly() { //创建编译器实例. provider = new CSharpCodeProvider(); //设置编译参数. cp = new CompilerParame

OC中动态创建可变数组的问题.有一个数组,数组中有13个元素,先将该数组进行分组,每3个元素为一组,分为若干组,最后用一个数组统一管理这些分组.(要动态创建数组).两种方法

<span style="font-size:24px;">//////第一种方法 // NSMutableArray *arr = [NSMutableArray array]; // for (int i = 0; i < 13; i ++) { // [arr addObject:[NSString stringWithFormat:@"lanou%d",i + 1]]; // } // NSLog(@"%@",arr);

ViewContainerRef 动态创建视图

Angular DOM 操作 相关的APIs和类: 查询DOM节点 template variable ref: 模版变量引用,相当于react中的ref ViewChild: 查询DOM,返回单个元素引用 ViewChildren: 返回一个QueryList对象,包含一系列元素 ElementRef: 元素引用 查询的方式获取,比如 @ViewChild('myInput') inputElm: ElementRef 依赖注入的方式,获取宿主元素,比如 constructor(private

利用反射动态创建实例并调用方法

在.Net 中,程序集(Assembly)中保存了元数据(MetaData)信息,因此就可以通过分析元数据来获取程序集中的内容,比如类,方法,属性等,这大大方便了在运行时去动态创建实例. 主要用途: 动态加载DLL,实现插件机制. 实例化DLL中的类型. 执行后期绑定,访问在运行时创建的类型的方法. 首先,新建一个空白解决方案:DllSolution 向解决方案中添加一个类库:RefDll,这将是需要被动态创建的程序集 重命名默认新建的Class1类:Student,这个类将是需要动态创建的类.

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

<input type="button" value="创建元素" id="btn"> <div id="box"></div> <p id="main">这是文中一段话</p> //点击按钮,动态创建元素 //方法一:$()创建元素,后用append()方法添加.append() 还可以把其他地方元素添加进这个对象中. $('#btn').cli

mssql instead of 触发器应用一-创建只读视图(view)的方法

转自: http://www.maomao365.com/?p=4906 <span style="color:white;background-color:blue;font-weight:bold;">一.instead of 触发器应用一创建只读视图的方法</span><span style="color:red;font-weight:bold;"> 由于instead of 是代替 表或视图 执行insert updat

SQL 存储过程动态创建视图

CREATE PROCEDURE  CREAR_PF_VIEW  AS BEGIN DECLARE @sql VARCHAR(MAX) SET @sql = 'CREATE VIEW dbo.V_PF AS select * from (select distinct XMBH as XMBH  From YDS_SHPB ) X1 ' DECLARE @uid VARCHAR(MAX) DECLARE @sql_ls VARCHAR(MAX) DECLARE cur CURSOR      

更改Android AVD模拟器创建路径位置的方法

Android AVD模拟器默认路径为c:\user\username\.android\avd.欲将其移植到d盘下.方法为: 1. 建立目录 在D盘下建立Android_sdk_home目录,在其下建立.android子目录(注意前面有个点,假设系统提示请输入文件名称,则将原路径下的目录拷贝过来就可以),再在.android下建立avd目录.即建立了D:\Android_sdk_home\.android\avd 2. 配置环境变量. 打开 计算机->属性->环境变量->系统变量,新建