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();
  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的方法

上一篇:AtCoder Grand Contest 032 A - Limited Insertion( 思维)


下一篇:linux 使用kill命令杀死进程的几个办法