博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android UI开发 View自绘控件
阅读量:7071 次
发布时间:2019-06-28

本文共 1014 字,大约阅读时间需要 3 分钟。

本文来自:

      很多时候想要设计漂亮的Android UI,使用Android自带的控件无法满足我们的需要就要考虑自绘控件,在Android界面显示类View,可以通过继承扩展重写相关方法来实现我们的图形绘制。

  首先我们需要了解下View类的底层实现,在SDK中我们可以看到View直接继承于Java的基类Object,实现了图形绘制和按键事件 Drawable.Callback KeyEvent.Callback的相关方法,我们自绘时主要实现其内部的onDraw方法,相关的界面计算可以重写onMeasure方法,对于相关的按键可以重载onKeyDown、onKeyUp以及onTouchEvent等,下面android开发网就以一个实例来表示。
  public class cwjView extends View
  {
  public cwjView(Context context)
  {
  this(context,null);
  }
  public cwjView(Context context,AttributeSet attrs)
  {
  this(context,attrs,0);
  }
  public cwjView(Context context,AttributeSet attrs,int defStyle)
  {
  super(context,attrs,defStyle);
  //这里是本类的构造,相关初始化可以在这里添加代码
  }
  @Override
  protectd void onDraw(Canvas canvas)
  {
  super(canvas);
  //绘图的关键,可以看到已经包含了一个canvas句柄,可以直接通过我们前面讲到的Canvas类进行相关的操作,完整的例子,大家可以参考Android SDK中例子Snake贪食蛇游戏的实现。
  }
  }
  有关View类的更新,我们直接通过调用invalidate(int l,int r,int r,int b)来更新一个Rect矩形区域,或更新全部,同时在线程中我们使用需要调用postInvalidate来更新界面。

原文地址:

转载于:https://www.cnblogs.com/yyq-quan/archive/2011/07/16/2108280.html

你可能感兴趣的文章
php安装redis 和redis扩展
查看>>
Javascript将html转成pdf,下载(html2canvas 和 jsPDF)
查看>>
org.apache.jasper.jasperException
查看>>
详解 ML2 Core Plugin(I) - 每天5分钟玩转 OpenStack(71)
查看>>
week03_python解析式
查看>>
盘点中国未来最具潜力的IT培训学校前5名
查看>>
php5.4.26 安装出现 error: ‘struct gdIOCtx’ has no member named ‘data’
查看>>
java 后端简单分页
查看>>
局域网安全6 ARP***
查看>>
Protostar stack5
查看>>
LeetCode - 100. 相同的树
查看>>
三星s系列和note系列记录
查看>>
[iOS Animation]CALayer-图层时间-CAMediaTiming协议
查看>>
基本数据类型对象包装类
查看>>
阿里巴巴Dubbo实现的源码分析
查看>>
[UWP]用Shape做动画
查看>>
python集合
查看>>
android 获取sim卡运营商信息(转)
查看>>
关于EditText的输入动态监听
查看>>
Maven pom.xml配置详解 (二)
查看>>