创建自定义视图(一)

作者:追风剑情 发布于:2016-5-9 14:38 分类:Android

一、创建自定义View

  1. package com.test.androidtest;
  2.  
  3. import android.content.Context;
  4. import android.graphics.Canvas;
  5. import android.graphics.Paint;
  6. import android.util.AttributeSet;
  7. import android.view.View;
  8.  
  9. public class CrossView extends View {
  10.  
  11. private Paint mPaint;
  12. private float[] mPoints = {0.5f, 0f, 0.5f, 1f,
  13. 0f, 0.5f, 1f, 0.5f};
  14. public CrossView(Context context) {
  15. super(context);
  16. mPaint = new Paint();
  17. mPaint.setAntiAlias(true); //设置抗锯齿
  18. mPaint.setColor(0xFFFFFFFF);//设置画笔颜色
  19. }
  20. public CrossView(Context context, AttributeSet attrs) {
  21. super(context, attrs);
  22. }
  23. public CrossView(Context context, AttributeSet attrs, int defStyle) {
  24. super(context, attrs, defStyle);
  25. }
  26.  
  27. /**
  28. * 所有的在画布上绘图的调用都应当受对应的save()和restore()的约束
  29. */
  30. @Override
  31. public void onDraw(Canvas canvas) {
  32. super.onDraw(canvas);
  33. canvas.save();
  34. //自定义代码
  35. int scale = getWidth();
  36. canvas.scale(scale, scale);
  37. canvas.drawLines(mPoints, mPaint);
  38. //end
  39. canvas.restore();
  40. }
  41. }

 

提示:
视图同样有被其父视图调用的draw方法。这个方法处理基础的绘制步骤,像设置画布以及绘制背景等。你应当避免重写这个方法,而要重写onDraw方法。

二、创建主活动

  1. package com.test.androidtest;
  2.  
  3. import android.app.Activity;
  4. import android.os.Bundle;
  5.  
  6. public class MainActivity extends Activity {
  7.  
  8. private static String TAG = "sgzs";
  9. @Override
  10. protected void onCreate(Bundle savedInstanceState) {
  11. super.onCreate(savedInstanceState);
  12. setContentView(new CrossView(this));
  13. }
  14. }

运行效果

1111111111111.png

 

标签: Android

Powered by emlog  蜀ICP备18021003号-1   sitemap

川公网安备 51019002001593号